List which members are posting in a team, when a team is listed on
authorMagnus Hagander <magnus@hagander.net>
Mon, 22 Jun 2009 15:02:06 +0000 (17:02 +0200)
committerMagnus Hagander <magnus@hagander.net>
Mon, 22 Jun 2009 15:02:06 +0000 (17:02 +0200)
the toplist.

generator.py
planethtml.py
template/index.tmpl

index 01594f669426941ca41e7465caeddeb3aff3eb29..d5b0927b50ff5cf5cb251b6ae798ff21eed1b4df 100755 (executable)
@@ -77,12 +77,32 @@ 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,count(*) FROM planet.feeds INNER JOIN planet.posts ON planet.feeds.id=planet.posts.feed WHERE age(dat) < '1 month' AND team IS NULL AND approved AND NOT hidden GROUP BY name,blogurl,feedurl ORDER BY 4 DESC,1 LIMIT 20")
+               c.execute("""
+SELECT name,blogurl,feedurl,count(*),NULL,NULL,NULL FROM planet.feeds
+INNER JOIN planet.posts ON planet.feeds.id=planet.posts.feed
+WHERE age(dat) < '1 month' AND team IS NULL AND approved AND NOT hidden GROUP BY name,blogurl,feedurl ORDER BY 4 DESC,1 LIMIT 20
+""")
+
                for feed in c.fetchall():
                        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' AND approved AND NOT hidden GROUP BY teams.name,teams.teamurl ORDER BY 4 DESC,1 LIMIT 10")
+               c.execute("""
+SELECT feedname,blogurl,feedurl,feedcount,teamname,teamurl,teamcount FROM
+  (SELECT team,name AS feedname,blogurl,feedurl,count(*) AS feedcount FROM planet.feeds
+   INNER JOIN planet.posts ON planet.feeds.id=planet.posts.feed
+   WHERE age(dat) < '1 month' AND approved AND NOT hidden GROUP BY team,name,blogurl,feedurl
+  ) AS q_feeds
+ INNER JOIN
+  (SELECT teams.id AS team,teams.name AS teamname,teams.teamurl,count(*) AS teamcount 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' AND approved AND NOT hidden GROUP BY teams.id, teams.name, teams.teamurl ORDER BY 4 DESC,1 LIMIT 10
+  ) AS q_teams
+ON q_feeds.team=q_teams.team
+ORDER BY teamcount DESC, teamname, feedcount DESC, feedname;
+""")
+
                for feed in c.fetchall():
                        self.topteams.append(PlanetFeed(feed))
                if len(self.topteams) < 2: self.topteams = []
index 3ba6002d8f0162c6e894ec6740ae71f12f838e79..5939d1dfdd05ea1df1c16e6d0c710317b950051e 100644 (file)
@@ -57,6 +57,9 @@ class PlanetFeed:
                self._blogurl = row[1]
                self._feedurl = row[2]
                self.numposts = row[3]
+               self.teamname = row[4]
+               self._teamurl = row[5]
+               self.teamcount = row[6]
 
        def _get_blogurl(self):
                return quoteurl(self._blogurl)
@@ -66,3 +69,6 @@ class PlanetFeed:
                return quoteurl(self._feedurl)
        feedurl = property(_get_feedurl)
 
+       def _get_teamurl(self):
+               return quoteurl(self._teamurl)
+       teamurl = property(_get_teamurl)
index 83d95edc844be5feebb3a565c8cd6f30ac4187d2..bacfcf0639f64cc52a52e3a3d9db58ddc78ac86f 100644 (file)
      <div class="planetRightTitle">Top teams</div>
      <ul>
 {% for feed in topteams %}
-      <li><a href="{{feed.feedurl}}"><img src="img/feed-icon-14x14.png" alt="RSS"/></a> {%if feed.blogurl %}<a href="{{feed.blogurl}}">{{feed.name}}</a>{%else%}{{feed.name}}{%endif%} ({{feed.numposts}})</li>
+ {% ifchanged feed.teamname %}
+ {% if not forloop.first %}
+       </ul>
+      </li>
+ {% endif %}
+      <li><a href="{{feed.teamurl}}">{{feed.teamname}}</a> ({{feed.teamcount}})
+       <ul>
+ {%endifchanged%}
+        <li><a href="{{feed.feedurl}}"><img src="img/feed-icon-14x14.png" alt="RSS"/></a> {%if feed.blogurl %}<a href="{{feed.blogurl}}">{{feed.name}}</a>{%else%}{{feed.name}}{%endif%} ({{feed.numposts}})</li>
 {% endfor %}
+       </ul>
+      </li>
      </ul>
 {% endif %}
      <div class="planetRightTitle">Feeds</div>