def execute(self):
        for country in self.country_list:
            country_id = str(country.id)
            if country_id in self.skip_ruleset_map:
                self.skip_rulesets = self.skip_ruleset_map[country_id]
            task = CompareRuleListTask(self.base_env.id, self.compare_env.id,
                                       country.id, self.skip_rulesets)

            # generate mail content
            result_data = fileManager.load_compare_result_file(
                task.compare_hash_key)
            info_builder = CompareReportInfoBuilder(
                result_data, self.mail_content_type_list, self.skip_rulesets)
            content_json = info_builder.get_data()
            html_content = render_to_string('compare_info_mail_content.html',
                                            content_json)

            if content_json[COMPARE_RESULT_HAS_CHANGES]:
                zip_file_path = RulesetComparer.services.report_scheduler.generate_report_mail_attachment(
                    task)
                RulesetComparer.services.report_scheduler.send_report_mail_with_attachment(
                    country.name, self.base_env.name, self.compare_env.name,
                    html_content, self.mail_list, zip_file_path)
            else:
                RulesetComparer.services.report_scheduler.send_report_mail(
                    country.name, self.base_env.name, self.compare_env.name,
                    html_content, self.mail_list)
def ruleset_diff_compare_result(compare_key, ruleset_name):
    result_data = fileManager.load_compare_result_file(compare_key)
    parser = RulesetDiffCompareResultParser(result_data, ruleset_name)
    builder = DiffRulesetPageBuilder(parser.ruleset_name,
                                     parser.source_environment.name,
                                     parser.target_environment.name,
                                     parser.ruleset_diff_data)
    return builder.get_data()
Example #3
0
def run_scheduler_now(json_data, user):
    try:
        scheduler = ReportSchedulerInfo.objects.get(id=json_data.get(KEY_ID))
        country_id_list = scheduler.country_list.values(KEY_ID)
        mail_content_type_list = scheduler.mail_content_type_list.values(
            KEY_ID)

        parser = DBReportSchedulerParser(scheduler, country_id_list,
                                         mail_content_type_list)
        base_env = Environment.objects.get(id=parser.base_env_id)
        compare_env = Environment.objects.get(id=parser.compare_env_id)
        RulesetReportPermissionChecker(user, parser.country_list, base_env.id,
                                       compare_env.id)

        for country in parser.country_list:
            country_id = str(country.id)
            if country_id in parser.skip_ruleset_map:
                skipped_rulesets = parser.skip_ruleset_map[country_id]
            else:
                skipped_rulesets = list()
            task = CompareRuleListTask(base_env.id, compare_env.id, country.id,
                                       skipped_rulesets)

            # generate mail content
            result_data = fileManager.load_compare_result_file(
                task.compare_hash_key)
            info_builder = CompareReportInfoBuilder(
                result_data, parser.mail_content_type_list, skipped_rulesets)
            content_json = info_builder.get_data()
            html_content = render_to_string('compare_info_mail_content.html',
                                            content_json)

            if content_json[COMPARE_RESULT_HAS_CHANGES]:
                zip_file_path = generate_report_mail_attachment(task)
                send_report_mail_with_attachment(country.name, base_env.name,
                                                 compare_env.name,
                                                 html_content,
                                                 parser.mail_list,
                                                 zip_file_path)
            else:
                send_report_mail(country.name, base_env.name, compare_env.name,
                                 html_content, parser.mail_list)
    except Exception as e:
        error_log(e)
        error_log(traceback.format_exc())
 def get_report(self):
     return fileManager.load_compare_result_file(self.compare_hash_key)
def generate_compare_report(compare_key):
    data = fileManager.load_compare_result_file(compare_key)
    template = get_template("compare_result_report.html")
    html = template.render(data)
    fileManager.save_compare_result_html(compare_key, html)
def compare_rule_list_rule_set(base_env_id, compare_env_id, country_id):
    task = CompareRuleListTask(base_env_id, compare_env_id, country_id)
    result_data = fileManager.load_compare_result_file(task.compare_hash_key)
    data = CompareRulesetListPageBuilder(result_data).get_data()

    return data