예제 #1
0
    def get_report(self):
        if not self.task or not self.firm:
            return False
        if not self.type or not self.type['meta']:
            return False
        if not self.interval or not self.interval['meta'] or not self.interval['search']:
            return False

        report = Report()
        report.firm_id = self.firm.id
        report.period = self.interval['meta']
        report.person_id = self.get_person_id()

        report_query_name = "%s_query" % self.type['meta']
        if report_query_name not in Report.__dict__:
            return False

        return getattr(report, report_query_name)(self.interval['search']).all()
예제 #2
0
    def get_interval_dict(self):
        result = {}
        if not self.task:
            return None

        result['meta'] = ReportStack().get_interval_meta(self.task.interval)
        result['templ_name'] = ReportStack().get_sender_interval_name(
            self.task.interval)
        result['date'] = datetime.now() - timedelta(1)
        result['search'] = date_helper.get_date_interval(
            result['date'], result['meta'])

        full_format = '%Y-%m-%d %H:%M:%S'
        simple_format = '%Y-%m-%d'
        if self.task.interval == ReportStack.INTERVAL_ONCE:
            details = self.task.details
            if details and 'period' in details:
                details = self.task.decode_field(details)
                interval = details['period']
                try:
                    result['search'] = (
                        date_helper.to_utc(
                            datetime.strptime(interval['start'], full_format), app.config['TZ']),
                        date_helper.to_utc(
                            datetime.strptime(interval['end'], full_format), app.config['TZ']))
                except:
                    result['search'] = (
                        date_helper.to_utc(
                            datetime.strptime(interval['start'], simple_format), app.config['TZ']),
                        date_helper.to_utc(
                            datetime.strptime(interval['end'], simple_format), app.config['TZ']))

                result['date'] = result['search']

        report = Report()
        report.period = result['meta']
        result['templ_interval'] = report.format_search_date(result['date'])

        return result