def handle_purge(self): """Handles purge option. Removes all data if --all was used or specified --report-type=<id>. """ if self.options['purge']: log.info("Removing data for {0}.".format(self.reports)) for r in self.reports: ToprequestersReport.purge(r) self.print_status() return self.options['purge']
def __cache_report(self, report_type): """Evaluates the report and stores it under correct cache key.""" display_name = ToprequestersReport.display_names[report_type] if ToprequestersReport.is_cached(report_type): if self.options['force']: log.info('Recalculating "{0}" toprequesters report.'.format( display_name)) else: log.info('"{0}" toprequesters still in cache, use --force flag' ' to rebuild anyway.'.format(display_name)) return False else: log.info(('"{0}" toprequesters report missing, recalculating.' ).format(display_name)) start_date = now() start_time = time.time() days = int(self.options['days']) data = ToprequestersReport.REPORT_FUNCTION[report_type](days) elapsed = time.time() - start_time log.info('Toprequesters report "{0}" generated in: {1}s.'.format( display_name, elapsed)) # too often we get no information on the success of caching if not data: log.warning('Data returned by report function is {0}!'.format(data)) else: meta = { 'days': days, 'to': start_date.date(), 'from': (start_date - datetime.timedelta(days=days)).date(), 'start_time': start_date, 'elapsed': elapsed, } ToprequestersReport.store(report_type, data, meta) if not ToprequestersReport.is_cached(report_type): log.warning('Cache error - data could not be fetched!') return True
def top_requesters(request, tab=None): """Crud handles the table rendering.""" try: tab = int(tab) except Exception: pass if tab not in ToprequestersReport.values: messages.warning(request, 'Unknown report type: {0}'.format(tab)) return redirect('graphs_top_requesters', tab=ToprequestersReport.values[0]) ctx = { 'title': 'Top-1000 Recent Requesters', 'tab_enum': ToprequestersReport.display_names, 'active_tab': tab, 'report_meta': ToprequestersReport.get_report_meta(tab), } return direct_to_template(request, 'toprequesters/crud.html', ctx)
def print_status(self): """Shows report availability report.""" log.info("Available report types: \n" + ToprequestersReport.get_available_as_str())