summaryrefslogtreecommitdiffstats
path: root/engagements/forms.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--engagements/forms.py242
1 files changed, 242 insertions, 0 deletions
diff --git a/engagements/forms.py b/engagements/forms.py
new file mode 100644
index 0000000..ae01916
--- /dev/null
+++ b/engagements/forms.py
@@ -0,0 +1,242 @@
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import Field, Fieldset, Layout, Submit
+from django import forms
+from django.forms.widgets import HiddenInput
+
+from .models import Engagement, EngagementEffort
+
+# TODO - need to handle errors correctly in this form and in the template
+
+
+class EngagementEffortReportingCreateForm(forms.ModelForm):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ "This is a form",
+ Field("is_planned"),
+ Field("proposed_start_date", css_class="w3-input w3-border w3-round", type="date"),
+ Field("proposed_end_date", css_class="w3-input w3-border w3-round"),
+ "officers",
+ "notes",
+ ),
+ Submit("submit", "Submit", css_class="w3-button w3-green"),
+ )
+
+ class Meta:
+ model = EngagementEffort
+ fields = [
+ "is_planned",
+ "proposed_start_date",
+ "proposed_end_date",
+ "officers",
+ "notes",
+ ]
+ help_texts = {
+ "is_planned": ("<br><small><em>To distinguish planned events from retrospective recording</em></small>")
+ }
+ widgets = {
+ "proposed_start_date": forms.DateTimeInput(
+ attrs={
+ "class": "w3-input w3-border w3-round",
+ "type": "datetime-local",
+ },
+ format="j M y H:i",
+ ),
+ "proposed_end_date": forms.DateTimeInput(
+ attrs={
+ "class": "w3-input w3-border w3-round",
+ "type": "datetime-local",
+ },
+ format="j M y H:i",
+ ),
+ }
+
+
+class EngagementEffortRegulationCreateForm(forms.ModelForm):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ "This is a form",
+ Field("is_planned"),
+ Field("proposed_start_date", css_class="w3-input w3-border w3-round", type="date"),
+ Field("proposed_end_date", css_class="w3-input w3-border w3-round"),
+ "sub_instruments",
+ "officers",
+ ),
+ Submit("submit", "Submit", css_class="w3-button w3-green"),
+ )
+
+ class Meta:
+ model = EngagementEffort
+ fields = [
+ "is_planned",
+ "proposed_start_date",
+ "proposed_end_date",
+ "officers",
+ "sub_instruments",
+ "notes",
+ ]
+ help_texts = {
+ "is_planned": ("<br><small><em>To distinguish planned events from retrospective recording</em></small>")
+ }
+ widgets = {
+ "proposed_start_date": forms.DateTimeInput(
+ attrs={
+ "class": "w3-input w3-border w3-round",
+ "type": "datetime-local",
+ },
+ format="j M y H:i",
+ ),
+ "proposed_end_date": forms.DateTimeInput(
+ attrs={
+ "class": "w3-input w3-border w3-round",
+ "type": "datetime-local",
+ },
+ format="j M y H:i",
+ ),
+ }
+
+
+class EngagementEffortPlanningCreateForm(forms.ModelForm):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ "This is a form",
+ Field("is_planned"),
+ Field("proposed_start_date", css_class="w3-input w3-border w3-round", type="date"),
+ Field("proposed_end_date", css_class="w3-input w3-border w3-round"),
+ "officers",
+ "notes",
+ ),
+ Submit("submit", "Submit", css_class="w3-button w3-green"),
+ )
+
+ class Meta:
+ model = EngagementEffort
+ fields = [
+ "is_planned",
+ "proposed_start_date",
+ "proposed_end_date",
+ "officers",
+ "notes",
+ ]
+ help_texts = {
+ "is_planned": ("<br><small><em>To distinguish planned events from retrospective recording</em></small>")
+ }
+ widgets = {
+ "proposed_start_date": forms.DateTimeInput(
+ attrs={
+ "class": "w3-input w3-border w3-round",
+ "type": "datetime-local",
+ },
+ format="j M y H:i",
+ ),
+ "proposed_end_date": forms.DateTimeInput(
+ attrs={
+ "class": "w3-input w3-border w3-round",
+ "type": "datetime-local",
+ },
+ format="j M y H:i",
+ ),
+ }
+
+
+class EngagementEffortTravelCreateForm(forms.ModelForm):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.helper = FormHelper()
+ self.helper.layout = Layout(
+ Fieldset(
+ "This is a form",
+ Field("is_planned"),
+ Field("proposed_start_date", css_class="w3-input w3-border w3-round", type="date"),
+ Field("proposed_end_date", css_class="w3-input w3-border w3-round"),
+ "officers",
+ ),
+ Submit("submit", "Submit", css_class="w3-button w3-green"),
+ )
+
+ class Meta:
+ model = EngagementEffort
+ fields = ["is_planned", "proposed_start_date", "proposed_end_date", "officers"]
+ widgets = {
+ "proposed_start_date": forms.DateTimeInput(attrs={"type": "datetime-local"}),
+ "proposed_end_date": forms.DateTimeInput(attrs={"type": "datetime-local"}),
+ }
+
+
+class EngagementEffortCreateForm(forms.ModelForm):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self.fields["engagement"].widget = HiddenInput()
+ self.fields["effort_type"].widget = HiddenInput()
+ if kwargs.get("initial"):
+ if not kwargs["initial"]["effort_type"] == "REGULATION":
+ self.fields["sub_instruments"].widget = HiddenInput()
+
+ class Meta:
+ model = EngagementEffort
+ fields = "__all__"
+ widgets = {
+ "is_planned": forms.Select(
+ choices=(
+ (True, "YES"),
+ (False, "NO"),
+ ),
+ attrs={"class": "w3-border"},
+ ),
+ "proposed_start_date": forms.DateTimeInput(
+ attrs={"class": "w3-input w3-border w3-round", "type": "date"},
+ format="j M y H:i",
+ ),
+ "proposed_end_date": forms.DateTimeInput(
+ attrs={"class": "w3-input w3-border w3-round", "type": "date"},
+ format="j M y H:i",
+ ),
+ "effort_type": forms.Select(attrs={"class": "w3-select w3-border w3-round"}),
+ "officers": forms.SelectMultiple(attrs={"class": "w3-select w3-border w3-round"}),
+ "sub_instruments": forms.SelectMultiple(attrs={"class": "w3-select w3-border w3-round"}),
+ }
+ help_texts = {
+ "proposed_start_date": "<small><em>YYYY-MM-DD HH:MM</em> "
+ "(<strong>Please include time here</strong>)</small>",
+ "proposed_end_date": "<small><em>YYYY-MM-DD HH:MM</em> "
+ "(<strong>Please include time here</strong>)</small>",
+ }
+
+
+class EngagementCreateForm(forms.ModelForm):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ try:
+ self.fields["engagement_type"].queryset = kwargs["initial"]["engagement_type"]
+ except KeyError:
+ pass
+
+ class Meta:
+ model = Engagement
+ fields = [
+ "proposed_start_date",
+ "proposed_end_date",
+ "engagement_type",
+ "officers",
+ ]
+ labels = {
+ "officers": "Inspectors",
+ }
+ help_texts = {
+ "proposed_start_date": "<small><em>YYYY-MM-DD</em></small>",
+ "proposed_end_date": "<small><em>YYYY-MM-DD</em></small>",
+ }
+ widgets = {
+ "proposed_start_date": forms.DateInput(attrs={"class": "w3-input w3-border w3-round", "type": "date"}),
+ "proposed_end_date": forms.DateInput(attrs={"class": "w3-input w3-border w3-round", "type": "date"}),
+ "engagement_type": forms.Select(attrs={"class": "w3-select w3-input w3-border w3-round"}),
+ "officers": forms.SelectMultiple(attrs={"class": "w3-input w3-border w3-round"}),
+ }