def get_list(self, page, sort_field, sort_desc, search, filters, page_size=None): print(VariablesReportRepo.list()[0].subscribers) return None, VariablesReportRepo.list()
def check_unique_field(self, report_exists, field_name): """ Check if field is already exists. :param report_exists: whether the report exists :type report_exists: Boolean :param field_name: name of report attribute :type field_name: String Return boolean on whether entry is unique. """ for report in VariablesReportRepo.list(): # dont check against the report being editted if report_exists: if getattr(report, "report_id") == self.report_dict["report_id"]: continue # alert user that field_name is being used by another report if str(getattr(report, field_name)) == self.report_dict[field_name]: logging.error("Error: %s (%s) already taken." % (field_name, self.report_dict[field_name])) flash("Error: %s (%s) already taken." % (field_name, self.report_dict[field_name])) return False return True
def get_one(self, id): report = VariablesReportRepo.get_report(id) if not report: return None # We want subscribers to be a comma seperated # string in the edit report form report.subscribers = ",".join(report.subscribers) return report
def form_get(self, form, report_title): # !get report by report_title and prefill form with its values requested_report = {} for report in VariablesReportRepo.list(): if str(report.report_title_id) == report_title: requested_report = report if requested_report: form = ReportFormSaver.load_form(form, requested_report) return form return None
def reports_data(self): """ Generate reports data. It retrieves a list of reports, generates summary status and pass it all down to the template """ reports = [] passed = True updated = None logging.info("Loading reports") for report in VariablesReportRepo.list(): try: ri = ReportInstance.get_latest(report) if not updated: updated = ri.updated if updated < ri.updated: updated = ri.updated r = { "id": ri.id, "passed": ri.passed, "updated": self.get_updated(ri.updated), "report_title": report.report_title, "report_title_id": report.report_title_id, "owner_name": report.owner_name, "owner_email": report.owner_email, "description": report.description, "subscribers": report.subscribers, } r["errors"] = ri.errors() if len(r["errors"]) > 0: passed = False reports.append(r) except Exception as e: logging.exception(e) logging.error("Failed to generate report: " + str(e)) flash("Failed to generate report: " + str(e), "error") rbac_val = conf.getboolean("webserver", "rbac") data = { "summary": { "passed": passed, "updated": self.get_updated(updated) }, "reports": reports, "rbac": rbac_val, } return data
def test_parse_variable_name_ci(self): parsed = VariablesReportRepo.parse_variable_name("RB_STATUS_BOB") assert parsed == "BOB"
def test_parse_variable_name(self): parsed = VariablesReportRepo.parse_variable_name("rb_status_bob") assert parsed == "bob"
def test_parse_variable_value_no_json(self): parsed = VariablesReportRepo.parse_variable_val("not_json") assert parsed is None
def test_parse_variable_value(self): parsed = VariablesReportRepo.parse_variable_val(self.dummy_test) assert parsed["tests"] == [ "example_dag.python_print_date_0", "example_dag.python_random_0", ]
) with dag: test_prefix = "test_" start = LatestOnlyOperator(task_id="start_dag") send_email = PythonOperator( task_id="call_email_function", python_callable=report_notify_email, trigger_rule="all_done", op_kwargs={ "report": report, "email_template_location": SINGLE_EMAIL_TEMPLATE, }, provide_context=True, ) for test in report.tests: t1 = StatusSensor( task_id=test_prefix + test, test_dag_id=test.split(".")[0], test_task_id=test.split(".")[1], ) start >> t1 >> send_email return dag report = [] for report in VariablesReportRepo.list(): globals()[report.name] = create_dag(report, default_args)
def test_return_report(self): parsed = json.loads(self.dummy_test) r = VariablesReportRepo.to_report("bob", parsed) self.assertIsInstance(r, Report)
def test_parse_variable_name(self): parsed = VariablesReportRepo.parse_variable_name("rb_status_bob") self.assertEqual(parsed, "bob")
def test_parse_variable_value_no_json(self): parsed = VariablesReportRepo.parse_variable_val("not_json") self.assertIsNone(parsed)
def list(self): return self.render_template("reports.html", content=VariablesReportRepo.list())
def test_parse_variable_name_none(self): parsed = VariablesReportRepo.parse_variable_name("not_correct") assert parsed is None
def test_parse_variable_name_ci(self): parsed = VariablesReportRepo.parse_variable_name("RB_STATUS_BOB") self.assertEqual(parsed, "BOB")
def test_return_report(self): parsed = json.loads(self.dummy_test) r = VariablesReportRepo.to_report("bob", parsed) assert type(r) == Report
def list(self): return self.render("no_rbac/reports.html", content=VariablesReportRepo.list())