From 9ea335d68f998fd36e344deec2bf8959a813e6c1 Mon Sep 17 00:00:00 2001 From: kououken Date: Wed, 20 Feb 2019 17:05:36 -0800 Subject: [PATCH] Fixed bugs in rules returning strings. --- back/backend/models.py | 1 + back/backend/policy.py | 6 +++--- back/backend/views.py | 10 ++++++---- back/db.sqlite3 | Bin 105472 -> 105472 bytes 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/back/backend/models.py b/back/backend/models.py index 7859a08..69db8ee 100644 --- a/back/backend/models.py +++ b/back/backend/models.py @@ -79,6 +79,7 @@ class Field(models.Model): return "{}".format(self.data_string) elif self.field_type == "integer": return "{}".format(self.data_integer) + return "Invalid type" def get_datatype(self): """ diff --git a/back/backend/policy.py b/back/backend/policy.py index 2674cc7..df95286 100644 --- a/back/backend/policy.py +++ b/back/backend/policy.py @@ -70,13 +70,13 @@ general_section = Section( title="General Info", html_description="

Each section of this report is designed to guide you through the reimbursement process. Please read through each and answer as many questions as you can that apply to you.

Be sure to click 'Save' after completing each section. Your entered data will be saved as you progress. You may also receive feedback from sections regarding policy restrictions and special requirements.

", fields={ - "before_trip": {"number": 0, "label": "Have you taken this trip already?", "field_type": "boolean"}, + "after_trip": {"number": 0, "label": "Have you taken this trip already?", "field_type": "boolean"}, } ) general_section.add_rule( title="Pre-trip / post-trip check", - rule=lambda report, fields: None if fields['before_trip'] else "If you have already take the trip your request will require special approval by the administrator. You may skip the following 'Pre-trip Planning' section." + rule=lambda report, fields: "If you have already take the trip your request will require special approval by the administrator. You may skip the following 'Pre-trip Planning' section." if fields['after_trip'] else None ) pol.add_section(general_section) @@ -193,7 +193,7 @@ lodging_section = Section( "cost": {"number": 1, "label": "Total cost for lodging", "field_type": "decimal"}, "check_in_date": {"number": 2, "label": "Check-in date", "field_type": "date"}, "check_out_date": {"number": 3, "label": "Check-out date", "field_type": "date"}, - "invoice_screenshot": {"number": 4, "label": "Screenshot of invoice", "field_type": "screenshot"}, + "invoice_screenshot": {"number": 4, "label": "Screenshot of invoice", "field_type": "file"}, } ) diff --git a/back/backend/views.py b/back/backend/views.py index 1216bee..bd4a9ec 100644 --- a/back/backend/views.py +++ b/back/backend/views.py @@ -53,10 +53,11 @@ def get_sections(r_id): for rule in rules: try: named_fields = generate_named_fields_for_section(data['fields']) - if not rule['rule'](data, named_fields): + result = rule['rule'](data, named_fields) + if not result is None: info = { "label": rule['title'], - "rule_break_text": rule['rule_break_text'], + "rule_break_text": result, } data['rule_violations'].append(info) except Exception as e: @@ -342,10 +343,11 @@ def section(request, report_pk, section_pk): for rule in rules: try: named_fields = generate_named_fields_for_section(data['fields']) - if not rule['rule'](data, named_fields): + result = rule['rule'](data, named_fields) + if not result is None: info = { "label": rule['title'], - "rule_break_text": rule['rule_break_text'], + "rule_break_text": result, } data['rule_violations'].append(info) except Exception as e: diff --git a/back/db.sqlite3 b/back/db.sqlite3 index d3fa2278ce91b3a2bb1f2be0c6d40086c9436469..b0936b92192c4608e786589b5bcca9f75278d50c 100644 GIT binary patch delta 8425 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 delta 6735 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 Yu))Q~?uBcgay3Jy`v9cGkKnENKQ-m_fdBvi