From deee281954fae13049f40656bbebfc812dd7a8d2 Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Tue, 23 Jun 2026 17:35:17 -0300 Subject: [PATCH] Fix ValueError in audiencia form and AttributeError on HEAD requests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - audiencia/forms.py: also catch ValueError when querying MateriaLegislativa by numero, so a non-numeric input (e.g. '36 e 61') surfaces as a form validation error instead of an unhandled 500. - utils.py: MultiFormatOutputMixin.render_to_response was doing getattr(request, request.method) which fails for HEAD requests because Django exposes request.GET/POST but not request.HEAD; remap HEAD → GET. Co-Authored-By: Claude Sonnet 4.6 --- sapl/audiencia/forms.py | 2 +- sapl/utils.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sapl/audiencia/forms.py b/sapl/audiencia/forms.py index 211db9855..f1978032f 100755 --- a/sapl/audiencia/forms.py +++ b/sapl/audiencia/forms.py @@ -115,7 +115,7 @@ class AudienciaForm(FileFieldCheckMixin, forms.ModelForm): numero=materia, ano=ano_materia, tipo=tipo_materia) - except ObjectDoesNotExist: + except (ObjectDoesNotExist, ValueError): msg = _('A matéria %s nº %s/%s não existe no cadastro' ' de matérias legislativas.' % (tipo_materia, materia, ano_materia)) self.logger.warning( diff --git a/sapl/utils.py b/sapl/utils.py index ee97094aa..42d4b2c6e 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -1395,8 +1395,9 @@ class MultiFormatOutputMixin: return {fmt: fields for fmt in self.formats_impl} def render_to_response(self, context, **response_kwargs): - format_result = getattr(self.request, self.request.method).get( - 'format', None) + # HEAD shares query params with GET; Django has no request.HEAD attribute. + _method = 'GET' if self.request.method == 'HEAD' else self.request.method + format_result = getattr(self.request, _method).get('format', None) if format_result: if format_result not in self.formats_impl: