class Announcements: def __init__(self, conf, db, locale): self.locale = locale self.conf = conf self.ompdal = OMPDAL(db, conf) self.press_id = int(conf.take('omp.press_id')) self.press_settings = self.ompdal.getPressSettings(self.press_id) def get_status(self): ae = list(filter(lambda e: e['setting_name'] == 'enableAnnouncements', self.press_settings.as_list())) if ae: return ae[0]['setting_value'] else: return [] def get_number(self): nah = list(filter(lambda e: e['setting_name'] == 'numAnnouncementsHomepage', self.press_settings.as_list())) if nah: return int(nah[0]['setting_value']) else: return 6 def create_announcement_list(self): now = datetime.datetime.now() def expires(e): if e['date_expire']: if e['date_expire'] > now : return True else: return False else: return True news = self.ompdal.getAnnouncementsByPress(self.press_id).as_list() news= list(filter(lambda e: expires(e), news)) if news: nl = list(map(lambda e: self.create_announcement(e), news)) del nl[self.get_number():] return nl else: return [] def create_announcement(self, a): n = self.ompdal.getAnnouncementSettings(a['announcement_id']).as_list() t= list(filter(lambda e: e['locale'] == self.locale and e['setting_name'] == 'title', n)) title = t[0]['setting_value'] if t else '' ds = list(filter(lambda e: e['locale'] == self.locale and e['setting_name'] == 'descriptionShort', n)) description_short = ds[0]['setting_value'] if ds else '' div = self.announcement_block(description_short, a, title) return div def announcement_block(self, description_short, a, title): ann = self.ompdal.getAnnouncementTypeSettings(a['type_id']).as_list() t = list(filter(lambda e: e['locale'] == self.locale and e['setting_name'] == 'name', ann)) ann_type = t[0]['setting_value'] if t else self.conf.take('web.application') ann_type = ann_type.replace(' ','_').lower() img_url = URL('static', '{}{}{}'.format('images/press/home/announcements/',ann_type,'.png')) div_img = DIV(IMG(_src=img_url, _style="width: 50px;"), _class="media-left pull-left") posted__date = a['date_posted'].date() div_date = P(posted__date.strftime("%d.%m.%Y "), _class="media-heading") div_heading = H5(XML(title)) div_short_description = DIV(XML(description_short), _class="boxText") div_body = DIV(div_date, div_heading, div_short_description, _class="media-body") div = DIV(div_img, div_body, _class = "media") return div