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