def receiveData(datasource, items): if datasource.get('charts'): keyname = 'chartses' else: keyname = 'sites' _saveDatasource(datasource, items, keyname) class DataReceiver(datareceiver.BasicDataReceiver): def __init__(self, name): datareceiver.BasicDataReceiver.__init__(self, name) def onData(self, datasource, items): receiveData(datasource, items) datareceiver.registerReceiver(DataReceiver('Source Now Receiver')) def _saveDatasource(datasource, items, keyname): datasources = cmapi.getItemValue(keyname, [], modelname=LatestItem) days = globalconfig.getDatasourceDays() strStart = dateutil.getHoursAs14(days * 24) datasources = [child for child in datasources if child['source']['added'] >= strStart] data = { 'source': datasource, 'pages': items, } foundIndex = -1
cmapi.registerModel(DatasourceHistory) def receiveData(datasource, items): if not datasource.get('charts'): _saveDatasourceHistory(datasource, items) class DataReceiver(datareceiver.BasicDataReceiver): def __init__(self, name): datareceiver.BasicDataReceiver.__init__(self, name) def onData(self, datasource, items): receiveData(datasource, items) datareceiver.registerReceiver(DataReceiver('Source History Receiver')) def _getDatasourceHistoryKey(slug): return slug def _saveDatasourceHistory(datasource, items): _MAX_COUNT = 20 slug = datasource['slug'] value = getDatasourceHistory(slug) value['source'] = datasource pages = value.get('pages', []) for item in reversed(items): if item['added'] == datasource['added']: pages.insert(0, item) pages = pages[:_MAX_COUNT] value['pages'] = pages