def stats(self, since_months=4): stats = StatsQuestioner stats_questioner = stats(DBSession) date_from, date_to = stats.get_month_period(int(since_months)) by_months = stats_questioner.by_complete_period( period=stats.PERIOD_MONTH, date_from=date_from, date_to=date_to ).all() months = stats.extract(by_months, stats.FIELD_DATE) stats_month = stats.extract_stats(query_result=by_months, sources=SOURCES.keys()) flat_month = stats.flat_query_by_y( query_result=by_months, sources=SOURCES.keys(), date_value_callback=lambda date: date.strftime("%Y-%m") ) by_weeks = stats_questioner.by_complete_period(stats.PERIOD_WEEK, date_from=date_from, date_to=date_to).all() weeks = stats.extract(by_weeks, stats.FIELD_DATE) stats_week = stats.extract_stats(query_result=by_weeks, sources=SOURCES.keys()) flat_week = stats.flat_query_by_y( query_result=by_weeks, sources=SOURCES.keys(), date_value_callback=lambda date: date.strftime("%Y-%m-%d") ) return dict( sources=SOURCES, stats_month=stats_month, flat_month=flat_month, stats_week=stats_week, flat_week=flat_week, months=months, weeks=weeks, flat_x_field=stats.FIELDS[stats.FLAT_X_FIELD], flat_y_fields=SOURCES.keys(), sources_labels=[SOURCES[source].label for source in SOURCES], )
def stats(self, since_months=4, *args, **kwargs): stats = StatsQuestioner stats_questioner = stats(DBSession) date_from, date_to = stats.get_month_period(int(since_months)) by_months = stats_questioner.by_complete_period( period=stats.PERIOD_MONTH, date_from=date_from, date_to=date_to, ).all() months = stats.extract(by_months, stats.FIELD_DATE) stats_month = stats.extract_stats(query_result=by_months, sources=SOURCES.keys()) flat_month = stats.flat_query_by_y( query_result=by_months, sources=SOURCES.keys(), date_value_callback=lambda date: date.strftime('%Y-%m')) by_weeks = stats_questioner.by_complete_period( stats.PERIOD_WEEK, date_from=date_from, date_to=date_to, ).all() weeks = stats.extract(by_weeks, stats.FIELD_DATE) stats_week = stats.extract_stats(query_result=by_weeks, sources=SOURCES.keys()) flat_week = stats.flat_query_by_y( query_result=by_weeks, sources=SOURCES.keys(), date_value_callback=lambda date: date.strftime('%Y-%m-%d')) return dict( sources=SOURCES, stats_month=stats_month, flat_month=flat_month, stats_week=stats_week, flat_week=flat_week, months=months, weeks=weeks, flat_x_field=stats.FIELDS[stats.FLAT_X_FIELD], flat_y_fields=SOURCES.keys(), sources_labels=[SOURCES[source].label for source in SOURCES])
def origine_des_annonces_diffusees(self, *args, **kwargs): sources_last_crawl = {} sorted_sources = collections.OrderedDict( sorted(SOURCES.items(), key=lambda x: x[1].label)) for source_name in sorted_sources: try: sources_last_crawl[source_name] = DBSession.query(Log.datetime) \ .filter(Log.source == source_name) \ .order_by(Log.datetime.desc()) \ .limit(1) \ .one()[0] except NoResultFound: sources_last_crawl[source_name] = None return dict(sources=sorted_sources, existing_fields=existing_fields, sources_last_crawl=sources_last_crawl)
def sources(self): sources_last_crawl = {} sorted_sources = collections.OrderedDict(sorted(SOURCES.items(), key=lambda x: x[1].label)) for source_name in sorted_sources: try: sources_last_crawl[source_name] = DBSession.query(Log.datetime) \ .filter(Log.source == source_name) \ .order_by(Log.datetime.desc()) \ .limit(1)\ .one()[0] except NoResultFound: sources_last_crawl[source_name] = None return dict( sources=sorted_sources, existing_fields=existing_fields, sources_last_crawl=sources_last_crawl )