From aff911493f2561767cd617b6438215d18a560451 Mon Sep 17 00:00:00 2001 From: FreneticScribbler Date: Sat, 20 May 2023 16:25:48 +0100 Subject: [PATCH] Fix population of initial venue values for EC/PT --- RIGS/forms.py | 13 +++++-------- RIGS/templates/event_form.html | 2 +- RIGS/views/hs.py | 34 +++++++++++++++++++--------------- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/RIGS/forms.py b/RIGS/forms.py index 17ba4acd..2f548632 100644 --- a/RIGS/forms.py +++ b/RIGS/forms.py @@ -190,15 +190,11 @@ class EventRiskAssessmentForm(forms.ModelForm): class EventChecklistForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if self.instance.event.venue: - self.fields['venue'].initial = self.instance.event.venue self.fields['date'].widget.format = '%Y-%m-%d' for name, field in self.fields.items(): if field.__class__ == forms.NullBooleanField: # Only display yes/no to user, the 'none' is only ever set in the background field.widget = forms.CheckboxInput() - # Parsed from incoming form data by clean, then saved into models when the form is saved - items = {} related_models = { 'venue': models.Venue, @@ -213,15 +209,16 @@ class EventChecklistForm(forms.ModelForm): class PowerTestRecordForm(forms.ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - if self.instance.event.venue: - self.fields['venue'].initial = self.instance.event.venue - if self.instance.event.riskassessment.power_mic: - self.fields['power_mic'].initial = self.instance.event.riskassessment.power_mic for name, field in self.fields.items(): if field.__class__ == forms.NullBooleanField: # Only display yes/no to user, the 'none' is only ever set in the background field.widget = forms.CheckboxInput() + related_models = { + 'venue': models.Venue, + 'power_mic': models.Profile, + } + class Meta: model = models.PowerTestRecord fields = '__all__' diff --git a/RIGS/templates/event_form.html b/RIGS/templates/event_form.html index afa8d5b7..2102b18f 100644 --- a/RIGS/templates/event_form.html +++ b/RIGS/templates/event_form.html @@ -209,7 +209,7 @@
diff --git a/RIGS/views/hs.py b/RIGS/views/hs.py index 9bb0e324..16672780 100644 --- a/RIGS/views/hs.py +++ b/RIGS/views/hs.py @@ -13,19 +13,12 @@ from django.shortcuts import redirect class HSCreateView(generic.CreateView): - def get_form(self, **kwargs): - form = super().get_form(**kwargs) - epk = self.kwargs.get('pk') - event = models.Event.objects.get(pk=epk) - form.instance.event = event - return form - def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - epk = self.kwargs.get('pk') - event = models.Event.objects.get(pk=epk) + event = models.Event.objects.get(pk=self.kwargs.get('pk')) context['event'] = event context['page_title'] = f'Create {self.model.__name__} for Event {event.display_id}' + get_related(context['form'], context) return context @@ -43,7 +36,6 @@ class MarkReviewed(generic.RedirectView): class EventRiskAssessmentCreate(HSCreateView): model = models.RiskAssessment template_name = 'hs/risk_assessment_form.html' - form_class = forms.EventRiskAssessmentForm def get(self, *args, **kwargs): epk = kwargs.get('pk') @@ -55,6 +47,8 @@ class EventRiskAssessmentCreate(HSCreateView): if ra is not None: return HttpResponseRedirect(reverse('ra_edit', kwargs={'pk': ra.pk})) + form = forms.EventRiskAssessmentForm(initial={'venue': "66"}) + return super(EventRiskAssessmentCreate, self).get(self) def get_success_url(self): @@ -136,19 +130,22 @@ class EventChecklistCreate(HSCreateView): def get(self, *args, **kwargs): epk = kwargs.get('pk') event = models.Event.objects.get(pk=epk) - # Check if RA exists ra = models.RiskAssessment.objects.filter(event=event).first() - if ra is None: messages.error(self.request, f'A Risk Assessment must exist prior to creating any Event Checklists for {event}! Please create one now.') return HttpResponseRedirect(reverse('event_ra', kwargs={'pk': epk})) - - return super(EventChecklistCreate, self).get(self) + return super().get(self) def get_success_url(self): return reverse('ec_detail', kwargs={'pk': self.object.pk}) + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + if context['event'].venue: + context['venue'] = context['event'].venue + return context + class PowerTestDetail(generic.DetailView): model = models.PowerTestRecord @@ -191,7 +188,6 @@ class PowerTestCreate(HSCreateView): def get(self, *args, **kwargs): epk = kwargs.get('pk') event = models.Event.objects.get(pk=epk) - # Check if RA exists ra = models.RiskAssessment.objects.filter(event=event).first() @@ -204,6 +200,14 @@ class PowerTestCreate(HSCreateView): def get_success_url(self): return reverse('pt_detail', kwargs={'pk': self.object.pk}) + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + if context['event'].venue: + context['venue'] = context['event'].venue + if context['event'].riskassessment.power_mic: + context['power_mic'] = context['event'].riskassessment.power_mic + return context + class HSList(generic.ListView): paginate_by = 20