]> git.ipfire.org Git - ipfire.org.git/blobdiff - webapp/handlers_planet.py
Move everything to the root of the repository.
[ipfire.org.git] / webapp / handlers_planet.py
diff --git a/webapp/handlers_planet.py b/webapp/handlers_planet.py
new file mode 100644 (file)
index 0000000..dcd82ec
--- /dev/null
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+
+import tornado.web
+
+from handlers_base import *
+
+import backend
+
+from backend.databases import Databases
+
+class PlanetBaseHandler(BaseHandler):
+       @property
+       def db(self):
+               return Databases().webapp
+
+       @property
+       def planet(self):
+               return backend.Planet()
+
+
+class PlanetMainHandler(PlanetBaseHandler):
+       rss_url = "/rss"
+
+       def get(self):
+               offset = int(self.get_argument("offset", 0))
+               limit = int(self.get_argument("limit", 4))
+
+               entries = self.planet.get_entries(offset=offset, limit=limit)
+
+               self.render("planet-main.html", entries=entries,
+                       authors=self.planet.get_authors(),
+                       offset=offset + limit, limit=limit)
+
+
+class PlanetUserHandler(PlanetBaseHandler):
+       def get(self, author):
+               author = self.accounts.search(author)
+               if not author:
+                       raise tornado.web.HTTPError(404, "User is unknown")
+
+               offset = int(self.get_argument("offset", 0))
+               limit = int(self.get_argument("limit", 4))
+
+               entries = self.planet.get_entries_by_author(author.uid,
+                       offset=offset, limit=limit)
+
+               self.render("planet-user.html", author=author, entries=entries,
+                       offset=offset + limit, limit=limit, rss_url="/user/%s/rss" % author.uid)
+
+
+class PlanetPostingHandler(PlanetBaseHandler):
+       def get(self, slug):
+               entry = self.planet.get_entry_by_slug(slug)
+
+               if not entry:
+                       raise tornado.web.HTTPError(404)
+
+               self.render("planet-posting.html",
+                       author=entry.author, entry=entry)