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'].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.mailtrigger.utils import gather_address_lists
from ietf.person.models import Email
from ietf.submit.forms import (SubmissionAutoUploadForm, AuthorForm, SubmitterForm, EditSubmissionForm,
PreapprovalForm, ReplacesForm, SubmissionManualUploadForm)
from ietf.submit.forms import (
SubmissionAutoUploadForm,
AuthorForm,
SubmitterForm,
EditSubmissionForm,
PreapprovalForm,
ReplacesForm,
SubmissionManualUploadForm,
SubmissionSearchForm,
)
from ietf.submit.mail import send_full_url, send_manual_post_request
from ietf.submit.models import (Submission, Preapproval, SubmissionExtResource,
DraftSubmissionStateName )
from ietf.submit.tasks import 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.submit.models import (
Submission,
Preapproval,
SubmissionExtResource,
DraftSubmissionStateName,
)
from ietf.submit.tasks import (
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.utils.accesstoken import generate_access_token
from ietf.utils.log import log
@ -195,24 +225,33 @@ def api_submit_tombstone(request):
def tool_instructions(request):
return render(request, 'submit/tool_instructions.html', {'selected': 'instructions'})
def search_submission(request):
error = None
name = None
if request.method == 'POST':
name = request.POST.get('name', '')
submission = Submission.objects.filter(name=name).order_by('-pk').first()
if submission:
return redirect(submission_status, submission_id=submission.pk)
else:
if re.search(r'-\d\d$', name):
submission = Submission.objects.filter(name=name[:-3]).order_by('-pk').first()
if submission:
return redirect(submission_status, submission_id=submission.pk)
error = 'No valid submission found for %s' % name
return render(request, 'submit/search_submission.html',
{'selected': 'status',
'error': error,
'name': name})
if request.method == "POST":
form = SubmissionSearchForm(request.POST)
if form.is_valid():
name = form.cleaned_data["name"]
submission = Submission.objects.filter(name=name).order_by("-pk").first()
if submission:
return redirect(submission_status, submission_id=submission.pk)
else:
if re.search(r"-\d\d$", name):
submission = (
Submission.objects.filter(name=name[:-3])
.order_by("-pk")
.first()
)
if submission:
return redirect(submission_status, submission_id=submission.pk)
form.add_error(None, f"No valid submission found for {name}")
else:
form = SubmissionSearchForm()
return render(
request,
"submit/search_submission.html",
{"selected": "status", "form": form},
)
def can_edit_submission(user, submission, access_token):
key_matched = access_token and submission.access_token() == access_token

View file

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