Пример #1
0
def report():
    if g.no_anonymous_reporting and g.user.is_anonymous:
        return Response(
            json.dumps(
                [{"msg": "Not logged in or unsufficient privileges."}],
                indent=4 if c3bottles.debug else None
            ),
            mimetype="application/json",
            status=401
        )
    number = request.values.get("number")
    try:
        Report(
            dp=DropPoint.get(number),
            state=request.values.get("state")
        )
    except ValueError as e:
        return Response(
            json.dumps(e.args, indent=4 if c3bottles.debug else None),
            mimetype="application/json",
            status=400
        )
    else:
        db.session.commit()
        return Response(
            DropPoint.get_dp_json(number),
            mimetype="application/json"
        )
Пример #2
0
def report(number=None):
    if number:
        dp = DropPoint.get(number)
    else:
        dp = DropPoint.get(request.values.get("number"))

    if not dp or dp.removed:
        return render_template(
            "error.html",
            heading="Error!",
            text="Drop point not found.",
        )

    state = request.values.get("state")

    if state:
        if g.no_anonymous_reporting and g.user.is_anonymous:
            abort(401)
        from model.report import Report
        try:
            Report(dp=dp, state=state)
        except ValueError as e:
            return render_template(
                "error.html",
                text="Errors occurred while processing your report:",
                errors=[v for d in e.args for v in d.values()])
        else:
            db.session.commit()
            return render_template(
                "success.html",
                heading="Thank you!",
                text="Your report has been received successfully.")
    else:
        return render_template("report.html", dp=dp)
Пример #3
0
 def generate_report(self):
     report = Report()
     projects = self.projects_finder.find_all()
     if len(projects) == 0:
         report.message = NO_PROJECTS_FOUND_MESSAGE
     else:
         for project in projects:
             project_report = self._generate_report_for_project(project)
             if self._any_outdated_requirement(project_report):
                 report.add_project_report(project_report)
     return report
Пример #4
0
    def test_construction_exceptions(self):

        states = Report.states

        dp = DropPoint(1, lat=0, lng=0, level=1)

        with self.assertRaisesRegexp(ValueError, "drop point"):
            Report(None)

        with self.assertRaisesRegexp(ValueError, "state"):
            Report(dp)

        time_in_future = datetime.today() + timedelta(hours=1)

        with self.assertRaisesRegexp(ValueError, "future"):
            Report(dp, time=time_in_future, state=states[0])

        with self.assertRaisesRegexp(ValueError, "not a datetime"):
            Report(dp, time="foo", state=states[0])

        with self.assertRaisesRegexp(ValueError, "state"):
            Report(dp, state="whatever")
Пример #5
0
def get_meeting_report():

    cc = CalendarConnection()
    meetings = cc.meetings
    #  _print_calendar_results_as_json(meetings)

    rep = Report(meetings)

    data = rep.printable_data
    rep.write_report_html(data)
    #  ihm_slack.post_report_to_slack(*data)
    #
    meetings_list = rep.meetings_list
    ihm_db._add_row_to_db(meetings_list)
    ihm_db.write_db_to_csv()
    ihm_db.write_csv_to_json()

    generate_charts(data)
    open_charts_in_browser()
Пример #6
0
    def test_reporting(self):

        states = Report.states

        dp = DropPoint(1, lat=0, lng=0, level=1)

        first_time = datetime.today()
        first_state = states[0]
        first_report = Report(dp, state=first_state, time=first_time)

        db.session.commit()

        self.assertEqual(first_report.time, first_time,
                         "Report creation time not as expected.")

        self.assertEqual(first_report.state, first_state,
                         "Report state not as expected.")

        self.assertEqual(
            dp.reports[0], first_report,
            "First report not first report of associated drop point.")

        self.assertEqual(dp.get_last_report(), first_report,
                         "get_last_report() did not return first report.")

        self.assertEqual(dp.get_last_state(), first_state,
                         "get_last_state() did not return state.")

        self.assertEqual(dp.get_total_report_count(), 1,
                         "get_total_report_count() not as expected.")

        self.assertEqual(dp.get_new_report_count(), 1,
                         "get_new_report_count() not as expected.")

        self.assertEqual(
            dp.get_new_reports()[0], first_report,
            "First element returned by get_new_reports() not the report wanted."
        )

        second_time = datetime.today()
        second_state = states[-1]
        second_report = Report(dp, state=second_state, time=second_time)

        db.session.commit()

        self.assertEqual(second_report.state, second_state,
                         "Report state not as expected.")

        self.assertEqual(
            dp.reports[-1], second_report,
            "Second report not last report of associated drop point.")

        self.assertEqual(dp.get_last_report(), second_report,
                         "get_last_report() did not return second report.")

        self.assertEqual(dp.get_last_state(), second_state,
                         "get_last_state() did not return second state.")

        self.assertEqual(dp.get_total_report_count(), 2,
                         "get_total_report_count() not as expected.")

        self.assertEqual(dp.get_new_report_count(), 2,
                         "get_new_report_count() not as expected.")

        self.assertEqual(
            dp.get_new_reports()[0], second_report,
            "First element returned by get_new_reports() not the report wanted."
        )
Пример #7
0
    def test_construction(self):

        actions = Visit.actions

        dp = DropPoint(1, lat=0, lng=0, level=1)

        first_time = datetime.today()
        first_action = actions[1]
        first_visit = Visit(dp, action=first_action, time=first_time)

        db.session.commit()

        self.assertEqual(
            first_visit.time, first_time,
            "Visit creation time not as expected."
        )

        self.assertEqual(
            first_visit.action, first_action,
            "Visit action not as expected."
        )

        self.assertEqual(
            dp.visits[0], first_visit,
            "First visit not first visit of associated drop point."
        )

        self.assertEqual(
            dp.get_last_visit(), first_visit,
            "get_last_visit() did not return first visit."
        )

        report_time = datetime.today()
        report_state = Report.states[0]
        report = Report(dp, state=report_state, time=report_time)

        second_time = datetime.today()
        second_action = actions[0]
        second_visit = Visit(dp, action=second_action, time=second_time)

        db.session.commit()

        self.assertEqual(
            second_visit.action, second_action,
            "Visit action not as expected."
        )

        self.assertEqual(
            dp.visits[-1], second_visit,
            "Second visit not last visit of associated drop point."
        )

        self.assertEqual(
            dp.get_last_visit(), second_visit,
            "get_last_visit() did not return second visit."
        )

        self.assertNotEqual(
            dp.get_last_state(), report_state,
            "get_last_state() returns unchanged state after visit."
        )

        self.assertEqual(
            dp.get_new_report_count(), 0,
            "get_new_report_count() nonzero after visit."
        )

        self.assertFalse(
            dp.get_new_reports(),
            "get_new_reports() returned something not False after visit."
        )

        self.assertEqual(
            dp.get_last_report(), report,
            "get_last_report() did not return report after visit."
        )

        self.assertEqual(
            dp.get_total_report_count(), 1,
            "get_total_report_count() not as expected after visit."
        )
Пример #8
0
def read():
    data = DataAccess.fetch_all('select * from report', [])
    return jsonify([Report(*a) for a in data])
Пример #9
0
 def report(self, state=None, time=None):
     Report(self, time=time, state=state)