]>
git.ipfire.org Git - ipfire.org.git/blob - webapp/backend/news.py
dbdffde89b455e5f9510d288161a191226c91ffa
3 from misc
import Object
6 def get(self
, uuid
, locale
=None):
7 res
= self
.db
.get("SELECT * FROM news WHERE uuid = %s \
8 AND published IS NOT NULL AND published <= NOW()", uuid
)
11 res
= self
._translate
_news
_one
(res
, locale
=locale
)
15 def get_by_id(self
, id, locale
=None):
16 res
= self
.db
.get("SELECT * FROM news WHERE id = %s \
17 AND published IS NOT NULL AND published <= NOW()", id)
20 res
= self
._translate
_news
_one
(res
, locale
=locale
)
24 def get_by_slug(self
, slug
, locale
=None):
25 res
= self
.db
.get("SELECT * FROM news WHERE slug = %s \
26 AND published IS NOT NULL AND published <= NOW()", slug
)
31 res
= self
.db
.get("SELECT news_id FROM news_translations WHERE slug = %s", slug
)
33 return self
.get_by_id(res
.news_id
, locale
=locale
)
35 def get_latest(self
, author
=None, locale
=None, limit
=1, offset
=0):
36 query
= "SELECT * FROM news WHERE published IS NOT NULL AND published <= NOW()"
40 query
+= " AND author_id = %s"
43 query
+= " ORDER BY published DESC"
53 news
= self
.db
.query(query
, *args
)
56 news
= self
._translate
_news
(news
, locale
=locale
)
60 def get_by_year(self
, year
, locale
=None):
61 res
= self
.db
.query("SELECT * FROM news \
62 WHERE published IS NOT NULL AND published <= NOW() \
63 AND EXTRACT(YEAR FROM published) = %s ORDER BY published DESC", year
)
66 res
= self
._translate
_news
(res
, locale
=locale
)
70 def _translate_news(self
, news
, locale
):
74 n
= self
._translate
_news
_one
(n
, locale
)
79 def _translate_news_one(self
, news
, locale
):
80 lang
= locale
.code
[:2]
82 res
= self
.db
.get("SELECT * FROM news_translations \
83 WHERE news_id = %s AND lang = %s", news
.id, lang
)
92 query
= self
.db
.query("SELECT DISTINCT EXTRACT(YEAR FROM published)::integer AS year FROM news \
93 WHERE published IS NOT NULL AND published <= NOW() ORDER BY year DESC")
95 return [r
.year
for r
in query
]