def form_valid(self, form: Form) -> HttpResponse: """Complete the registration and return response.""" try: # Return value is ignored, because we need whole attestation. self.complete_registration(form) except ValidationError as error: form.add_error(None, error) return self.form_invalid(form) Authenticator.objects.create(user=self.request.user, attestation=form.cleaned_data['attestation'], user_handle=form.cleaned_data.get('user_handle'), label=form.cleaned_data.get('label')) return super().form_valid(form)
def clean(self, form: forms.Form, cleaned_data): if self.minimum_required is not None: all_fields = self.subset or list(product(self.rows, self.columns)) has_error = any( form.has_error(self.get_id(r, c)) for r, c in all_fields) if has_error: return cleaned_data n_values = sum(1 for r, c in all_fields if cleaned_data.get(self.get_id(r, c))) if n_values < self.minimum_required: form.add_error( self.fake_field_id, f"Vous devez remplir au moins {self.minimum_required} champs.", ) return cleaned_data
def form_valid(self, form: forms.Form) -> HttpResponse: """Complete the FIDO token registration.""" try: # Return value is ignored, because we need whole attestation. self.complete_registration(form) except ValidationError as error: form.add_error(None, error) return self.form_invalid(form) authenticator = Authenticator.objects.create( user=form.cleaned_data['user'], attestation=form.cleaned_data['attestation'], label=form.cleaned_data.get('label'), ) return HttpResponseRedirect( reverse('admin:django_fido_authenticator_change', args=(authenticator.pk, )))
def form_valid(self, form: Form) -> HttpResponse: """Complete the authentication and return response.""" user = None if SETTINGS.two_step_auth: try: user = self.complete_authentication(form) except ValidationError as error: form.add_error(None, error) else: user = form.get_user() if user is not None: login(self.request, user) # Ensure user is deleted from session. self.request.session.pop(AUTHENTICATION_USER_SESSION_KEY, None) return redirect(self.get_success_url()) else: return self.form_invalid(form)
def form_valid(self, form: Form): groups = [list for list in [ self._format_array(form.cleaned_data['group1']), self._format_array(form.cleaned_data['group2']), self._format_array(form.cleaned_data['group3']), self._format_array(form.cleaned_data['group4'])] if list != ['']] try: sc = ScheduleCreator( schedule=Schedule(gameday_format=self.object.format, groups=groups), gameday=self.object) sc.create() except FileNotFoundError: form.add_error(None, 'Spielplan konnte nicht erstellt werden, ' 'da es das Format als Spielplan nicht gibt: "{0}"'.format(self.object.format)) return super(GamedayUpdateView, self).form_invalid(form) except (IndexError, ScheduleTeamMismatchError): form.add_error(None, 'Spielplan konnte nicht erstellt werden, ' 'da die Kombination #Teams und #Format nicht zum Spielplan passen') return super(GamedayUpdateView, self).form_invalid(form) except TeamNotExistent as err: form.add_error(None, f'Spielplan konnte nicht erstellt werden, da dass Team "{err}" nicht gefunden wurde.') return super(GamedayUpdateView, self).form_invalid(form) return super(GamedayUpdateView, self).form_valid(form)
def process_error_response_into_form_errors( form: forms.Form, error_data: dict, field_mapping: Optional[dict] = None) -> bool: """It process error response from REST API. It tries to add errors from response into form as field errors or form errors. Args: form: Local form with invalid data. error_data: Error response from server in format of drf-friendly-errors. field_mapping: Mapping to allow display field error in another field. Mapping is in format error_data.field_name -> form.field_name. Returns: True if error data was processed else False. """ code = error_data.get('code', None) if field_mapping is None: field_mapping = {} # 1000 = Validation Failed if code != '1000': return False for error in error_data.get('errors'): field = error.get('field') mapped_field = field_mapping.get(field, None) if mapped_field and mapped_field in form.fields.keys(): form.add_error(mapped_field, error.get('message')) continue if field in form.fields.keys(): form.add_error(field, error.get('message')) continue form.add_error(None, error.get('message')) return True