]>
Commit | Line | Data |
---|---|---|
940227cb MT |
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() |