Fix population of initial venue values for EC/PT

This commit is contained in:
2023-05-20 16:25:48 +01:00
parent 020b08f9b0
commit aff911493f
3 changed files with 25 additions and 24 deletions

View File

@@ -190,15 +190,11 @@ class EventRiskAssessmentForm(forms.ModelForm):
class EventChecklistForm(forms.ModelForm): class EventChecklistForm(forms.ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*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' self.fields['date'].widget.format = '%Y-%m-%d'
for name, field in self.fields.items(): for name, field in self.fields.items():
if field.__class__ == forms.NullBooleanField: if field.__class__ == forms.NullBooleanField:
# Only display yes/no to user, the 'none' is only ever set in the background # Only display yes/no to user, the 'none' is only ever set in the background
field.widget = forms.CheckboxInput() field.widget = forms.CheckboxInput()
# Parsed from incoming form data by clean, then saved into models when the form is saved
items = {}
related_models = { related_models = {
'venue': models.Venue, 'venue': models.Venue,
@@ -213,15 +209,16 @@ class EventChecklistForm(forms.ModelForm):
class PowerTestRecordForm(forms.ModelForm): class PowerTestRecordForm(forms.ModelForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*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(): for name, field in self.fields.items():
if field.__class__ == forms.NullBooleanField: if field.__class__ == forms.NullBooleanField:
# Only display yes/no to user, the 'none' is only ever set in the background # Only display yes/no to user, the 'none' is only ever set in the background
field.widget = forms.CheckboxInput() field.widget = forms.CheckboxInput()
related_models = {
'venue': models.Venue,
'power_mic': models.Profile,
}
class Meta: class Meta:
model = models.PowerTestRecord model = models.PowerTestRecord
fields = '__all__' fields = '__all__'

View File

@@ -209,7 +209,7 @@
<div class="col-sm-9 col-md-7 col-lg-8"> <div class="col-sm-9 col-md-7 col-lg-8">
<select id="{{ form.venue.id_for_label }}" name="{{ form.venue.name }}" class="selectpicker" data-live-search="true" data-sourceurl="{% url 'api_secure' model='venue' %}"> <select id="{{ form.venue.id_for_label }}" name="{{ form.venue.name }}" class="selectpicker" data-live-search="true" data-sourceurl="{% url 'api_secure' model='venue' %}">
{% if venue %} {% if venue %}
<option value="{{form.venue.value}}" selected="selected" data-update_url="{% url 'venue_update' form.venue.value %}">{{ venue }}</option> <option value="{{venue.value}}" selected="selected" data-update_url="{% url 'venue_update' venue.value %}">{{ venue }}</option>
{% endif %} {% endif %}
</select> </select>
</div> </div>

View File

@@ -13,19 +13,12 @@ from django.shortcuts import redirect
class HSCreateView(generic.CreateView): 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): def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
epk = self.kwargs.get('pk') event = models.Event.objects.get(pk=self.kwargs.get('pk'))
event = models.Event.objects.get(pk=epk)
context['event'] = event context['event'] = event
context['page_title'] = f'Create {self.model.__name__} for Event {event.display_id}' context['page_title'] = f'Create {self.model.__name__} for Event {event.display_id}'
get_related(context['form'], context)
return context return context
@@ -43,7 +36,6 @@ class MarkReviewed(generic.RedirectView):
class EventRiskAssessmentCreate(HSCreateView): class EventRiskAssessmentCreate(HSCreateView):
model = models.RiskAssessment model = models.RiskAssessment
template_name = 'hs/risk_assessment_form.html' template_name = 'hs/risk_assessment_form.html'
form_class = forms.EventRiskAssessmentForm
def get(self, *args, **kwargs): def get(self, *args, **kwargs):
epk = kwargs.get('pk') epk = kwargs.get('pk')
@@ -55,6 +47,8 @@ class EventRiskAssessmentCreate(HSCreateView):
if ra is not None: if ra is not None:
return HttpResponseRedirect(reverse('ra_edit', kwargs={'pk': ra.pk})) return HttpResponseRedirect(reverse('ra_edit', kwargs={'pk': ra.pk}))
form = forms.EventRiskAssessmentForm(initial={'venue': "66"})
return super(EventRiskAssessmentCreate, self).get(self) return super(EventRiskAssessmentCreate, self).get(self)
def get_success_url(self): def get_success_url(self):
@@ -136,19 +130,22 @@ class EventChecklistCreate(HSCreateView):
def get(self, *args, **kwargs): def get(self, *args, **kwargs):
epk = kwargs.get('pk') epk = kwargs.get('pk')
event = models.Event.objects.get(pk=epk) event = models.Event.objects.get(pk=epk)
# Check if RA exists # Check if RA exists
ra = models.RiskAssessment.objects.filter(event=event).first() ra = models.RiskAssessment.objects.filter(event=event).first()
if ra is None: 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.') 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 HttpResponseRedirect(reverse('event_ra', kwargs={'pk': epk}))
return super().get(self)
return super(EventChecklistCreate, self).get(self)
def get_success_url(self): def get_success_url(self):
return reverse('ec_detail', kwargs={'pk': self.object.pk}) 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): class PowerTestDetail(generic.DetailView):
model = models.PowerTestRecord model = models.PowerTestRecord
@@ -191,7 +188,6 @@ class PowerTestCreate(HSCreateView):
def get(self, *args, **kwargs): def get(self, *args, **kwargs):
epk = kwargs.get('pk') epk = kwargs.get('pk')
event = models.Event.objects.get(pk=epk) event = models.Event.objects.get(pk=epk)
# Check if RA exists # Check if RA exists
ra = models.RiskAssessment.objects.filter(event=event).first() ra = models.RiskAssessment.objects.filter(event=event).first()
@@ -204,6 +200,14 @@ class PowerTestCreate(HSCreateView):
def get_success_url(self): def get_success_url(self):
return reverse('pt_detail', kwargs={'pk': self.object.pk}) 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): class HSList(generic.ListView):
paginate_by = 20 paginate_by = 20