Ejemplo n.º 1
0
 def create_model(self, form):
     logging.error("Creating model")
     report_saver = ReportFormSaver(form)
     form_submitted = report_saver.extract_report_data_into_airflow(
         report_exists=False)
     if form_submitted:
         return self
Ejemplo n.º 2
0
 def setup_class(cls):
     """
     Extract report_form_sample into airflow variable.
     """
     with patch("rb_status_plugin.core.report_form_saver.flash"):
         print("Creating airflow variable...")
         report_saver = ReportFormSaver(cls.report_form_sample)
         report_saver.extract_report_data_into_airflow(report_exists=False)
Ejemplo n.º 3
0
 def test_invalid_email(self):
     """
     Test that errors are thrown with an invalid email.
     """
     invalid_email = "not an email"
     with pytest.raises(Exception) as context:
         ReportFormSaver.validate_email(ReportFormSaver, invalid_email)
         assert (f"Email ({invalid_email}) is not valid."
                 "Please enter a valid email address.") in str(
                     context.exception)
Ejemplo n.º 4
0
 def form_post(self, report_title):
     form = self.form.refresh()
     report_saver = ReportFormSaver(form)
     form_submitted = report_saver.extract_report_data_into_airflow(
         report_exists=True)
     # post process form
     if form_submitted:
         flash(self.message, "info")
         return redirect(url_for("ReportsView.list", filename="reports"))
     else:
         return self.this_form_get(report_title)
Ejemplo n.º 5
0
    def test_duplicate_report(self):
        """
        Test that two reports can't be created with same name.
        """
        duplicate_report = copy.deepcopy(self.report_form_sample_duplicate)
        with pytest.raises(Exception) as context:
            report_saver = ReportFormSaver(duplicate_report)
            report_saver.extract_report_data_into_airflow(report_exists=False)

            assert (
                "Error: report_id (rb_status_test report title) already taken."
                in str(context.exception))
Ejemplo n.º 6
0
 def form_post(self):
     form = self.form.refresh()
     report_saver = ReportFormSaver(form)
     form_submitted = report_saver.extract_report_data_into_airflow(
         report_exists=False)
     # post process form
     if form_submitted:
         flash(self.message, "info")
         if request.args.get("next"):
             return redirect(url_for(request.args.get("next")))
         return redirect(url_for("ReportsView.list"))
     else:
         return self.this_form_get()
Ejemplo n.º 7
0
    def test_editing_report(self):
        """
        Test that report can be edited.
        """
        updated_report = copy.deepcopy(self.report_form_sample_duplicate)
        report_airflow_variable = Variable.get(
            "rb_status_" + self.report_form_sample_duplicate.report_title.data,
            deserialize_json=True,
        )
        report_saver = ReportFormSaver(updated_report)
        report_saver.extract_report_data_into_airflow(report_exists=True)

        assert (updated_report.schedule_custom.data ==
                report_airflow_variable["schedule"])
Ejemplo n.º 8
0
 def test_valid_email(self):
     """
     Test that no errors are thrown with a correct email.
     """
     valid_email = "*****@*****.**"
     assert ReportFormSaver.validate_email(ReportFormSaver,
                                           valid_email) is None
Ejemplo n.º 9
0
    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
Ejemplo n.º 10
0
    def test_daily_schedule_conversion(self):
        """
        Test that daily schedule is converted properly into cron expression.
        """
        Variable.delete("rb_status_" +
                        self.report_form_sample_daily.report_title.data)
        report_saver = ReportFormSaver(self.report_form_sample_daily)
        report_saver.extract_report_data_into_airflow(report_exists=False)
        report_airflow_variable = Variable.get(
            "rb_status_" + self.report_form_sample_daily.report_title.data,
            deserialize_json=True,
        )

        time = self.report_form_sample_daily.schedule_time.data
        tz = self.report_form_sample_daily.schedule_timezone.data

        before_dt = pendulum.now().in_tz(tz).at(time.hour, time.minute, 0)
        after_dt = before_dt.in_tz("UTC")

        Variable.delete("rb_status_" +
                        self.report_form_sample_daily.report_title.data)
        assert (f"{after_dt.minute} {after_dt.hour} * * *" ==
                report_airflow_variable["schedule"])
Ejemplo n.º 11
0
 def update_model(self, form, model):
     report_saver = ReportFormSaver(form)
     form_submitted = report_saver.extract_report_data_into_airflow(
         report_exists=True)
     if form_submitted:
         return self