]>
Commit | Line | Data |
---|---|---|
a0048e66 MT |
1 | #!/usr/bin/python |
2 | ||
3 | from __future__ import division | |
4 | ||
5 | import datetime | |
6 | import textile | |
7 | ||
9068dba1 | 8 | from misc import Object |
a0048e66 | 9 | |
9068dba1 | 10 | class Advertisements(Object): |
a0048e66 | 11 | def get(self, where=None): |
a0048e66 | 12 | query = "SELECT * FROM advertisements \ |
9068dba1 MT |
13 | WHERE NOW() BETWEEN date_start AND date_end AND published = %s" |
14 | args = [True] | |
a0048e66 MT |
15 | |
16 | if where: | |
9068dba1 | 17 | query += " AND location = %s" |
a0048e66 MT |
18 | args.append(where) |
19 | ||
9068dba1 | 20 | query += " ORDER BY RANDOM() LIMIT 1" |
a0048e66 MT |
21 | |
22 | ad = self.db.get(query, *args) | |
23 | if ad: | |
9068dba1 | 24 | return Advert(self.backend, ad.id, ad) |
a0048e66 MT |
25 | |
26 | ||
9068dba1 MT |
27 | class Advert(Object): |
28 | def __init__(self, backend, id, data=None): | |
29 | Object.__init__(self, backend) | |
a0048e66 | 30 | |
9068dba1 | 31 | self.id = id |
a0048e66 MT |
32 | self.__data = data |
33 | ||
a0048e66 MT |
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) |