submissions.forms module

class submissions.forms.SubmissionSearchForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)[source]

Bases: django.forms.forms.Form

Filter a Submission queryset using basic search fields.

search_results()[source]

Return all Submission objects according to search.

base_fields = {'abstract': <django.forms.fields.CharField object>, 'author': <django.forms.fields.CharField object>, 'subject_area': <django.forms.fields.CharField object>, 'title': <django.forms.fields.CharField object>}
declared_fields = {'abstract': <django.forms.fields.CharField object>, 'author': <django.forms.fields.CharField object>, 'subject_area': <django.forms.fields.CharField object>, 'title': <django.forms.fields.CharField object>}
property media
class submissions.forms.SubmissionPoolFilterForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)[source]

Bases: django.forms.forms.Form

search(queryset, current_user)[source]
status_verbose()[source]
base_fields = {'editor_in_charge': <django.forms.fields.BooleanField object>, 'status': <django.forms.fields.ChoiceField object>}
declared_fields = {'editor_in_charge': <django.forms.fields.BooleanField object>, 'status': <django.forms.fields.ChoiceField object>}
property media
class submissions.forms.SubmissionService(requested_by, preprint_server, identifier=None, resubmission_of_id=None)[source]

Bases: object

Object to run checks for prefiller and submit manuscript forms.

metadata = {}
property latest_submission

Return latest version of preprint series or None.

property arxiv_data
run_checks()[source]

Do several pre-checks (using the arXiv API if needed).

This is needed for both the prefill and submission forms.

get_latest_submission_data()[source]

Return initial form data originating from earlier Submission.

is_resubmission()[source]

Check if Submission is a SciPost or arXiv resubmission.

identifier_matches_regex(journal_code)[source]

Check if identifier is valid for the Journal submitting to.

process_resubmission_procedure(submission)[source]

Update all fields for new and old Submission and EditorialAssignments to comply with the resubmission procedures.

– submission: the new version of the Submission series.

class submissions.forms.SubmissionForm(*args, **kwargs)[source]

Bases: django.forms.models.ModelForm

Form to submit a new (re)Submission.

class Meta[source]

Bases: object

model

alias of submissions.models.submission.Submission

fields = ['is_resubmission_of', 'discipline', 'submitted_to', 'proceedings', 'submission_type', 'subject_area', 'secondary_areas', 'approaches', 'title', 'author_list', 'abstract', 'author_comments', 'list_of_changes', 'remarks_for_editors', 'referees_suggested', 'referees_flagged', 'arxiv_link']
widgets = {'arxiv_link': <django.forms.widgets.TextInput object>, 'author_comments': <django.forms.widgets.Textarea object>, 'is_resubmission_of': <django.forms.widgets.HiddenInput object>, 'list_of_changes': <django.forms.widgets.Textarea object>, 'referees_flagged': <django.forms.widgets.Textarea object>, 'referees_suggested': <django.forms.widgets.Textarea object>, 'remarks_for_editors': <django.forms.widgets.Textarea object>, 'secondary_areas': <django.forms.widgets.SelectMultiple object>}
is_resubmission()[source]
clean(*args, **kwargs)[source]

Do all general checks for Submission.

clean_author_list()[source]

Check if author list matches the Contributor submitting.

clean_submission_type()[source]

Validate Submission type for the SciPost Physics journal.

set_pool(submission)[source]

Set the default set of (guest) Fellows for this Submission.

save()[source]

Create the new Submission and Preprint instances.

base_fields = {'abstract': <django.forms.fields.CharField object>, 'approaches': <django.forms.fields.MultipleChoiceField object>, 'arxiv_link': <django.forms.fields.URLField object>, 'author_comments': <django.forms.fields.CharField object>, 'author_list': <django.forms.fields.CharField object>, 'discipline': <django.forms.fields.TypedChoiceField object>, 'identifier_w_vn_nr': <django.forms.fields.CharField object>, 'is_resubmission_of': <django.forms.models.ModelChoiceField object>, 'list_of_changes': <django.forms.fields.CharField object>, 'preprint_file': <django.forms.fields.FileField object>, 'proceedings': <django.forms.models.ModelChoiceField object>, 'referees_flagged': <django.forms.fields.CharField object>, 'referees_suggested': <django.forms.fields.CharField object>, 'remarks_for_editors': <django.forms.fields.CharField object>, 'secondary_areas': <django.forms.fields.MultipleChoiceField object>, 'subject_area': <django.forms.fields.TypedChoiceField object>, 'submission_type': <django.forms.fields.TypedChoiceField object>, 'submitted_to': <django.forms.models.ModelChoiceField object>, 'title': <django.forms.fields.CharField object>}
declared_fields = {'identifier_w_vn_nr': <django.forms.fields.CharField object>, 'preprint_file': <django.forms.fields.FileField object>}
property media
class submissions.forms.SubmissionIdentifierForm(*args, **kwargs)[source]

Bases: django.forms.forms.Form

Prefill SubmissionForm using this form that takes an arXiv ID only.

IDENTIFIER_PLACEHOLDER = 'new style (with version nr) ####.####(#)v#(#)'
clean_identifier_w_vn_nr()[source]

Do basic prechecks based on the arXiv ID only.

get_initial_submission_data()[source]

Return dictionary to prefill SubmissionForm.

base_fields = {'identifier_w_vn_nr': <django.forms.fields.RegexField object>}
declared_fields = {'identifier_w_vn_nr': <django.forms.fields.RegexField object>}
property media
class submissions.forms.SubmissionReportsForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)[source]

Bases: django.forms.models.ModelForm

Update refereeing pdf for Submission.

class Meta[source]

Bases: object

model

alias of submissions.models.submission.Submission

fields = ['pdf_refereeing_pack']
base_fields = {'pdf_refereeing_pack': <django.forms.fields.FileField object>}
declared_fields = {}
property media
class submissions.forms.PreassignEditorsForm(*args, **kwargs)[source]

Bases: django.forms.models.ModelForm

Preassign editors for incoming Submission.

class Meta[source]

Bases: object

model

alias of submissions.models.assignment.EditorialAssignment

fields = ('to',)
save(commit=True)[source]

Create/get unordered EditorialAssignments or delete existing if needed.

get_fellow()[source]

Get fellow either via initial data or instance.

base_fields = {'assign': <django.forms.fields.BooleanField object>, 'to': <django.forms.models.ModelChoiceField object>}
declared_fields = {'assign': <django.forms.fields.BooleanField object>, 'to': <django.forms.models.ModelChoiceField object>}
property media
class submissions.forms.BasePreassignEditorsFormSet(*args, **kwargs)[source]

Bases: django.forms.models.BaseModelFormSet

Preassign editors for incoming Submission.

add_fields(form, index)[source]

Force hidden input for ORDER field.

get_form_kwargs(index)[source]

Add submission to form arguments.

save(commit=True)[source]

Save each form and order EditorialAssignments.

class submissions.forms.SubmissionReassignmentForm(*args, **kwargs)[source]

Bases: django.forms.models.ModelForm

Process reassignment of EIC for Submission.

class Meta[source]

Bases: object

model

alias of submissions.models.submission.Submission

fields = ()
save()[source]

Update old/create new Assignment and send mails.

base_fields = {'new_editor': <django.forms.models.ModelChoiceField object>}
declared_fields = {'new_editor': <django.forms.models.ModelChoiceField object>}
property media
class submissions.forms.SubmissionPrescreeningForm(*args, **kwargs)[source]

Bases: django.forms.models.ModelForm

Processing decision for pre-screening of Submission.

PASS = 'pass'
FAIL = 'fail'
CHOICES = (('pass', 'Pass pre-screening. Proceed to the Pool.'), ('fail', 'Fail pre-screening.'))
class Meta[source]

Bases: object

model

alias of submissions.models.submission.Submission

fields = ()
clean()[source]

Check if Submission has right status.

save()[source]

Update Submission status.

base_fields = {'decision': <django.forms.fields.ChoiceField object>, 'message_for_authors': <django.forms.fields.CharField object>, 'remark_for_pool': <django.forms.fields.CharField object>}
declared_fields = {'decision': <django.forms.fields.ChoiceField object>, 'message_for_authors': <django.forms.fields.CharField object>, 'remark_for_pool': <django.forms.fields.CharField object>}
property media
class submissions.forms.WithdrawSubmissionForm(*args, **kwargs)[source]

Bases: django.forms.forms.Form

A submitting author has the right to withdraw the manuscript.

is_confirmed()[source]
save()[source]
base_fields = {'confirm': <django.forms.fields.ChoiceField object>}
declared_fields = {'confirm': <django.forms.fields.ChoiceField object>}
property media
class submissions.forms.InviteEditorialAssignmentForm(*args, **kwargs)[source]

Bases: django.forms.models.ModelForm

Invite new Fellow; create EditorialAssignment for Submission.

class Meta[source]

Bases: object

model

alias of submissions.models.assignment.EditorialAssignment

fields = ('to',)
labels = {'to': 'Fellow'}
save(commit=True)[source]

Save this form’s self.instance object if commit=True. Otherwise, add a save_m2m() method to the form which can be called after the instance is saved manually at a later time. Return the model instance.

base_fields = {'to': <django.forms.models.ModelChoiceField object>}
declared_fields = {}
property media
class submissions.forms.EditorialAssignmentForm(*args, **kwargs)[source]

Bases: django.forms.models.ModelForm

Create and/or process new EditorialAssignment for Submission.

DECISION_CHOICES = (('accept', 'Accept'), ('decline', 'Decline'))
CYCLE_CHOICES = (('default', 'Normal refereeing cycle'), ('direct_rec', 'Directly formulate Editorial Recommendation for rejection'))
class Meta[source]

Bases: object

model

alias of submissions.models.assignment.EditorialAssignment

fields = ()
has_accepted_invite()[source]

Check if invite is accepted or if voluntered to become EIC.

is_normal_cycle()[source]

Check if normal refereeing cycle is chosen.

save(commit=True)[source]

Save Submission to EditorialAssignment.

base_fields = {'decision': <django.forms.fields.ChoiceField object>, 'refereeing_cycle': <django.forms.fields.ChoiceField object>, 'refusal_reason': <django.forms.fields.ChoiceField object>}
declared_fields = {'decision': <django.forms.fields.ChoiceField object>, 'refereeing_cycle': <django.forms.fields.ChoiceField object>, 'refusal_reason': <django.forms.fields.ChoiceField object>}
property media
class submissions.forms.ConsiderAssignmentForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)[source]

Bases: django.forms.forms.Form

Process open EditorialAssignment.

base_fields = {'accept': <django.forms.fields.ChoiceField object>, 'refusal_reason': <django.forms.fields.ChoiceField object>}
declared_fields = {'accept': <django.forms.fields.ChoiceField object>, 'refusal_reason': <django.forms.fields.ChoiceField object>}
property media
class submissions.forms.RefereeSearchForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)[source]

Bases: django.forms.forms.Form

search()[source]
base_fields = {'last_name': <django.forms.fields.CharField object>}
declared_fields = {'last_name': <django.forms.fields.CharField object>}
property media
class submissions.forms.ConsiderRefereeInvitationForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)[source]

Bases: django.forms.forms.Form

base_fields = {'accept': <django.forms.fields.ChoiceField object>, 'refusal_reason': <django.forms.fields.ChoiceField object>}
declared_fields = {'accept': <django.forms.fields.ChoiceField object>, 'refusal_reason': <django.forms.fields.ChoiceField object>}
property media
class submissions.forms.SetRefereeingDeadlineForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)[source]

Bases: django.forms.forms.Form

clean_deadline()[source]
base_fields = {'deadline': <django.forms.fields.DateField object>}
declared_fields = {'deadline': <django.forms.fields.DateField object>}
property media
class submissions.forms.VotingEligibilityForm(*args, **kwargs)[source]

Bases: django.forms.models.ModelForm

Assign Fellows to vote for EICRecommendation and open its status for voting.

class Meta[source]

Bases: object

model

alias of submissions.models.recommendation.EICRecommendation

fields = ()
save(commit=True)[source]

Update EICRecommendation status and save its voters.

get_eligible_fellows()[source]
base_fields = {'eligible_fellows': <django.forms.models.ModelMultipleChoiceField object>}
declared_fields = {'eligible_fellows': <django.forms.models.ModelMultipleChoiceField object>}
property media
class submissions.forms.ReportPDFForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)[source]

Bases: django.forms.models.ModelForm

class Meta[source]

Bases: object

model

alias of submissions.models.report.Report

fields = ['pdf_report']
base_fields = {'pdf_report': <django.forms.fields.FileField object>}
declared_fields = {}
property media
class submissions.forms.ReportForm(*args, **kwargs)[source]

Bases: django.forms.models.ModelForm

Write Report form.

class Meta[source]

Bases: object

model

alias of submissions.models.report.Report

fields = ['qualification', 'strengths', 'weaknesses', 'report', 'requested_changes', 'validity', 'significance', 'originality', 'clarity', 'formatting', 'grammar', 'recommendation', 'remarks_for_editors', 'file_attachment', 'anonymous']
report_type = 'report_normal'
save()[source]

Update meta data if ModelForm is submitted (non-draft). Possibly overwrite the default status if user asks for saving as draft.

base_fields = {'anonymous': <django.forms.fields.BooleanField object>, 'clarity': <django.forms.fields.TypedChoiceField object>, 'file_attachment': <django.forms.fields.FileField object>, 'formatting': <django.forms.fields.TypedChoiceField object>, 'grammar': <django.forms.fields.TypedChoiceField object>, 'originality': <django.forms.fields.TypedChoiceField object>, 'qualification': <django.forms.fields.TypedChoiceField object>, 'recommendation': <django.forms.fields.TypedChoiceField object>, 'remarks_for_editors': <django.forms.fields.CharField object>, 'report': <django.forms.fields.CharField object>, 'requested_changes': <django.forms.fields.CharField object>, 'significance': <django.forms.fields.TypedChoiceField object>, 'strengths': <django.forms.fields.CharField object>, 'validity': <django.forms.fields.TypedChoiceField object>, 'weaknesses': <django.forms.fields.CharField object>}
declared_fields = {}
property media
class submissions.forms.VetReportForm(*args, **kwargs)[source]

Bases: django.forms.forms.Form

clean_refusal_reason()[source]

Require a refusal reason if report is rejected.

process_vetting(current_contributor)[source]

Set the right report status and update submission fields if needed.

base_fields = {'action_option': <django.forms.fields.ChoiceField object>, 'email_response_field': <django.forms.fields.CharField object>, 'refusal_reason': <django.forms.fields.ChoiceField object>}
declared_fields = {'action_option': <django.forms.fields.ChoiceField object>, 'email_response_field': <django.forms.fields.CharField object>, 'refusal_reason': <django.forms.fields.ChoiceField object>}
property media
class submissions.forms.EditorialCommunicationForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)[source]

Bases: django.forms.models.ModelForm

class Meta[source]

Bases: object

model

alias of submissions.models.communication.EditorialCommunication

fields = ('text',)
widgets = {'text': <django.forms.widgets.Textarea object>}
base_fields = {'text': <django.forms.fields.CharField object>}
declared_fields = {}
property media
class submissions.forms.EICRecommendationForm(*args, **kwargs)[source]

Bases: django.forms.models.ModelForm

Formulate an EICRecommendation.

DAYS_TO_VOTE = 7
assignment = None
earlier_recommendations = []
class Meta[source]

Bases: object

model

alias of submissions.models.recommendation.EICRecommendation

fields = ['for_journal', 'recommendation', 'tier', 'remarks_for_authors', 'requested_changes', 'remarks_for_editorial_college']
widgets = {'remarks_for_authors': <django.forms.widgets.Textarea object>, 'remarks_for_editorial_college': <django.forms.widgets.Textarea object>, 'requested_changes': <django.forms.widgets.Textarea object>}
clean()[source]

Hook for doing any extra form-wide cleaning after Field.clean() has been called on every field. Any ValidationError raised by this method will not be associated with a particular field; it will have a special-case association with the field named ‘__all__’.

save()[source]

Save this form’s self.instance object if commit=True. Otherwise, add a save_m2m() method to the form which can be called after the instance is saved manually at a later time. Return the model instance.

revision_requested()[source]
has_assignment()[source]
load_assignment()[source]
load_earlier_recommendations()[source]

Load and save EICRecommendations related to Submission of the instance.

base_fields = {'for_journal': <django.forms.models.ModelChoiceField object>, 'recommendation': <django.forms.fields.TypedChoiceField object>, 'remarks_for_authors': <django.forms.fields.CharField object>, 'remarks_for_editorial_college': <django.forms.fields.CharField object>, 'requested_changes': <django.forms.fields.CharField object>, 'tier': <django.forms.fields.ChoiceField object>}
declared_fields = {'tier': <django.forms.fields.ChoiceField object>}
property media
class submissions.forms.RecommendationVoteForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)[source]

Bases: django.forms.forms.Form

Cast vote on EICRecommendation form.

clean()[source]

Hook for doing any extra form-wide cleaning after Field.clean() has been called on every field. Any ValidationError raised by this method will not be associated with a particular field; it will have a special-case association with the field named ‘__all__’.

base_fields = {'alternative_for_journal': <django.forms.models.ModelChoiceField object>, 'alternative_recommendation': <django.forms.fields.ChoiceField object>, 'remark': <django.forms.fields.CharField object>, 'tier': <django.forms.fields.ChoiceField object>, 'vote': <django.forms.fields.ChoiceField object>}
declared_fields = {'alternative_for_journal': <django.forms.models.ModelChoiceField object>, 'alternative_recommendation': <django.forms.fields.ChoiceField object>, 'remark': <django.forms.fields.CharField object>, 'tier': <django.forms.fields.ChoiceField object>, 'vote': <django.forms.fields.ChoiceField object>}
property media
class submissions.forms.EditorialDecisionForm(*args, **kwargs)[source]

Bases: django.forms.models.ModelForm

For EdAdmin to fix the outcome on a Submission, after voting is completed.

class Meta[source]

Bases: object

model

alias of submissions.models.decision.EditorialDecision

fields = ['submission', 'for_journal', 'decision', 'taken_on', 'remarks_for_authors', 'remarks_for_editorial_college', 'status']
clean()[source]

Hook for doing any extra form-wide cleaning after Field.clean() has been called on every field. Any ValidationError raised by this method will not be associated with a particular field; it will have a special-case association with the field named ‘__all__’.

save()[source]

Save this form’s self.instance object if commit=True. Otherwise, add a save_m2m() method to the form which can be called after the instance is saved manually at a later time. Return the model instance.

base_fields = {'decision': <django.forms.fields.TypedChoiceField object>, 'for_journal': <django.forms.models.ModelChoiceField object>, 'remarks_for_authors': <django.forms.fields.CharField object>, 'remarks_for_editorial_college': <django.forms.fields.CharField object>, 'status': <django.forms.fields.TypedChoiceField object>, 'submission': <django.forms.models.ModelChoiceField object>, 'taken_on': <django.forms.fields.DateTimeField object>}
declared_fields = {}
property media
class submissions.forms.RestartRefereeingForm(*args, **kwargs)[source]

Bases: django.forms.forms.Form

For EdAdmin to restart the latest refereeing round.

is_confirmed()[source]
save()[source]
base_fields = {'confirm': <django.forms.fields.ChoiceField object>}
declared_fields = {'confirm': <django.forms.fields.ChoiceField object>}
property media
class submissions.forms.SubmissionCycleChoiceForm(*args, **kwargs)[source]

Bases: django.forms.models.ModelForm

Make a decision on the Submission’s cycle and make publicly available.

class Meta[source]

Bases: object

model

alias of submissions.models.submission.Submission

fields = ('refereeing_cycle',)
widgets = {'refereeing_cycle': <class 'django.forms.widgets.RadioSelect'>}
save()[source]

Make Submission publicly available after decision.

base_fields = {'refereeing_cycle': <django.forms.fields.TypedChoiceField object>, 'referees_reinvite': <django.forms.models.ModelMultipleChoiceField object>}
declared_fields = {'referees_reinvite': <django.forms.models.ModelMultipleChoiceField object>}
property media
class submissions.forms.iThenticateReportForm(submission, *args, **kwargs)[source]

Bases: django.forms.models.ModelForm

class Meta[source]

Bases: object

model

alias of submissions.models.plagiarism.iThenticateReport

fields = []
clean()[source]

Hook for doing any extra form-wide cleaning after Field.clean() has been called on every field. Any ValidationError raised by this method will not be associated with a particular field; it will have a special-case association with the field named ‘__all__’.

save(*args, **kwargs)[source]

Save this form’s self.instance object if commit=True. Otherwise, add a save_m2m() method to the form which can be called after the instance is saved manually at a later time. Return the model instance.

call_ithenticate()[source]
get_client()[source]
update_status()[source]
base_fields = {}
declared_fields = {}
property media
upload_document()[source]