# -*- python -*- import __main__, dbagg, logging, iso8601, time, dbagg.web class ViewItemsForSourcePage(dbagg.web.AggPage): templateFile = 'view_items_for_source.html.tmpl' def initialize(self, *args, **kwargs): self.log = logging.getLogger("%s"%self.__class__) self.conn = kwargs['conn'] self.sources = kwargs['sources'] self.items = kwargs['items'] def wmfactory_source_id(self, request): return int(request.args.get('source_id', ['1'])[0]) def wmfactory_max_items(self, request): return int(request.args.get('max_items', ['200'])[0]) def wmfactory_offset_items(self, request): return int(request.args.get('offset_items', ['0'])[0]) def wmfactory_since(self, request): return request.args.get('since', [iso8601.ctime(time.time() - (60*60*24*1))])[0] def wmfactory_items_count(self, request): source_id = self.wmfactory_source_id(request) since = self.wmfactory_since(request) cursor = self.conn.cursor() cursor.execute( \ """ SELECT count(*) FROM items WHERE source = %s AND created > %s """, ( source_id, since ) ); count = cursor.fetchone()[0] return count def wmfactory_source(self, request): source_id = self.wmfactory_source_id(request) curr_source = self.sources.get_source(source_id) return dbagg.web.SourceModel(sources=self.sources, \ items=self.items, \ source=curr_source) def wmfactory_items(self, request): source_id = self.wmfactory_source_id(request) max_items = self.wmfactory_max_items(request) offset_items = self.wmfactory_offset_items(request) since = self.wmfactory_since(request) filtered_items = self.items.sql_iter( \ """ SELECT items.* FROM items LEFT JOIN items_meta AS t_hidden ON (t_hidden.item=items.id AND t_hidden.name="hidden") WHERE (source = %s) AND (t_hidden.value IS null OR t_hidden.value='0') AND (created > %s) ORDER BY created DESC LIMIT %s OFFSET %s """, ( source_id, since, max_items, offset_items ) ); item_list = map( lambda x: dbagg.web.ItemModel(item=x, \ sources=self.sources), \ filtered_items) #for curr_item in filtered_items: # item_list.append(\ # dbagg.web.ItemModel(item=curr_item, sources=self.sources)) return item_list ################################################################################ resource = ViewItemsForSourcePage(conn=__main__.conn, \ sources=__main__.sources, \ items=__main__.items)