]> git.ipfire.org Git - ipfire.org.git/blob - src/backend/ads.py
.gitignore: Add .vscode
[ipfire.org.git] / src / backend / ads.py
1 #!/usr/bin/python
2
3 from __future__ import division
4
5 import datetime
6 import textile
7
8 from misc import Object
9
10 class Advertisements(Object):
11 def get(self, where=None):
12 query = "SELECT * FROM advertisements \
13 WHERE NOW() BETWEEN date_start AND date_end AND published = %s"
14 args = [True]
15
16 if where:
17 query += " AND location = %s"
18 args.append(where)
19
20 query += " ORDER BY RANDOM() LIMIT 1"
21
22 ad = self.db.get(query, *args)
23 if ad:
24 return Advert(self.backend, ad.id, ad)
25
26
27 class Advert(Object):
28 def __init__(self, backend, id, data=None):
29 Object.__init__(self, backend)
30
31 self.id = id
32 self.__data = data
33
34 @property
35 def data(self):
36 if self.__data is None:
37 self.__data = self.db.get("SELECT * FROM advertisements WHERE id = %s", self.id)
38 assert self.__data
39
40 return self.__data
41
42 @property
43 def company(self):
44 return self.data.company
45
46 @property
47 def text(self):
48 return self.data.text
49
50 @property
51 def url(self):
52 return self.data.url
53
54 @property
55 def who(self):
56 return """<a href="%s" target="_blank">%s</a>""" % (self.url, self.text or self.company)
57
58 def update_impressions(self):
59 self.db.execute("UPDATE advertisements SET impressions = impressions + 1 WHERE id = %s", self.id)