def is_published(self):
return self.status == "published"
- def increase_view_counter(self):
- self.db.execute("UPDATE planet SET views = views + 1 WHERE id = %s", self.id)
+ def count_view(self, referer=None, location=None):
+ self.db.execute("INSERT INTO planet_views(post_id, referer, location) \
+ VALUES(%s, %s, %s)", self.id, referer, location)
class Planet(Object):
return [PlanetEntry(self.backend, e) for e in entries]
+ def get_hot_entries(self, days=30, limit=8):
+ entries = self.db.query("WITH hottest AS (SELECT post_id, COUNT(post_id) AS count \
+ FROM planet_views WHERE \"when\" >= NOW() - INTERVAL '%s days' \
+ GROUP BY post_id ORDER BY count DESC) SELECT * FROM planet \
+ LEFT JOIN hottest ON planet.id = hottest.post_id \
+ WHERE hottest.count IS NOT NULL \
+ ORDER BY hottest.count DESC LIMIT %s",
+ days, limit)
+
+ return [PlanetEntry(self.backend, e) for e in entries]
+
def render(self, text, limit=0):
if limit and len(text) >= limit:
text = text[:limit] + "..."