Fixed policy file spacing.

This commit is contained in:
kououken 2019-01-29 16:56:56 -08:00
parent a70d9aa6bc
commit 875641fbe4

View file

@ -1,263 +1,132 @@
# simple_policy.py # simple_policy.py
from datetime import date from datetime import date
from policy import Policy, Section from policy import Policy, Section
# - For the rules, should one refer to fields by 'section.fields.x' # - For the rules, should one refer to fields by 'section.fields.x'
# or by the section name eg. 'general_section.fields.x'? # or by the section name eg. 'general_section.fields.x'?
#### General #### General
#### Section 0 #### Section 0
general_section = Section( general_section = Section(
title="General Info", title="General Info",
html_description="", html_description="",
fields={ fields={
"destination": {"label": "Destination City", "type": "string"} "destination": {"label": "Destination City", "type": "string"}
} }
) )
general_section.add_rule( general_section.add_rule(
title="Destination city check", title="Destination city check",
rule=lambda report, section: section.field.destination == "Timbuktu", rule=lambda report, section: section.field.destination == "Timbuktu",
rule_break_text="What did the cowboy say about Tim, his wild horse?" rule_break_text="What did the cowboy say about Tim, his wild horse?"
) )
Policy.add_section(general_section) Policy.add_section(general_section)
#### Flight #### Flight
#### Section 1 #### Section 1
flight_section = Section( flight_section = Section(
title="Flight Info", title="Flight Info",
html_description="<p>Enter flight details here.</p>", html_description="<p>Enter flight details here.</p>",
fields={ fields={
"international": {"label": "Is this an international flight?", "type": "boolean"}, "international": {"label": "Is this an international flight?", "type": "boolean"},
"departure_date": {"label": "Departure date", "type": "date"}, "departure_date": {"label": "Departure date", "type": "date"},
"return_date": {"label": "Return date", "type": "date"}, "return_date": {"label": "Return date", "type": "date"},
"fare": {"label": "Fare", "type": "decimal"}, "fare": {"label": "Fare", "type": "decimal"},
} }
) )
flight_section.add_rule( flight_section.add_rule(
title="Airline fare pre-approval check", title="Airline fare pre-approval check",
rule=lambda report, section: section.fields.fare < 500, rule=lambda report, section: section.fields.fare < 500,
rule_break_text="Fares cannot be more than $500" rule_break_text="Fares cannot be more than $500"
) )
Policy.add_section(flight_section) Policy.add_section(flight_section)
#### Lodging #### Lodging
#### Section 2 #### Section 2
lodging_section = Section( lodging_section = Section(
title="Hotel Info", title="Hotel Info",
html_description="<p>Enter hotel info here.\nPer diem rates can be found at <a href='https://www.gsa.gov/travel/plan-book/per-diem-rates'></a></p>", html_description="<p>Enter hotel info here.\nPer diem rates can be found at <a href='https://www.gsa.gov/travel/plan-book/per-diem-rates'></a></p>",
fields={ fields={
"check-in_date": {"label": "Check-in date", "type": "date"}, "check-in_date": {"label": "Check-in date", "type": "date"},
"check-out_date": {"label": "Check-out date", "type": "date"}, "check-out_date": {"label": "Check-out date", "type": "date"},
"rate": {"label": "Per diem nightly rate", "type": "decimal"}, "rate": {"label": "Per diem nightly rate", "type": "decimal"},
"cost": {"label": "Total Cost", "type": "decimal"} "cost": {"label": "Total Cost", "type": "decimal"}
} }
) )
def nightly_rate_check(report, section): def nightly_rate_check(report, section):
checkin_date = date(section.fields.checkin_date) checkin_date = date(section.fields.checkin_date)
checkout_date = date(section.fields.checkout_date) checkout_date = date(section.fields.checkout_date)
duration = checkout_date - checkin_date duration = checkout_date - checkin_date
return section.fields.cost <= duration * section.fields.rate return section.fields.cost <= duration * section.fields.rate
section.add_rule( section.add_rule(
title="", title="",
rule=nightly_rate_check, rule=nightly_rate_check,
rule_break_text="The average nightly rate cannot be more than the USGSA rate." rule_break_text="The average nightly rate cannot be more than the USGSA rate."
) )
Policy.add_section(lodging_section) Policy.add_section(lodging_section)
#### Local Transportation #### Local Transportation
#### Section 3 #### Section 3
transport_section = Section( transport_section = Section(
title="Local Transportation", title="Local Transportation",
html_description="<p>How much did you spend on local transportation, in total?</p>", html_description="<p>How much did you spend on local transportation, in total?</p>",
fields={ fields={
"duration": {"label": "How many days was your trip?", "type": "decimal"}, "duration": {"label": "How many days was your trip?", "type": "decimal"},
"cost": {"label": "Total cost", "type": "decimal"} "cost": {"label": "Total cost", "type": "decimal"}
} }
) )
transport_section.add_rule( transport_section.add_rule(
title="Total cost check", title="Total cost check",
rule=lambda report, section: section.fields.cost <= section.fields.duration * 10, rule=lambda report, section: section.fields.cost <= section.fields.duration * 10,
rule_break_text="Local transportation costs must be less than $10 per day, on average." rule_break_text="Local transportation costs must be less than $10 per day, on average."
) )
Policy.add_section(transport_section) Policy.add_section(transport_section)
#### Per Diem #### Per Diem
#### Section 4 #### Section 4
per_diem_section = Section( per_diem_section = Section(
title="Per Diem", title="Per Diem",
html_description="<p>Enter info about meals and incidentals here.\nPer diem rates can be found at <a href='https://www.gsa.gov/travel/plan-book/per-diem-rates'></a></p>", html_description="<p>Enter info about meals and incidentals here.\nPer diem rates can be found at <a href='https://www.gsa.gov/travel/plan-book/per-diem-rates'></a></p>",
fields={ fields={
"duration": {"label": "How many days was your trip?", "type": "decimal"}, "duration": {"label": "How many days was your trip?", "type": "decimal"},
"rate": {"label": "What is the per diem rate for your destination?", "type": "decimal"}, "rate": {"label": "What is the per diem rate for your destination?", "type": "decimal"},
"cost": {"label": "Total Cost for meals and incidentals", "type": "decimal"} "cost": {"label": "Total Cost for meals and incidentals", "type": "decimal"}
} }
) )
per_diem_section.add_rule( per_diem_section.add_rule(
title="Per Diem Cost Check", title="Per Diem Cost Check",
rule=lambda report, section: section.fields.cost <= section.fields.duration * section.fields.rate, rule=lambda report, section: section.fields.cost <= section.fields.duration * section.fields.rate,
rule_break_text="The average cost per day for per diem expenses cannot be more than the rate specified by the USGSA." rule_break_text="The average cost per day for per diem expenses cannot be more than the rate specified by the USGSA."
) )
Policy.add_section(per_diem_section) Policy.add_section(per_diem_section)
''' '''
Section( Section(
title="", title="",
html_description="<p></p>", html_description="<p></p>",
fields={ fields={
"": {"label": "", "type": ""} "": {"label": "", "type": ""}
} }
) )
section.add_rule( section.add_rule(
title="", title="",
rule=lambda report, section: boolean_statement, rule=lambda report, section: boolean_statement,
rule_break_text="" rule_break_text=""
) )
#// or, for a rule which doesnt apply to a specific section... #// or, for a rule which doesnt apply to a specific section...
#// #//
#// add_general_rule(...) #// add_general_rule(...)
''' '''