]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blame - webapp/backend/news.py
Major update of the webapp.
[people/shoehn/ipfire.org.git] / webapp / backend / news.py
CommitLineData
940227cb
MT
1#!/usr/bin/python
2
9068dba1 3from misc import Object
940227cb 4
9068dba1 5class News(Object):
940227cb 6 def get(self, uuid, lang="en"):
9068dba1
MT
7 return self.db.get("SELECT * FROM news WHERE uuid = %s AND lang = %s \
8 AND published IS NOT NULL AND published <= NOW()", uuid, lang)
940227cb
MT
9
10 def get_by_slug(self, slug):
9068dba1
MT
11 return self.db.get("SELECT * FROM news WHERE slug = %s \
12 AND published IS NOT NULL AND published <= NOW()", slug)
940227cb
MT
13
14 def get_latest(self, author=None, locale=None, limit=1, offset=0):
9068dba1
MT
15 query = "SELECT * FROM news WHERE published IS NOT NULL AND published <= NOW()"
16 args = []
940227cb
MT
17
18 if author:
9068dba1
MT
19 query += " AND author_id = %s"
20 args.append(author)
940227cb
MT
21
22 if locale:
9068dba1
MT
23 query += " AND lang = %s"
24 args.append(locale.code[:2])
940227cb 25
9068dba1 26 query += " ORDER BY published DESC"
940227cb
MT
27
28 if limit:
9068dba1
MT
29 query += " LIMIT %s"
30 args.append(limit)
940227cb 31
9068dba1
MT
32 if offset:
33 query += " OFFSET %s"
34 args.append(offset)
940227cb 35
9068dba1 36 return self.db.query(query, *args)
940227cb 37
7771acea 38 def get_by_year(self, year, locale=None):
9068dba1
MT
39 query = "SELECT * FROM news WHERE published IS NOT NULL AND published <= NOW() \
40 AND EXTRACT(YEAR FROM published) = %s"
7771acea
MT
41 args = [year,]
42
43 if locale:
44 query += " AND lang = %s"
45 args.append(locale.code[:2])
46
9068dba1 47 query += " ORDER BY published DESC"
7771acea
MT
48
49 return self.db.query(query, *args)
50
51 @property
52 def years(self):
9068dba1
MT
53 query = self.db.query("SELECT DISTINCT EXTRACT(YEAR FROM published)::integer AS year FROM news \
54 WHERE published IS NOT NULL AND published <= NOW() ORDER BY year DESC")
940227cb 55
9068dba1 56 return [r.year for r in query]