refactor: use form for search_submission (#8065)
* refactor: use form for search_submission * chore: remove lint * style: Black
This commit is contained in:
parent
1e193377df
commit
c26ba974ba
|
@ -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-..."
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 %}
|
Loading…
Reference in a new issue