def post(self, *args, **kwargs): post_data = self.request.POST pk = session_matches_post_result_form(post_data, self.request) result_form = get_object_or_404(ResultForm, pk=pk) form_in_data_entry_state(result_form) formset, forms_and_candidates = get_formset_and_candidates( result_form, post_data) recon_form = ReconForm(post_data) data_entry_number = get_data_entry_number(result_form.form_state) candidates = result_form.candidates CandidateFormSet = formset_factory(CandidateForm, extra=len(candidates), formset=BaseCandidateFormSet) formset = CandidateFormSet(post_data) if (not result_form.has_recon or recon_form.is_valid()) and formset.is_valid(): check_form = check_state_and_group(result_form, self.request.user, recon_form) if check_form: return self.form_invalid(check_form) entry_version = None new_state = None if result_form.form_state == FormState.DATA_ENTRY_1: entry_version = EntryVersion.DATA_ENTRY_1 new_state = FormState.DATA_ENTRY_2 else: entry_version = EntryVersion.DATA_ENTRY_2 new_state = FormState.CORRECTION for i, form in enumerate(formset.forms): votes = form.cleaned_data['votes'] Result.objects.create(candidate=candidates[i], result_form=result_form, entry_version=entry_version, votes=votes, user=self.request.user) if result_form.has_recon: re_form = recon_form.save(commit=False) re_form.entry_version = entry_version re_form.result_form = result_form re_form.user = self.request.user re_form.save() result_form.form_state = new_state result_form.save() return redirect(self.success_url) else: return self.render_to_response( self.get_context_data( formset=formset, forms_and_candidates=forms_and_candidates, reconciliation_form=recon_form, result_form=result_form, data_entry_number=data_entry_number))
def get(self, *args, **kwargs): pk = self.request.session.get('result_form') result_form = get_object_or_404(ResultForm, pk=pk) form_in_data_entry_state(result_form) formset, forms_and_candidates = get_formset_and_candidates(result_form) reconciliation_form = ReconForm() data_entry_number = get_data_entry_number(result_form.form_state) return self.render_to_response( self.get_context_data(formset=formset, forms_and_candidates=forms_and_candidates, reconciliation_form=reconciliation_form, result_form=result_form, data_entry_number=data_entry_number))
def get(self, *args, **kwargs): pk = self.request.session.get('result_form') result_form = get_object_or_404(ResultForm, pk=pk) form_in_state(result_form, FormState.QUALITY_CONTROL) reconciliation_form = ReconForm(data=model_to_dict( result_form.reconciliationform )) if result_form.reconciliationform else None results_component = results_for_race(result_form, None) results_general = results_for_race(result_form, RaceType.GENERAL) results_women = results_for_race(result_form, RaceType.WOMEN) return self.render_to_response( self.get_context_data(result_form=result_form, reconciliation_form=reconciliation_form, results_component=results_component, results_women=results_women, results_general=results_general))
def recon_form_for_version(results, entry_version): return ReconForm(data=model_to_dict(results.filter( entry_version=entry_version)[0]))
def post(self, *args, **kwargs): post_data = self.request.POST pk = session_matches_post_result_form(post_data, self.request) result_form = get_object_or_404(ResultForm, pk=pk) form_in_data_entry_state(result_form) formset, forms_and_candidates = get_formset_and_candidates(result_form, post_data) recon_form = ReconForm(post_data) data_entry_number = get_data_entry_number(result_form.form_state) candidates = result_form.candidates CandidateFormSet = formset_factory(CandidateForm, extra=len(candidates), formset=BaseCandidateFormSet) formset = CandidateFormSet(post_data) if (not result_form.has_recon or recon_form.is_valid()) and formset.is_valid(): check_form = check_state_and_group( result_form, self.request.user, recon_form) if check_form: return self.form_invalid(check_form) entry_version = None new_state = None if result_form.form_state == FormState.DATA_ENTRY_1: entry_version = EntryVersion.DATA_ENTRY_1 new_state = FormState.DATA_ENTRY_2 else: entry_version = EntryVersion.DATA_ENTRY_2 new_state = FormState.CORRECTION for i, form in enumerate(formset.forms): votes = form.cleaned_data['votes'] Result.objects.create( candidate=candidates[i], result_form=result_form, entry_version=entry_version, votes=votes, user=self.request.user ) if result_form.has_recon: re_form = recon_form.save(commit=False) re_form.entry_version = entry_version re_form.result_form = result_form re_form.user = self.request.user re_form.save() result_form.form_state = new_state result_form.save() return redirect(self.success_url) else: return self.render_to_response(self.get_context_data( formset=formset, forms_and_candidates=forms_and_candidates, reconciliation_form=recon_form, result_form=result_form, data_entry_number=data_entry_number))