From 60dba60417e9eeebf464e6663c813b610ac005ae Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Fri, 22 May 2009 15:49:24 -0400 Subject: [PATCH] List top posters and top teams, instead of just listing all feeds. Also show how many posts each of them have. --- generator.py | 16 ++++++++++++---- planethtml.py | 9 +++++---- template/index.tmpl | 16 +++++++++++++--- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/generator.py b/generator.py index 6a1f91e..2a82fa2 100755 --- a/generator.py +++ b/generator.py @@ -34,7 +34,8 @@ class Generator: char_encoding='utf8', ) self.items = [] - self.feeds = [] + self.topposters = [] + self.topteams = [] self.staticfiles = ['policy','add'] settings.configure( @@ -76,9 +77,15 @@ class Generator: description=desc)) self.items.append(PlanetPost(post[0], post[1], post[2], post[3], post[5], post[6], desc, post[8], post[9])) - c.execute("SELECT name,blogurl,feedurl FROM planet.feeds WHERE approved ORDER BY name") + c.execute("SELECT name,blogurl,feedurl,count(*) FROM planet.feeds INNER JOIN planet.posts ON planet.feeds.id=planet.posts.feed WHERE age(dat) < '1 month' AND team IS NULL GROUP BY name,blogurl,feedurl") for feed in c.fetchall(): - self.feeds.append(PlanetFeed(feed[0], feed[1], feed[2])) + self.topposters.append(PlanetFeed(feed)) + if len(self.topposters) < 2: self.topposters = [] + + c.execute("SELECT teams.name,teams.teamurl,NULL,count(*) FROM planet.teams INNER JOIN planet.feeds ON planet.feeds.team=planet.teams.id INNER JOIN planet.posts ON planet.feeds.id=planet.posts.feed WHERE age(dat) < '1 month' GROUP BY teams.name,teams.teamurl") + for feed in c.fetchall(): + self.topteams.append(PlanetFeed(feed)) + if len(self.topteams) < 2: self.topteams = [] rss.write_xml(open("www/rss20.xml","w"), encoding='utf-8') rssshort.write_xml(open("www/rss20_short.xml","w"), encoding='utf-8') @@ -91,7 +98,8 @@ class Generator: tmpl = get_template(templatename) f = open(outputname, "w") f.write(tmpl.render(Context({ - 'feeds': self.feeds, + 'topposters': self.topposters, + 'topteams': self.topteams, 'posts': self.items, })).encode('utf-8')) f.close() diff --git a/planethtml.py b/planethtml.py index 3bbeefa..3ba6002 100644 --- a/planethtml.py +++ b/planethtml.py @@ -52,10 +52,11 @@ class PlanetPost: title = property(_get_title) class PlanetFeed: - def __init__(self,name,blogurl,feedurl): - self.name = name - self._blogurl = blogurl - self._feedurl = feedurl + def __init__(self,row): + self.name = row[0] + self._blogurl = row[1] + self._feedurl = row[2] + self.numposts = row[3] def _get_blogurl(self): return quoteurl(self._blogurl) diff --git a/template/index.tmpl b/template/index.tmpl index 9a2f226..83d95ed 100644 --- a/template/index.tmpl +++ b/template/index.tmpl @@ -1,12 +1,22 @@ {% extends "base.tmpl" %} {% block content %}
-
Subscriptions
+{% if topposters %} +
Top posters
+{% endif %} +{% if topteams %} +
Top teams
+ +{% endif %}
Feeds