refactor: use form for search_submission (#8065)

* refactor: use form for search_submission

* chore: remove lint

* style: Black
This commit is contained in:
Jennifer Richards 2024-10-22 12:51:16 -03:00 committed by GitHub
parent 1e193377df
commit c26ba974ba
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 77 additions and 34 deletions

View file

@ -659,3 +659,13 @@ class MessageModelForm(forms.ModelForm):
self.fields['frm'].label='From' self.fields['frm'].label='From'
self.fields['frm'].widget.attrs['readonly'] = True self.fields['frm'].widget.attrs['readonly'] = True
self.fields['reply_to'].widget.attrs['readonly'] = True self.fields['reply_to'].widget.attrs['readonly'] = True
class SubmissionSearchForm(forms.Form):
"""Form used for search_submission"""
name = forms.CharField(max_length=255, required=True, label="I-D name")
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["name"].widget.attrs["placeholder"] = "draft-..."

View file

@ -26,17 +26,47 @@ from ietf.group.utils import group_features_group_filter
from ietf.ietfauth.utils import has_role, role_required from ietf.ietfauth.utils import has_role, role_required
from ietf.mailtrigger.utils import gather_address_lists from ietf.mailtrigger.utils import gather_address_lists
from ietf.person.models import Email from ietf.person.models import Email
from ietf.submit.forms import (SubmissionAutoUploadForm, AuthorForm, SubmitterForm, EditSubmissionForm, from ietf.submit.forms import (
PreapprovalForm, ReplacesForm, SubmissionManualUploadForm) SubmissionAutoUploadForm,
AuthorForm,
SubmitterForm,
EditSubmissionForm,
PreapprovalForm,
ReplacesForm,
SubmissionManualUploadForm,
SubmissionSearchForm,
)
from ietf.submit.mail import send_full_url, send_manual_post_request from ietf.submit.mail import send_full_url, send_manual_post_request
from ietf.submit.models import (Submission, Preapproval, SubmissionExtResource, from ietf.submit.models import (
DraftSubmissionStateName ) Submission,
from ietf.submit.tasks import process_uploaded_submission_task, process_and_accept_uploaded_submission_task, poke Preapproval,
from ietf.submit.utils import ( approvable_submissions_for_user, preapprovals_for_user, SubmissionExtResource,
recently_approved_by_user, validate_submission, create_submission_event, docevent_from_submission, DraftSubmissionStateName,
post_submission, cancel_submission, rename_submission_files, remove_submission_files, )
get_submission, save_files, clear_existing_files, accept_submission, accept_submission_requires_group_approval, from ietf.submit.tasks import (
accept_submission_requires_prev_auth_approval, update_submission_external_resources) process_uploaded_submission_task,
process_and_accept_uploaded_submission_task,
poke,
)
from ietf.submit.utils import (
approvable_submissions_for_user,
preapprovals_for_user,
recently_approved_by_user,
validate_submission,
create_submission_event,
docevent_from_submission,
post_submission,
cancel_submission,
rename_submission_files,
remove_submission_files,
get_submission,
save_files,
clear_existing_files,
accept_submission,
accept_submission_requires_group_approval,
accept_submission_requires_prev_auth_approval,
update_submission_external_resources,
)
from ietf.stats.utils import clean_country_name from ietf.stats.utils import clean_country_name
from ietf.utils.accesstoken import generate_access_token from ietf.utils.accesstoken import generate_access_token
from ietf.utils.log import log from ietf.utils.log import log
@ -195,24 +225,33 @@ def api_submit_tombstone(request):
def tool_instructions(request): def tool_instructions(request):
return render(request, 'submit/tool_instructions.html', {'selected': 'instructions'}) return render(request, 'submit/tool_instructions.html', {'selected': 'instructions'})
def search_submission(request): def search_submission(request):
error = None if request.method == "POST":
name = None form = SubmissionSearchForm(request.POST)
if request.method == 'POST': if form.is_valid():
name = request.POST.get('name', '') name = form.cleaned_data["name"]
submission = Submission.objects.filter(name=name).order_by('-pk').first() submission = Submission.objects.filter(name=name).order_by("-pk").first()
if submission: if submission:
return redirect(submission_status, submission_id=submission.pk) return redirect(submission_status, submission_id=submission.pk)
else: else:
if re.search(r'-\d\d$', name): if re.search(r"-\d\d$", name):
submission = Submission.objects.filter(name=name[:-3]).order_by('-pk').first() submission = (
Submission.objects.filter(name=name[:-3])
.order_by("-pk")
.first()
)
if submission: if submission:
return redirect(submission_status, submission_id=submission.pk) return redirect(submission_status, submission_id=submission.pk)
error = 'No valid submission found for %s' % name form.add_error(None, f"No valid submission found for {name}")
return render(request, 'submit/search_submission.html', else:
{'selected': 'status', form = SubmissionSearchForm()
'error': error, return render(
'name': name}) request,
"submit/search_submission.html",
{"selected": "status", "form": form},
)
def can_edit_submission(user, submission, access_token): def can_edit_submission(user, submission, access_token):
key_matched = access_token and submission.access_token() == access_token key_matched = access_token and submission.access_token() == access_token

View file

@ -12,14 +12,8 @@
<form method="post"> <form method="post">
{% csrf_token %} {% csrf_token %}
<div class="mb-3"> <div class="mb-3">
<label class="form-label" for="name">I-D name</label> {% bootstrap_form form %}
<input type="text" class="form-control" id="name" name="name" placeholder="draft-..." required>
</div> </div>
{% if error %}
<p class="alert alert-danger my-3">
{{ error }}
</p>
{% endif %}
<button class="btn btn-primary" type="submit">See status</button> <button class="btn btn-primary" type="submit">See status</button>
</form> </form>
{% endblock %} {% endblock %}