]> git.ipfire.org Git - ipfire.org.git/blame - webapp/backend/ads.py
Major update of the webapp.
[ipfire.org.git] / webapp / backend / ads.py
CommitLineData
a0048e66
MT
1#!/usr/bin/python
2
3from __future__ import division
4
5import datetime
6import textile
7
9068dba1 8from misc import Object
a0048e66 9
9068dba1 10class 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
27class 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)