def post(self, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] result_form = get_object_or_404(ResultForm, barcode=barcode) possible_states = [ FormState.CORRECTION, FormState.DATA_ENTRY_1, FormState.DATA_ENTRY_2, FormState.INTAKE, FormState.QUALITY_CONTROL, FormState.ARCHIVING, FormState.UNSUBMITTED ] if groups.SUPER_ADMINISTRATOR in groups.user_groups( self.request.user): possible_states.append(FormState.ARCHIVED) form = safe_form_in_state(result_form, possible_states, form) if form: return self.form_invalid(form) self.template_name = 'check_clearance_center_details.html' form_action = reverse(self.success_url) return self.render_to_response( self.get_context_data(result_form=result_form, header_text=_('Create Clearance'), form_action=form_action)) else: return self.form_invalid(form)
def post(self, *args, **kwargs): tally_id = kwargs.get('tally_id') form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] or\ form.cleaned_data['barcode_scan'] result_form = get_object_or_404(ResultForm, barcode=barcode, tally__id=tally_id) possible_states = [ FormState.CORRECTION, FormState.DATA_ENTRY_1, FormState.DATA_ENTRY_2, FormState.INTAKE, FormState.QUALITY_CONTROL, FormState.ARCHIVING, FormState.UNSUBMITTED ] if groups.SUPER_ADMINISTRATOR in groups.user_groups( self.request.user): possible_states.append(FormState.ARCHIVED) form = safe_form_in_state(result_form, possible_states, form) if form: return self.form_invalid(form) self.request.session['result_form'] = result_form.pk return redirect(self.success_url, tally_id=tally_id) else: return self.form_invalid(form)
def post(self, *args, **kwargs): tally_id = kwargs.get('tally_id') form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] result_form = get_object_or_404(ResultForm, barcode=barcode, tally__id=tally_id) possible_states = [FormState.CORRECTION, FormState.DATA_ENTRY_1, FormState.DATA_ENTRY_2, FormState.INTAKE, FormState.QUALITY_CONTROL, FormState.ARCHIVING, FormState.UNSUBMITTED] if groups.SUPER_ADMINISTRATOR in groups.user_groups( self.request.user): possible_states.append(FormState.ARCHIVED) form = safe_form_in_state(result_form, possible_states, form) if form: return self.form_invalid(form) self.request.session['result_form'] = result_form.pk return redirect(self.success_url, tally_id=tally_id) else: return self.form_invalid(form)
def post(self, *args, **kwargs): post_data = self.request.POST form_class = self.get_form_class() center_form = self.get_form(form_class) pk = session_matches_post_result_form(post_data, self.request) result_form = get_object_or_404(ResultForm, pk=pk) form = safe_form_in_state(result_form, FormState.INTAKE, center_form) if form: return self.form_invalid(form) if center_form.is_valid(): center_number = center_form.cleaned_data.get('center_number') station_number = center_form.cleaned_data.get('station_number') center = Center.objects.get(code=center_number) if result_form.intaken(center, station_number): # a form already exists, send to clearance self.request.session['intake-error'] = INTAKEN_MESSAGE result_form.send_to_clearance() return redirect('intake-clearance') else: result_form.center = center result_form.station_number = station_number result_form.save() return redirect(self.success_url) else: return self.render_to_response( self.get_context_data(form=center_form, header_text=_('Intake'), result_form=result_form))
def post(self, *args, **kwargs): tally_id = kwargs.get('tally_id') form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] or\ form.cleaned_data['barcode_scan'] result_form = get_object_or_404(ResultForm, barcode=barcode, tally__id=tally_id) form = safe_form_in_state(result_form, [FormState.QUALITY_CONTROL, FormState.ARCHIVING], form) if form: return self.form_invalid(form) self.request.session['result_form'] = result_form.pk QualityControl.objects.create(result_form=result_form, user=self.request.user.userprofile) return redirect(self.success_url, tally_id=tally_id) else: return self.form_invalid(form)
def post(self, *args, **kwargs): tally_id = kwargs.get('tally_id') form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] or\ form.cleaned_data['barcode_scan'] result_form = get_object_or_404(ResultForm, barcode=barcode, tally__id=tally_id) form = safe_form_in_state( result_form, [FormState.QUALITY_CONTROL, FormState.ARCHIVING], form) if form: return self.form_invalid(form) self.request.session['result_form'] = result_form.pk QualityControl.objects.create(result_form=result_form, user=self.request.user.userprofile) return redirect(self.success_url, tally_id=tally_id) else: return self.form_invalid(form)
def post(self, *args, **kwargs): tally_id = kwargs.get('tally_id') form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] result_form = get_object_or_404(ResultForm, barcode=barcode, tally__id=tally_id) possible_states = [FormState.CORRECTION, FormState.DATA_ENTRY_1, FormState.DATA_ENTRY_2, FormState.INTAKE, FormState.QUALITY_CONTROL, FormState.ARCHIVING, FormState.UNSUBMITTED] if groups.SUPER_ADMINISTRATOR in groups.user_groups( self.request.user): possible_states.append(FormState.ARCHIVED) form = safe_form_in_state(result_form, possible_states, form) if form: return self.form_invalid(form) self.template_name = 'check_clearance_center_details.html' form_action = reverse(self.success_url, kwargs={'tally_id':tally_id}) return self.render_to_response( self.get_context_data(result_form=result_form, header_text=_('Create Clearance'), form_action=form_action, tally_id=tally_id)) else: return self.form_invalid(form)
def post(self, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] result_form = get_object_or_404(ResultForm, barcode=barcode) possible_states = [FormState.CORRECTION, FormState.DATA_ENTRY_1, FormState.DATA_ENTRY_2, FormState.ARCHIVING, FormState.QUALITY_CONTROL] if groups.SUPER_ADMINISTRATOR in groups.user_groups( self.request.user): possible_states.append(FormState.ARCHIVED) form = safe_form_in_state(result_form, possible_states, form) if form: return self.form_invalid(form) result_form.reject(new_state=FormState.AUDIT) result_form.audited_count += 1 result_form.save() Audit.objects.create(result_form=result_form, user=self.request.user) return redirect(self.success_url) else: return self.form_invalid(form)
def post(self, *args, **kwargs): post_data = self.request.POST form_class = self.get_form_class() center_form = self.get_form(form_class) pk = session_matches_post_result_form(post_data, self.request) result_form = get_object_or_404(ResultForm, pk=pk) form = safe_form_in_state(result_form, FormState.INTAKE, center_form) if form: return self.form_invalid(form) if center_form.is_valid(): center_number = center_form.cleaned_data.get('center_number') station_number = center_form.cleaned_data.get('station_number') center = Center.objects.get(code=center_number) if result_form.intaken(center, station_number): # a form already exists, send to clearance self.request.session['intake-error'] = INTAKEN_MESSAGE result_form.send_to_clearance() return redirect('intake-clearance') else: result_form.center = center result_form.station_number = station_number result_form.save() return redirect(self.success_url) else: return self.render_to_response(self.get_context_data( form=center_form, header_text=_('Intake'), result_form=result_form))
def post(self, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] result_form = get_object_or_404(ResultForm, barcode=barcode) possible_states = [ FormState.CORRECTION, FormState.DATA_ENTRY_1, FormState.DATA_ENTRY_2, FormState.INTAKE, FormState.QUALITY_CONTROL, FormState.ARCHIVING, FormState.UNSUBMITTED ] if groups.SUPER_ADMINISTRATOR in groups.user_groups( self.request.user): possible_states.append(FormState.ARCHIVED) form = safe_form_in_state(result_form, possible_states, form) if form: return self.form_invalid(form) result_form.reject(FormState.CLEARANCE) Clearance.objects.create(result_form=result_form, user=self.request.user) return redirect(self.success_url) else: return self.form_invalid(form)
def post(self, *args, **kwargs): post_data = self.request.POST form_class = self.get_form_class() center_form = self.get_form(form_class) pk = session_matches_post_result_form(post_data, self.request) result_form = get_object_or_404(ResultForm, pk=pk) form = safe_form_in_state(result_form, FormState.INTAKE, center_form) if form: return self.form_invalid(form) if center_form.is_valid(): station_number = center_form.cleaned_data.get('station_number') center_number = center_form.cleaned_data.get('center_number') center = Center.objects.get(code=center_number) #Checks if center ballot number and form ballot number are the same general_check = center.sub_constituency and\ result_form.ballot.number != center.sub_constituency.code women_check = center.sub_constituency.ballot_women and\ result_form.ballot.number != center.sub_constituency.\ ballot_women.number if general_check is True and women_check is True: form = add_generic_error(center_form, _(u"Ballot number do not match for" u"center and form")) return self.render_to_response(self.get_context_data( form=form, header_text=_('Intake'), result_form=result_form)) duplicated_forms = result_form.get_duplicated_forms(center, station_number) if duplicated_forms: result_form.station_number = station_number result_form.center = center # a form already exists, send to clearance self.request.session['intake-error'] = INTAKEN_MESSAGE result_form.send_to_clearance() for oneDuplicatedForm in duplicated_forms: if oneDuplicatedForm.form_state != FormState.CLEARANCE: oneDuplicatedForm.send_to_clearance() return redirect('intake-clearance') self.request.session['station_number'] = station_number self.request.session['center_number'] = center_number return redirect(self.success_url) else: return self.render_to_response(self.get_context_data( form=center_form, header_text=_('Intake'), result_form=result_form))
def post(self, *args, **kwargs): self.tally_id = kwargs['tally_id'] form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] or\ form.cleaned_data['barcode_scan'] result_form = get_object_or_404(ResultForm, barcode=barcode, tally__id=self.tally_id) url = self.success_url user = self.request.user possible_states = states_for_form( user, [FormState.INTAKE, FormState.UNSUBMITTED], result_form) if groups.INTAKE_SUPERVISOR in groups.user_groups(user) and\ result_form.form_state == FormState.DATA_ENTRY_1: url = 'intake-printcover' form = safe_form_in_state(result_form, possible_states, form) if form: return self.form_invalid(form) self.request.session['result_form'] = result_form.pk duplicated_forms = result_form.get_duplicated_forms() if duplicated_forms: # a form already exists, send to clearance self.request.session[ 'intake-error'] = INTAKE_DUPLICATE_ERROR_MESSAGE if result_form.form_state != FormState.CLEARANCE: result_form.send_to_clearance() for oneDuplicatedForm in duplicated_forms: if oneDuplicatedForm.form_state != FormState.CLEARANCE: oneDuplicatedForm.send_to_clearance() return redirect('intake-clearance', tally_id=self.tally_id) if result_form.form_state != FormState.DATA_ENTRY_1: result_form.form_state = FormState.INTAKE result_form.duplicate_reviewed = False result_form.user = user.userprofile result_form.save() if result_form.center: return redirect(url, tally_id=self.tally_id) else: return redirect('intake-enter-center', tally_id=self.tally_id) else: return self.form_invalid(form)
def check_state_and_group(result_form, user, form): """Check that the result_form is in the correct state for the user. :param result_form: The result form to check the state of. :param user: The user to check the state for. :param form: A form to add errors to if any exist. :returns: A form with an error the form and user do not match, otherwise None. """ check_state = safe_form_in_state( result_form, [FormState.DATA_ENTRY_1, FormState.DATA_ENTRY_2], form) check_group = check_group_for_state(result_form, user, form) return check_state or check_group
def post(self, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] result_form = get_object_or_404(ResultForm, barcode=barcode) possible_states = states_for_form(self.request.user, result_form) form = safe_form_in_state(result_form, possible_states, form) if form: return self.form_invalid(form) check_quarantine(result_form, self.request.user) self.request.session['result_form'] = result_form.pk return redirect(self.success_url) else: return self.form_invalid(form)
def post(self, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data["barcode"] result_form = get_object_or_404(ResultForm, barcode=barcode) possible_states = states_for_form(self.request.user, result_form) form = safe_form_in_state(result_form, possible_states, form) if form: return self.form_invalid(form) check_quarantine(result_form, self.request.user) self.request.session["result_form"] = result_form.pk return redirect(self.success_url) else: return self.form_invalid(form)
def post(self, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] result_form = get_object_or_404(ResultForm, barcode=barcode) form = safe_form_in_state(result_form, FormState.CORRECTION, form) if form: return self.form_invalid(form) self.request.session['result_form'] = result_form.pk if result_form.corrections_passed: return redirect(self.success_url) else: return redirect('corrections-required') else: return self.form_invalid(form)
def post(self, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] result_form = get_object_or_404(ResultForm, barcode=barcode) form = safe_form_in_state(result_form, FormState.QUALITY_CONTROL, form) if form: return self.form_invalid(form) self.request.session['result_form'] = result_form.pk QualityControl.objects.create(result_form=result_form, user=self.request.user) return redirect(self.success_url) else: return self.form_invalid(form)
def post(self, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] result_form = get_object_or_404(ResultForm, barcode=barcode) url = self.success_url user = self.request.user possible_states = states_for_form( user, [FormState.INTAKE, FormState.UNSUBMITTED], result_form) if groups.INTAKE_SUPERVISOR in groups.user_groups(user) and\ result_form.form_state == FormState.DATA_ENTRY_1: url = 'intake-printcover' form = safe_form_in_state(result_form, possible_states, form) if form: return self.form_invalid(form) if result_form.intaken(): # a form already exists, send to clearance self.request.session['intake-error'] = INTAKEN_MESSAGE result_form.send_to_clearance() return redirect('intake-clearance') if result_form.form_state != FormState.DATA_ENTRY_1: result_form.form_state = FormState.INTAKE result_form.user = user result_form.save() self.request.session['result_form'] = result_form.pk if result_form.center: return redirect(url) else: return redirect('intake-enter-center') else: return self.form_invalid(form)
def post(self, *args, **kwargs): tally_id = kwargs.get('tally_id') form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): barcode = form.cleaned_data['barcode'] or\ form.cleaned_data['barcode_scan'] result_form = get_object_or_404(ResultForm, barcode=barcode, tally__id=tally_id) possible_states = [ FormState.CORRECTION, FormState.DATA_ENTRY_1, FormState.DATA_ENTRY_2, FormState.QUALITY_CONTROL ] if groups.SUPER_ADMINISTRATOR in groups.user_groups( self.request.user): possible_states.append(FormState.ARCHIVED) form = safe_form_in_state(result_form, possible_states, form) if form: return self.form_invalid(form) result_form.reject(new_state=FormState.AUDIT) result_form.audited_count += 1 result_form.save() Audit.objects.create(result_form=result_form, user=self.request.user.userprofile) return redirect(self.success_url, tally_id=tally_id) else: return self.form_invalid(form)
def post(self, *args, **kwargs): tally_id = kwargs.get('tally_id') post_data = self.request.POST form_class = self.get_form_class() center_form = self.get_form(form_class) pk = session_matches_post_result_form(post_data, self.request) result_form = get_object_or_404(ResultForm, pk=pk, tally__id=tally_id) form = safe_form_in_state(result_form, FormState.INTAKE, center_form) if form: return self.form_invalid(form) if center_form.is_valid(): station_number = center_form.cleaned_data.get('station_number') center_number = center_form.cleaned_data.get('center_number') center = Center.objects.get(code=center_number, tally__id=tally_id) # Checks if center ballot number and form ballot number are the # same is_error = False center_sub = center.sub_constituency if center_sub: is_general = result_form.ballot.number == \ center.sub_constituency.code if not is_general: is_women = center_sub.ballot_women is not None if not is_women or ( is_women and result_form.ballot.number != center_sub.ballot_women.number): is_error = True if is_error: form = add_generic_error(center_form, _(u"Ballot number do not match for" u"center and form")) return self.render_to_response(self.get_context_data( form=form, header_text=_('Intake'), result_form=result_form, tally_id=tally_id)) duplicated_forms = result_form.get_duplicated_forms(center, station_number) if duplicated_forms: result_form.station_number = station_number result_form.center = center # a form already exists, send to clearance self.request.session[ 'intake-error'] = INTAKE_DUPLICATE_ERROR_MESSAGE if result_form.form_state != FormState.CLEARANCE: result_form.send_to_clearance() for form in duplicated_forms: if form.form_state != FormState.CLEARANCE: form.send_to_clearance() return redirect('intake-clearance', tally_id=tally_id) self.request.session['station_number'] = station_number self.request.session['center_number'] = center_number return redirect(self.success_url, tally_id=tally_id) else: return self.render_to_response(self.get_context_data( form=center_form, header_text=_('Intake'), result_form=result_form))
def post(self, *args, **kwargs): tally_id = kwargs.get('tally_id') post_data = self.request.POST form_class = self.get_form_class() center_form = self.get_form(form_class) pk = session_matches_post_result_form(post_data, self.request) result_form = get_object_or_404(ResultForm, pk=pk, tally__id=tally_id) form = safe_form_in_state(result_form, FormState.INTAKE, center_form) if form: return self.form_invalid(form) if center_form.is_valid(): station_number = center_form.cleaned_data.get('station_number') center_number = center_form.cleaned_data.get('center_number') center = Center.objects.get(code=center_number, tally__id=tally_id) # Checks if center ballot number and form ballot number are the # same is_error = False center_sub = center.sub_constituency if center_sub: is_general = result_form.ballot.number == \ center.sub_constituency.code if not is_general: is_women = center_sub.ballot_women is not None if not is_women or (is_women and result_form.ballot.number != center_sub.ballot_women.number): is_error = True if is_error: form = add_generic_error( center_form, _(u"Ballot number do not match for" u"center and form")) return self.render_to_response( self.get_context_data(form=form, header_text=_('Intake'), result_form=result_form, tally_id=tally_id)) duplicated_forms = result_form.get_duplicated_forms( center, station_number) if duplicated_forms: result_form.station_number = station_number result_form.center = center # a form already exists, send to clearance self.request.session[ 'intake-error'] = INTAKE_DUPLICATE_ERROR_MESSAGE if result_form.form_state != FormState.CLEARANCE: result_form.send_to_clearance() for form in duplicated_forms: if form.form_state != FormState.CLEARANCE: form.send_to_clearance() return redirect('intake-clearance', tally_id=tally_id) self.request.session['station_number'] = station_number self.request.session['center_number'] = center_number return redirect(self.success_url, tally_id=tally_id) else: return self.render_to_response( self.get_context_data(form=center_form, header_text=_('Intake'), result_form=result_form))