]> git.ipfire.org Git - ipfire.org.git/blob - www/webapp/backend/news.py
Import of new website.
[ipfire.org.git] / www / webapp / backend / news.py
1 #!/usr/bin/python
2
3 from databases import Databases
4 from misc import Singleton
5
6 class News(object):
7 __metaclass__ = Singleton
8
9 @property
10 def db(self):
11 return Databases().webapp
12
13 def list(self):
14 return [i.uuid for i in self.db.query("SELECT DISTINCT uuid FROM news ORDER BY date")]
15
16 def get(self, uuid, lang="en"):
17 return self.db.get("SELECT * FROM news WHERE uuid=%s AND lang=%s",
18 uuid, lang)
19
20 def get_by_slug(self, slug):
21 return self.db.get("SELECT * FROM news WHERE slug=%s", slug)
22
23 def get_latest(self, author=None, locale=None, limit=1, offset=0):
24 # XXX find a better way to do offset
25
26 if offset:
27 limit += offset
28
29 query = "SELECT * FROM news WHERE published='Y'"
30
31 if author:
32 query += " AND author_id='%s'" % author
33
34 if locale:
35 query += " AND lang='%s'" % locale.code[:2]
36
37 query += " ORDER BY date DESC"
38
39 if limit:
40 query += " LIMIT %d" % limit
41
42 news = self.db.query(query)
43
44 # XXX can the database do this?
45 if offset:
46 news = news[offset:]
47
48 return news
49
50 if __name__ == "__main__":
51 n = News()
52
53 print n.list()
54 print n.get_latest()