From 2bcd6f8ef4a0c0559ca9224c19974a9323bd72db Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 4 Aug 2021 16:20:28 +0000 Subject: [PATCH] Improve the BOF request upload form validation. Commit ready for merge. - Legacy-Id: 19272 --- ietf/doc/views_bofreq.py | 41 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/ietf/doc/views_bofreq.py b/ietf/doc/views_bofreq.py index eca146f80..28b549537 100644 --- a/ietf/doc/views_bofreq.py +++ b/ietf/doc/views_bofreq.py @@ -44,35 +44,30 @@ class BofreqUploadForm(forms.Form): bofreq_file = forms.FileField(label="Markdown source file to upload", required=False) bofreq_content = forms.CharField(widget=forms.Textarea(attrs={'rows':30}), required=False, strip=False) - def clean_bofreq_content(self): - content = self.cleaned_data["bofreq_content"].replace("\r", "") - default_content = render_to_string('doc/bofreq/bofreq_template.md',{}) - if content==default_content: - raise forms.ValidationError('The example content may not be saved. Edit it as instructed to document this BOF request.') - try: - _ = markdown.markdown(content, extensions=['extra']) - except Exception as e: - raise forms.ValidationError(f'Markdown processing failed: {e}') - return content - - def clean_bofreq_file(self): - content = get_cleaned_text_file_content(self.cleaned_data["bofreq_file"]) - try: - _ = markdown.markdown(content, extensions=['extra']) - except Exception as e: - raise forms.ValidationError(f'Markdown processing failed: {e}') - return content - def clean(self): def require_field(f): if not self.cleaned_data.get(f): self.add_error(f, forms.ValidationError("You must fill in this field.")) + return False + else: + return True submission_method = self.cleaned_data.get("bofreq_submission") + content = '' if submission_method == "enter": - require_field("bofreq_content") + if require_field("bofreq_content"): + content = self.cleaned_data["bofreq_content"].replace("\r", "") + default_content = render_to_string('doc/bofreq/bofreq_template.md',{}) + if content==default_content: + raise forms.ValidationError('The example content may not be saved. Edit it as instructed to document this BOF request.') elif submission_method == "upload": - require_field("bofreq_file") + if require_field("bofreq_file"): + content = get_cleaned_text_file_content(self.cleaned_data["bofreq_file"]) + try: + _ = markdown.markdown(content, extensions=['extra']) + except Exception as e: + raise forms.ValidationError(f'Markdown processing failed: {e}') + @login_required @@ -98,7 +93,7 @@ def submit(request, name): bofreq.save_with_history([e]) bofreq_submission = form.cleaned_data['bofreq_submission'] if bofreq_submission == "upload": - content = form.cleaned_data['bofreq_file'] + content = get_cleaned_text_file_content(form.cleaned_data["bofreq_file"]) else: content = form.cleaned_data['bofreq_content'] with io.open(bofreq.get_file_name(), 'w', encoding='utf-8') as destination: @@ -168,7 +163,7 @@ def new_bof_request(request): alias.docs.set([bofreq]) bofreq_submission = form.cleaned_data['bofreq_submission'] if bofreq_submission == "upload": - content = form.cleaned_data['bofreq_file'] + content = get_cleaned_text_file_content(form.cleaned_data["bofreq_file"]) else: content = form.cleaned_data['bofreq_content'] with io.open(bofreq.get_file_name(), 'w', encoding='utf-8') as destination: