diff --git a/README.md b/README.md index dcbe4ae84532c16b4bbcc328fbbe0a0dca5a1151..e30eed1c6c6568f75f1c94bb53c5db31be3d06d8 100644 --- a/README.md +++ b/README.md @@ -228,10 +228,10 @@ It may be used in one of two possible ways: with or without editor. The actual mails only have to be written in the html version (the text based alternative is automatically generated before sending). -Creating a new `mail_code` is easily done by creating new files in the `mails/templates/mail_templates` folder called `<mail_code>.html` and `<mail_code>.json` acting as resp. a content and configuration file. +Creating a new `mail_code` is easily done by creating new files in the `templates/email/<subfolder>` folder called `<mail_code>.html` and `<mail_code>.json` acting respectively as a content and configuration file. Here, `<subfolder>` is named after the main recipient's class (authors, referees, etc.). ##### The config file is configured as follows -`mails/templates/mail_templates/<mail_code>.json` +`templates/email/<subfolder>/<mail_code>.json` * `context_object` - (_required_) Instance of the main object. This instance needs to be passed as `instance` or `<context_object>` in the views and as `<context_object>` in the template file (see description below); * `subject` - (_string, required_) Default subject value; diff --git a/affiliations/templates/affiliations/institution_form.html b/affiliations/templates/affiliations/institution_form.html index d6f6c8fb38c08b764e03fe5a85564daea0ce6d9a..a1b2c6f835eb8213aa49f8744c3903acc4dbe318 100644 --- a/affiliations/templates/affiliations/institution_form.html +++ b/affiliations/templates/affiliations/institution_form.html @@ -1,4 +1,4 @@ -{% extends 'scipost/_personal_page_base.html' %} +{% extends 'affiliations/base.html' %} {% load bootstrap %} @@ -6,7 +6,6 @@ {% block breadcrumb_items %} {{ block.super }} - <a href="{% url 'affiliations:institutions' %}" class="breadcrumb-item">Institutions</a> <span class="breadcrumb-item">Institution detail</span> {% endblock %} diff --git a/common/utils.py b/common/utils.py index fa53a639c137198147399ac3bf7ac6be751a2063..cdbb65c174398fa1f5b1df176cd9c9a534d23240 100644 --- a/common/utils.py +++ b/common/utils.py @@ -2,10 +2,25 @@ __copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)" __license__ = "AGPL v3" +from datetime import timedelta from django.core.mail import EmailMultiAlternatives from django.template import loader +def workdays_between(datetime_from, datetime_until): + """Return number of complete workdays. + + Given two datetime parameters, this function returns the + number of complete workdays (defined as weekdays) separating them. + """ + duration = datetime_until - datetime_from + days = int(duration.total_seconds() // 86400) + weeks = int(days // 7) + daygenerator = (datetime_until - timedelta(x) for x in range(days - 7 * weeks)) + workdays = 5 * weeks + sum(1 for day in daygenerator if day.weekday() < 5) + return workdays + + class BaseMailUtil(object): mail_sender = 'no-reply@scipost.org' mail_sender_title = '' diff --git a/journals/templates/journals/publication_detail.html b/journals/templates/journals/publication_detail.html index 9566a22849031cf93121803010d500cfd1808d0e..4a92ac026cb4fded076296c9b129b702992bb9c1 100644 --- a/journals/templates/journals/publication_detail.html +++ b/journals/templates/journals/publication_detail.html @@ -117,7 +117,7 @@ {% endif %} {% if publication.institutions.all %} - <h3>Institution{{ publication.institutions.count|pluralize }} related to this Publication</h3> + <h3>Affiliation{{ publication.institutions.count|pluralize }} related to this Publication</h3> <ul> {% for institution in publication.institutions.all %} <li><a href="{{ institution.get_absolute_url }}">{{ institution }}</a></li> diff --git a/mails/admin.py b/mails/admin.py index b2e3d3a71a1b4614308b69c395ff8be2b393886d..d7d26b99e714c27c50f251942892f2fe9976d30c 100644 --- a/mails/admin.py +++ b/mails/admin.py @@ -9,6 +9,7 @@ from .models import MailLog class MailLogAdmin(admin.ModelAdmin): list_display = ['__str__', 'processed'] + readonly_fields = ('created', 'latest_activity') admin.site.register(MailLog, MailLogAdmin) diff --git a/mails/migrations/0003_auto_20180502_1807.py b/mails/migrations/0003_auto_20180502_1807.py new file mode 100644 index 0000000000000000000000000000000000000000..e1ad8409a78ba392e65bbf23bb332dc8a40b5aab --- /dev/null +++ b/mails/migrations/0003_auto_20180502_1807.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2018-05-02 16:07 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('mails', '0002_auto_20180313_1744'), + ] + + operations = [ + migrations.AddField( + model_name='maillog', + name='created', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='maillog', + name='latest_activity', + field=models.DateTimeField(auto_now=True), + ), + ] diff --git a/mails/mixins.py b/mails/mixins.py index 5fdb3ef421ce964f42a56a0e66d850952cb03a06..5b7e2829486aec1bea37c7971de8c743e1ae4b8f 100644 --- a/mails/mixins.py +++ b/mails/mixins.py @@ -38,7 +38,7 @@ class MailUtilsMixin: self.instance = kwargs.pop('instance', None) # Gather meta data - json_location = '%s/mails/templates/mail_templates/%s.json' % (settings.BASE_DIR, + json_location = '%s/templates/email/%s.json' % (settings.BASE_DIR, self.mail_code) try: self.mail_data = json.loads(open(json_location).read()) @@ -50,7 +50,7 @@ class MailUtilsMixin: self.object = self.get_object(**kwargs) # Digest the templates - mail_template = loader.get_template('mail_templates/%s.html' % self.mail_code) + mail_template = loader.get_template('email/%s.html' % self.mail_code) if self.instance and self.mail_data.get('context_object'): kwargs[self.mail_data['context_object']] = self.instance self.mail_template = mail_template.render(kwargs) diff --git a/mails/models.py b/mails/models.py index f532cd406d7e4948bab885a923f6962d4c94fdff..e77a920cb305247cf47a914e1deb278d65bc24d6 100644 --- a/mails/models.py +++ b/mails/models.py @@ -29,6 +29,9 @@ class MailLog(models.Model): from_email = models.CharField(max_length=254, blank=True) subject = models.CharField(max_length=254, blank=True) + created = models.DateTimeField(auto_now_add=True) + latest_activity = models.DateTimeField(auto_now=True) + objects = MailLogQuerySet.as_manager() def __str__(self): diff --git a/mails/templates/mail_templates/registration_invitation_refereeing.html b/mails/templates/mail_templates/registration_invitation_refereeing.html deleted file mode 100644 index d2a7bab355309db97057dace4508e5a435f1dddf..0000000000000000000000000000000000000000 --- a/mails/templates/mail_templates/registration_invitation_refereeing.html +++ /dev/null @@ -1,36 +0,0 @@ -Dear {{ invitation.get_title_display }} {{ invitation.last_name }}, - -<br><br> - - -<p> - On behalf of the Editor-in-charge {{ invitation.submission.editor_in_charge.get_title_display }} {{ invitation.submission.editor_in_charge.user.last_name }}, we would like to invite you to referee a Submission to {{ invitation.submission.get_submitted_to_journal_display }}, namely<br> - <br> - {{ invitation.submission.title }}<br> - by {{ invitation.submission.author_list }}<br> - (see https://scipost.org{{ invitation.submission.get_absolute_url }}). -</p> -<p> - We would hereby like to cordially invite you to become a Contributor on SciPost (this is required in order to deliver reports; our records show that you are not yet registered); - for your convenience, we have prepared a pre-filled <a href="https://scipost.org/invitation/{{ invitation.invitation_key }}">registration form</a> for you. - After activation of your registration, you will be allowed to contribute, in particular by providing referee reports. -</p> -<p> - To ensure timely processing of the submission (out of respect for the authors), - we would appreciate a quick accept/decline response from you, ideally within the next 2 days. -</p> -<p> - If you are <strong>not</strong> able to provide a Report, you can let us know by simply <a href="https://scipost.org/submissions/decline_ref_invitation/{{ invitation.invitation_key }}"> clicking here</a>. -</p> -<p> - If you are able to provide a Report, you can confirm this after registering and logging in (you will automatically be prompted for a confirmation). -</p> -<p> - We very much hope that we can count on your expertise, - <br> - Many thanks in advance, - <br> - The SciPost Team -</p> - -{% include 'email/_footer.html' %} diff --git a/mails/templates/mail_templates/registration_invitation_reminder.html b/mails/templates/mail_templates/registration_invitation_reminder.html deleted file mode 100644 index 586e34be8c6596c7a31b793dfc74e116407c45dc..0000000000000000000000000000000000000000 --- a/mails/templates/mail_templates/registration_invitation_reminder.html +++ /dev/null @@ -1,4 +0,0 @@ -<strong>Reminder: Invitation to SciPost</strong> -<br> -<br> -{% include 'mail_templates/registration_invitation.html' %} diff --git a/scipost/static/scipost/assets/css/_reports.scss b/scipost/static/scipost/assets/css/_reports.scss index 1398493dca9d69b5a74f207ed724ad5b11303a58..adf4a971511b20eec4c7350c95ef9b7898b89ac2 100644 --- a/scipost/static/scipost/assets/css/_reports.scss +++ b/scipost/static/scipost/assets/css/_reports.scss @@ -75,4 +75,8 @@ padding: 0.5rem 0.75rem; white-space: pre-wrap; } + + p { + white-space: pre; + } } diff --git a/submissions/management/commands/send_refereeing_reminders.py b/submissions/management/commands/send_refereeing_reminders.py new file mode 100644 index 0000000000000000000000000000000000000000..7ffd95bb2e1f14fa5e2f29ffd926ddf1e698494f --- /dev/null +++ b/submissions/management/commands/send_refereeing_reminders.py @@ -0,0 +1,62 @@ +__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)" +__license__ = "AGPL v3" + + +from django.core.management.base import BaseCommand +from django.utils import timezone + +from common.utils import workdays_between +from mails.utils import DirectMailUtil + +from ...models import Submission + + +class Command(BaseCommand): + help = 'Sends all email reminders needed for Submissions undergoing refereeing' + + def handle(self, *args, **options): + for submission in Submission.objects.open_for_reporting(): + # Send reminders to referees who have not responded: + for invitation in submission.referee_invitations.pending(): + # 2 days after ref invite sent out: first auto reminder + if workdays_between(invitation.date_invited, timezone.now()) == 2: + if invitation.referee: + mail_sender = DirectMailUtil( + mail_code='referees/invite_contributor_to_referee_reminder1', + instance=invitation) + mail_sender.send() + else: + mail_sender = DirectMailUtil( + mail_code='referees/invite_unregistered_to_referee_reminder1', + instance=invitation) + mail_sender.send() + invitation.nr_reminders += 1 + invitation.date_last_reminded = timezone.now() + invitation.save() + # second (and final) reminder after 4 days + elif workdays_between(invitation.date_invited, timezone.now()) == 4: + if invitation.referee: + mail_sender = DirectMailUtil( + mail_code='referees/invite_contributor_to_referee_reminder2', + instance=invitation) + mail_sender.send() + else: + mail_sender = DirectMailUtil( + mail_code='referees/invite_unregistered_to_referee_reminder2', + instance=invitation) + mail_sender.send() + invitation.nr_reminders += 1 + invitation.date_last_reminded = timezone.now() + invitation.save() + # after 6 days of no response, EIC is automatically emailed + # with the suggestion of removing and replacing this referee + elif workdays_between(invitation.date_invited, timezone.now()) == 6: + mail_sender = DirectMailUtil( + mail_code='eic/referee_unresponsive', instance=invitation) + mail_sender.send() + # one week before refereeing deadline: auto email reminder to ref + if workdays_between(timezone.now(), submission.reporting_deadline) == 5: + for invitation in submission.referee_invitations.in_process(): + mail_sender = DirectMailUtil( + mail_code='referees/remind_referee_deadline_1week', instance=invitation) + mail_sender.send() diff --git a/submissions/managers.py b/submissions/managers.py index fa0207d5752f371593a93f0cd4435926eb17eacb..88d0f1f9cf59d6e44a9e2cb56d66340cb39c1b70 100644 --- a/submissions/managers.py +++ b/submissions/managers.py @@ -348,11 +348,11 @@ class RefereeInvitationQuerySet(models.QuerySet): def in_process(self): return self.accepted().filter(fulfilled=False) - def approaching_deadline(self): + def approaching_deadline(self, days=2): qs = self.in_process() - psuedo_deadline = now + datetime.timedelta(days=2) + pseudo_deadline = now + datetime.timedelta(days) deadline = datetime.datetime.now() - qs = qs.filter(submission__reporting_deadline__lte=psuedo_deadline, + qs = qs.filter(submission__reporting_deadline__lte=pseudo_deadline, submission__reporting_deadline__gte=deadline) return qs diff --git a/submissions/models.py b/submissions/models.py index fb481488cf469ec4c05ad42edd6f321ba343a530..8656b4576daa166bd1fc111000b53d8673e96f9b 100644 --- a/submissions/models.py +++ b/submissions/models.py @@ -763,8 +763,12 @@ class EICRecommendation(SubmissionRelatedObjectMixin, models.Model): """Check if this EICRecommdation is allowed to be reformulated in a new version.""" if not self.active: # Already reformulated before; please use the latest version - return False - return self.status in [VOTING_IN_PREP, PUT_TO_VOTING] + return self.submission.eicrecommendations.last() == self + return return self.status in [VOTING_IN_PREP, PUT_TO_VOTING] + + def get_other_versions(self): + """Return other versions of EICRecommendations for this Submission.""" + return self.submission.eicrecommendations.exclude(id=self.id) class iThenticateReport(TimeStampedModel): diff --git a/submissions/templates/submissions/pool/editorial_page.html b/submissions/templates/submissions/pool/editorial_page.html index 31a0d61ca514f136e00b50c5a4c522ef1e19d2a9..aa4f0bd57419435193db5f5015c684549e23f08e 100644 --- a/submissions/templates/submissions/pool/editorial_page.html +++ b/submissions/templates/submissions/pool/editorial_page.html @@ -209,16 +209,19 @@ {% endif %} {% if submission.eic_recommendation_required %} <li> - <a href="{% url 'submissions:eic_recommendation' arxiv_identifier_w_vn_nr=submission.arxiv_identifier_w_vn_nr %}">Formulate an Editorial Recommendation</a> + {% if submission.eicrecommendations.last %} + <a href="{% url 'submissions:reformulate_eic_recommendation' submission.arxiv_identifier_w_vn_nr %}">Reformulate Editorial Recommendation</a> + {% else %} + <a href="{% url 'submissions:eic_recommendation' arxiv_identifier_w_vn_nr=submission.arxiv_identifier_w_vn_nr %}">Formulate an Editorial Recommendation</a> + {% endif %} <p> If you recommend revisions, this will be communicated directly to the Authors, who will be asked to resubmit. <br> If you recommend acceptance or rejection, this will be put to the Editorial College for ratification. </p> </li> - {% endif %} - {% if submission.eicrecommendations.active.first %} - {% if submission.eicrecommendations.active.first.may_be_reformulated %} + {% elif submission.eicrecommendations.last %} + {% if submission.eicrecommendations.last.may_be_reformulated %} <li><a href="{% url 'submissions:reformulate_eic_recommendation' submission.arxiv_identifier_w_vn_nr %}">Reformulate Editorial Recommendation</a></li> {% endif %} {% endif %} diff --git a/submissions/templates/submissions/pool/recommendation.html b/submissions/templates/submissions/pool/recommendation.html index 61aeab9f9c925a003f4a35f4af8e914cf1060f73..6a15dfd082c466208210e6e3bd4137f8abe36c53 100644 --- a/submissions/templates/submissions/pool/recommendation.html +++ b/submissions/templates/submissions/pool/recommendation.html @@ -11,7 +11,7 @@ {% block pagetitle %}: Editorial Recommendation{% endblock pagetitle %} {% block content %} - <h1>Editorial Recommendation to vote on</h1> + <h1 class="highlight">Editorial Recommendation to vote on</h1> {% include 'partials/submissions/submission_li.html' with submission=recommendation.submission %} @@ -21,6 +21,16 @@ {% include 'partials/submissions/pool/submission_info_table.html' with submission=recommendation.submission %} <br> + {% if recommendation.get_other_versions %} + <h3>Other versions of Editorial Recommendations for this Submission</h3> + {% for old_rec in recommendation.get_other_versions %} + {% include 'partials/submissions/recommendation_fellow_content.html' with recommendation=old_rec %} + {% endfor %} + <br> + <br> + {% endif %} + + <h2 class="highlight">Editorial Recommendation to vote on</h2> {% include 'partials/submissions/recommendation_fellow_content.html' with recommendation=recommendation %} <div class="card"> diff --git a/submissions/templates/submissions/refereeing_guidelines.html b/submissions/templates/submissions/refereeing_guidelines.html new file mode 100644 index 0000000000000000000000000000000000000000..8881b9b00e35b0d82414a3d36c2136c70e1917ce --- /dev/null +++ b/submissions/templates/submissions/refereeing_guidelines.html @@ -0,0 +1,357 @@ +{% extends 'scipost/base.html' %} + +{% load staticfiles %} + +{% block pagetitle %}: refereeing guide{% endblock pagetitle %} + + +{% block breadcrumb %} + <div class="container-outside header"> + <div class="container"> + <nav class="breadcrumb hidden-sm-down"> + <span class="breadcrumb-item">Refereeing guide</span> + </nav> + </div> + </div> +{% endblock %} + +{% block content %} + + +<h1 class="highlight-x">Refereeing at SciPost</h1> +<h2 class="highlight-x">A guide for referees and authors</h2> + +<div class="row"> + <div class="col-lg-6"> + +<h4>On this page:</h4> +<ul> + <li><a href="#forReferees">For Referees</a> + <ul> + <li><a href="#refereeInvited">Have you been invited to write a Report?</a></li> + <li><a href="#refereeWhatIsAsked">What do we ask you in our Report form?</a></li> + <li><a href="#refereeBeforeWritingReport">Before you write your Report</a></li> + <li><a href="#refereeWritingReport">Writing your Report</a></li> + <li><a href="#refereeGoodReport">The characteristics of a good Report</a></li> + <li><a href="#refereeFAQ">FAQ</a></li> + </ul> + </li> + + <li><a href="#forAuthors">For Authors</a> + <ul> + <li><a href="#authorsReact">How to react to a Report?</a></li> + </ul> + </li> +</ul> + + </div> + <div class="col-lg-6"> +<p> + The following is a general guide to refereeing at SciPost. + Slightly informal in style, it is meant to introduce you to how our peer review system works. + It does not replace + our Journals' <a href="{% url 'journals:journals_terms_and_conditions' %}">Terms and Conditions</a> + (which extend the general <a href="{% url 'scipost:terms_and_conditions' %}">SciPost Terms and Conditions</a>), and <a href="{% url 'scipost:EdCol_by-laws' %}">Editorial College by-laws</a> which remain in force as official rules. +</p> +<p> + You should already be somewhat familiar with our <a href="{% url 'submissions:sub_and_ref_procedure' %}">submission and refereeing procedure</a>. +</p> +<p> + Referees should in particular be familiar with + our <a href="{% url 'journals:journals_terms_and_conditions' %}#referee_code_of_conduct">referee code of conduct</a>. + Authors should in particular be familiar with + our <a href="{% url 'journals:journals_terms_and_conditions' %}#author_obligations">author obligations</a>. +</p> + </div> + +</div> + +<h2 class="highlight" id="forReferees">For referees</h2> + +<div class="row"> + <div class="col-6"> + + <h3 id="refereeInvited">Have you been invited to write a Report?</h3> + <p>Here are some basic things we trust you will do:</p> + <ul> + <li> + <h4>Please promptly accept or decline the invitation</h4> + <p> + To make your life as easy as possible, the email invitation + you will have received contains simple one-click + actions to accept/decline the task. As a basic but effective + mark of respect to our authors, Fellows and editorial team + (and to help us minimize delays in processing submissions), + please respond promptly to any invitation you receive. + </p> + </li> + <li> + <h4>Comply with our conflict-of-interest rules</h4> + <p> + Conflict of interest is a serious matter, and you should ensure that you do not + transgress our rules. You should not referee if you have: + <ul> + <li>published joint work with one or more of the authors in the last 3 years</li> + <li>an ongoing collaboration with one or more of the authors</li> + <li>a personal relationship with one (or more!) of the authors</li> + <li>a hierarchical connection with one or more of the authors</li> + <li>doubts or feel conflicted due to a close link between the work + refereed and your own work.</li> + </ul> + </p> + <p> + <strong>Note</strong>: in some fields, it is customary for extremely large numbers of + authors to publish jointly. In such cases, the co-authorship disqualifier can be relaxed, + and conflict of interest be assessed primarily on the basis of active collaboration. + </p> + <p> + If you feel that a conflict of interest exists, or if you have doubts, you should email our + <a href="mailto:edadmin@scipost.org">editorial administration</a>, explaining the matter. + </p> + </li> + <li> + <h4>Please deliver your Report in time</h4> + <p> + Following acceptance, you should provide a report within the allocated refereeing + period. It is preferable to deliver a shorter report within the expected time + than no report at all. + </p> + <p> + You can start writing your Report at any time and, + if other duties suddenly require your attention, + conveniently save it as a draft for later completion. + </p> + <p> + If you had accepted to send a Report, but subsequently decide not to proceed, + please send a communication to the Submission's Editor-in-charge + (you can do this from your <a href="{% url 'scipost:personal_page' %}">personal page</a>, + under the refereeing tab). + </p> + </ul> + + <h3 id="refereeWhatIsAsked">What do we ask you in our Report form?</h3> + <p> + Our Report form is quite intuitive and straightforward, and can be easily filled + if you have already read and thought about the paper. + </p> + <p>To be clear, when filling in a Report form, you will be asked for:</p> + <ul> + <li>your assessment of your qualification for refereeing this submission (form: choice field, from expert to ... not qualified!)</li> + <li>your evaluation of the strengths of the submission (form: text area)</li> + <li>your evaluation of its weaknesses (form: text area)</li> + <li>your actual report in textual free-style form (form: text area)</li> + <li>the list of changes you request to the authors</li> + <li>your assessment of the validity, significance, originality and clarity of the submission (form: choice field, from top to poor)</li> + <li>your assessment of the formatting and grammatical level of the submission (form: choice field, from perfect to mediocre)</li> + <li>your recommendation, which can be one of: + <ul> + <li>Publish (top 10% of papers in this Journal)</li> + <li>Publish (top 50%)</li> + <li>Publish (meets criteria of this Journal)</li> + <li>Ask for minor revision</li> + <li>Ask for major revision</li> + <li>Reject</li> + </ul> + </li> + <p> + You can make use of $\LaTeX$ mathematical formulas in the text areas, thanks to MathJax. + Note that only basic elements are available + (\$...\$ for inline equations, \ [ ... \ ] for on-line equations). + </p> + </ul> + + <h3 id="refereeBeforeWritingReport">Before you write your Report</h3> + <ul> + <li> + <h4>read the paper!</h4> + <p> + This might sound obvious, but don't skim on this. + Take the time, and give the paper a chance. You might actually learn something + new and interesting. + </p> + </li> + </ul> + + <h3 id="refereeWritingReport">Writing your Report</h3> + <ul> + <li> + <h4>identify the strong points of the paper</h4> + <p> + Start with the positive. + What did the authors (try to) do? What did they achieve? + Even if you end up being very critical of the work, your criticisms will + have much more credibility and convincing power if you make it clear that you have + given the authors a chance. + </p> + </li> + <li> + <h4>try to be constructive and put your fingers on points that could be improved</h4> + <p> + Nothing is perfect, and even for the better aspects of a paper, you might be + able to suggest ways in which things could be improved. + See "things to focus on while writing your report" for some ideas. + </p> + </li> + <li> + <h4>if any, note the weaknesses of the paper</h4> + <p> + Science thrives on constructive criticism. Your expertise is needed to + ensure that the papers which are published at SciPost achieve the highest-quality + end result achievable. If you have objections to the methods, results or conlusions + in the paper, it is your task as an expert to underline them. + </p> + </li> + </ul> + + <h3 id="refereeGoodReport">The characteristics of a good Report</h3> + <p>There are no fixed rules or expectations, but a good report is typically:</p> + <ul> + <li>constructive and useful to the authors</li> + <li>fair to the authors and respectful of their work</li> + <li>clear</li> + <li>succinct</li> + <li>organized and systematic</li> + <li>properly referenced (if further literature is mentioned)</li> + </ul> + + </div> + + <div class="col-6"> + + <h3 id="refereeFAQ">FAQ</h3> + <ul> + <li> + <h4>Can you include me in your list of referees?</h4> + <p> + Any qualified academic is welcome to perform refereeing work for us. + There are two ways to become a referee: + <ul> + <li>by being explicitly invited by the Editor-in-charge of a Submission</li> + <li>by writing a Contributed Report</li> + </ul> + <br/> + If you are a known expert in your area, the first will inevitably happen at some point. + If you are a Registered Contributor at SciPost, you can contribute a Report on + any Submission currently undergoing refereeing. + </p> + <p> + Should you wish to be permanently removed from our list of referees, + please email our <a href="mailto:edadmin@scipost.org">editorial administration</a>. + </p> + </li> + <li> + <h4>Why should I do it?</h4> + <p> + Simply because it's an essential aspect of your academic job, + and because it's ultimately your duty as a scientist. As an author, you benefit from others' + work as referees; academic collegiality should thus incite you to return the favour. + </p> + <p> + That said, there is a substantial benefit to perfoming refereeing work at SciPost. + Your Report will be made citable (through giving it a DOI). You can then even + quantify your refereeing activity in your CV if you so wish. View this as a mark + of respect for the valuable work which you will put into it. + </p> + </li> + <li> + <h4>Will you protect my anonymity as a referee?</h4> + <p> + Yes. + It is very important to avoid a simple confusion here: + you can certainly elect to be (and forever remain) anonymous + when you referee. Our <a href="{% url 'scipost:FAQ' %}#pwr">peer-witnessed refereeing</a> + method only means that we insist on making the Report + <em>contents</em> publicly available, not the name of the person who wrote them. + </p> + <p> + That said, we give you the possibility (and would like to explicitly encourage you) + to sign your + Reports. It is entirely possible to be very critical of a paper, while revealing your + identity (after all, we academics do this all the time during conferences). You might also find + that your critical comments enjoy an even better reception from the authors if you + do let them know who is making them. If you are unsure, by all means do remain anonymous. + You can always, at any point in the future, change the setting of any given Report + to non-anonymous (from your <a href="{% url 'scipost:personal_page' %}">personal page</a>, + under the refereeing tab). + </p> + </li> + <li> + <h4>Will you pay me to write a Report?</h4> + <p> + No. SciPost is not a money-making enterprise (neither for us, nor for you). + </p> + </li> + <li> + <h4>How long should it take me?</h4> + <p> + Say reading the paper takes one unit of time. + To do a proper job, you can then easily spend one more unit thinking about it, + perhaps one or two more trying to rederive some results and consulting further literature, + and then another writing your Report. + So to be proud of your work, 4-5 time units is a good indication + (but don't worry, nobody is clocking you). + </p> + </li> + <li> + <h4>What happens if I'm late?</h4> + <p> + We will unleash a plague of locusts onto your household. + No seriously: we understand how busy the life of an academic can be, and how + difficult it can be to schedule everything and meet all deadlines. + Simply note that the Editor-in-charge of a Submission can proceed + with formulating a recommendation + once the refereeing deadline has passed. If your invited Report is delivered late, it will + still be accepted and published, but might not weigh in on the publication decision + by the College (depending on the circumstances), and might thus miss its chance of + providing the authors with useful input. + </p> + </li> + </ul> + </div> + + +</div> + + +<h2 class="highlight" id="forAuthors">For authors</h2> + +<div class="row"> + <div class="col-6"> + <h3 id="authorsReact">How to react to a Report?</h3> + <ul> + <li> + <h4>Be open to criticism, and read the report carefully</h4> + <p> + Remember that referees have a somewhat unrewarding task. + They do this job for your benefit, not their own. + You can rightfully expect them to treat your work with respect. + In return, you should give proper consideration to their comments and criticisms, + and do your best to address any of the points raised. + </p> + </li> + <li> + <h4>Submit an Author Reply</h4> + <p> + You can submit an Author Reply to a Report pertaining to a Submission for which you + are a recognized author (you can claim any such authorship from your + <a href="{% url 'scipost:personal_page' %}">personal page</a>). + Writing an Author Reply is recommended if there are specific points of a Report which you want to + respond to. You can mention changes you plan to implement in your manuscript which result + from this Report (though your list of changes can also wait for your resubmission letter). + </p> + </li> + <li> + <h4>Upon resubmission, link back to the Reports</h4> + <p> + Hopefully the Reports will have helped you improve your manuscript. + Before resubmitting, prepare a list of changes (which you can then paste in the appropriate + field of the resubmission form) in order for referees and editors to clearly understand + what has (or hasn't) changed in your paper. + </p> + </li> + </ul> + + </div> +</div> + +{% endblock content %} diff --git a/submissions/templates/submissions/sub_and_ref_procedure.html b/submissions/templates/submissions/sub_and_ref_procedure.html index 10e33636d13fb58b14578ba49b11d0ecb87bd1f2..4e035d41f7f5a3d3b8c3f0716ed6322b928d6290 100644 --- a/submissions/templates/submissions/sub_and_ref_procedure.html +++ b/submissions/templates/submissions/sub_and_ref_procedure.html @@ -32,7 +32,6 @@ <li>Make your preprint publicly available on <a href="http://arxiv.org">arXiv.org</a></li> <li>After appearance on arxiv.org, fill the SciPost <a href="{% url 'submissions:submit_manuscript' %}">Submission</a> form, selecting which SciPost Journal to submit to and providing domain and speciality specifications.</li> </ol> - <p>Note that you cannot submit directly to SciPost Physics Select. Submissions to SciPost Physics deemed of superlative quality will be editorially promoted to SPS.</p> </div> </div> @@ -50,7 +49,7 @@ <li>At the end of the refereeing round, submission of Reports on the Submission Page is deactivated. The Editor-in-charge invites the authors to finalize their responses to any submitted Reports and Comments before the Editorial Recommendation is formulated.</li> <li>Reports, Replies and Comments are then assessed by the Editor-in-charge, who formulates an editorial recommendation. <ol> - <li>If the editorial recommendation is for publication or rejection, it is forwarded to the Editorial College, which takes the binding editorial decision by consultation of the relevant specialty's Editorial Fellows. If the recommendation is to publish the paper as Select (targeting approximately the top 10% of articles considered), Editorial Fellows of all specialties get the chance to support or object to this promotion.</li> + <li>If the editorial recommendation is for publication or rejection, it is forwarded to the Editorial College, which takes the binding editorial decision by consultation of the relevant specialty's Editorial Fellows. If the recommendation is to publish the paper as Tier I (targeting approximately the top 10% of articles considered), Editorial Fellows of all specialties get the chance to support or object to this promotion.</li> <li>If the Editorial Recommendation is for a minor or major revision, it is communicated directly to the authors, who must then resubmit. Upon resubmission, the Editor-in-charge can either start a new refereeing round or directly formulate a new editorial recommendation.</li> </ol></li> <li>After being taken by the Editorial College, the editorial decision (consisting in either a publication offer, or rejection) is communicated to the Authors.</li> diff --git a/submissions/urls.py b/submissions/urls.py index e008858ce532e308c43239d7d2c2f66f939d92c4..1bc1334823ad42f1331593cbe67cc6caf5d99115 100644 --- a/submissions/urls.py +++ b/submissions/urls.py @@ -19,6 +19,9 @@ urlpatterns = [ url(r'^author_guidelines$', TemplateView.as_view(template_name='submissions/author_guidelines.html'), name='author_guidelines'), + url(r'^refereeing_guidelines$', + TemplateView.as_view(template_name='submissions/refereeing_guidelines.html'), + name='refereeing_guidelines'), url(r'^{regex}/$'.format(regex=SUBMISSIONS_NO_VN_REGEX), views.submission_detail_wo_vn_nr, name='submission_wo_vn_nr'), url(r'^{regex}/$'.format(regex=SUBMISSIONS_COMPLETE_REGEX), diff --git a/submissions/views.py b/submissions/views.py index 08c2b86a2ca9be7ad8fa5c65816649250871b2f5..f7bf9c8f08c03002ec7b000bee29c2f7c8d7b20b 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -786,7 +786,8 @@ def recruit_referee(request, arxiv_identifier_w_vn_nr): request.POST or None, request=request, submission=submission) if ref_recruit_form.is_valid(): referee_invitation, registration_invitation = ref_recruit_form.save(commit=False) - mail_request = MailEditingSubView(request, mail_code='registration_invitation_refereeing', + mail_request = MailEditingSubView(request, + mail_code='referees/invite_unregistered_to_referee', instance=referee_invitation) mail_request.add_form(ref_recruit_form) if mail_request.is_valid(): @@ -839,7 +840,7 @@ def send_refereeing_invitation(request, arxiv_identifier_w_vn_nr, contributor_id date_invited=timezone.now(), invited_by=request.user.contributor) - mail_request = MailEditingSubView(request, mail_code='submissions_referee_invite', + mail_request = MailEditingSubView(request, mail_code='referees/invite_contributor_to_referee', invitation=invitation) if mail_request.is_valid(): invitation.save() @@ -869,7 +870,7 @@ def ref_invitation_reminder(request, arxiv_identifier_w_vn_nr, invitation_id): invitation.nr_reminders += 1 invitation.date_last_reminded = timezone.now() invitation.save() - SubmissionUtils.load({'invitation': invitation}) + SubmissionUtils.load({'invitation': invitation}, request) if invitation.referee is not None: SubmissionUtils.send_ref_reminder_email() else: diff --git a/mails/templates/mail_templates/citation_notification.html b/templates/email/citation_notification.html similarity index 100% rename from mails/templates/mail_templates/citation_notification.html rename to templates/email/citation_notification.html diff --git a/mails/templates/mail_templates/citation_notification.json b/templates/email/citation_notification.json similarity index 100% rename from mails/templates/mail_templates/citation_notification.json rename to templates/email/citation_notification.json diff --git a/templates/email/eic/referee_unresponsive.html b/templates/email/eic/referee_unresponsive.html new file mode 100644 index 0000000000000000000000000000000000000000..97ca44d324acda8725858bd18019671938bc38a5 --- /dev/null +++ b/templates/email/eic/referee_unresponsive.html @@ -0,0 +1,21 @@ +<p> + Dear {{invitation.submission.editor_in_charge.get_title_display}} {{invitation.submission.editor_in_charge.user.last_name}}, +</p> +<p> + Referee {{ invitation.get_title_display }} {{ invitation.last_name }}, whom you invited to referee + Submission + <br><br> + <a href="https://scipost.org{{invitation.submission.get_absolute_url}}">{{invitation.submission.title}}</a> + <br>by {{invitation.submission.author_list}}<br> + (see https://scipost.org{{ invitation.submission.get_absolute_url }} - first submitted {{ invitation.submission.original_submission_date|date:"d M Y" }}),<br> + has failed to respond to the invitation (after being sent {{invitation.nr_reminders}} reminders). +</p> +<p> + Unless you are confident that this referee will really deliver a Report, and to ensure that this Submission does not suffer from unnecessary delays in processing, you should ideally invite a replacement referee using the tols on the <a href="https://scipost.org{% url 'submissions:editorial_page' invitation.submission.arxiv_identifier_w_vn_nr %}">Editorial page</a>. +</p> +<p> + We are very grateful for your prompt action. + <br><br> + SciPost Editorial Administration +</p> +{% include 'email/_footer.html' %} diff --git a/templates/email/eic/referee_unresponsive.json b/templates/email/eic/referee_unresponsive.json new file mode 100644 index 0000000000000000000000000000000000000000..3a05aa815fb6509000cc04ebb4eb087f43a0b2b6 --- /dev/null +++ b/templates/email/eic/referee_unresponsive.json @@ -0,0 +1,10 @@ +{ + "subject": "SciPost: unresponsive referee", + "to_address_bup": "submission.editor_in_charge.user.email", + "bcc_to_bup": "admin@scipost.org", + "to_address": "J.S.Caux@uva.nl", + "bcc_to": "J.S.Caux@uva.nl", + "from_address_name": "SciPost Refereeing", + "from_address": "refereeing@scipost.org", + "context_object": "invitation" +} diff --git a/mails/templates/mail_templates/partners_followup_mail.html b/templates/email/partners_followup_mail.html similarity index 100% rename from mails/templates/mail_templates/partners_followup_mail.html rename to templates/email/partners_followup_mail.html diff --git a/mails/templates/mail_templates/partners_followup_mail.json b/templates/email/partners_followup_mail.json similarity index 100% rename from mails/templates/mail_templates/partners_followup_mail.json rename to templates/email/partners_followup_mail.json diff --git a/mails/templates/mail_templates/partners_initial_mail.html b/templates/email/partners_initial_mail.html similarity index 100% rename from mails/templates/mail_templates/partners_initial_mail.html rename to templates/email/partners_initial_mail.html diff --git a/mails/templates/mail_templates/partners_initial_mail.json b/templates/email/partners_initial_mail.json similarity index 100% rename from mails/templates/mail_templates/partners_initial_mail.json rename to templates/email/partners_initial_mail.json diff --git a/mails/templates/mail_templates/production_send_proofs.html b/templates/email/production_send_proofs.html similarity index 100% rename from mails/templates/mail_templates/production_send_proofs.html rename to templates/email/production_send_proofs.html diff --git a/mails/templates/mail_templates/production_send_proofs.json b/templates/email/production_send_proofs.json similarity index 100% rename from mails/templates/mail_templates/production_send_proofs.json rename to templates/email/production_send_proofs.json diff --git a/mails/templates/mail_templates/publication_ready.html b/templates/email/publication_ready.html similarity index 100% rename from mails/templates/mail_templates/publication_ready.html rename to templates/email/publication_ready.html diff --git a/mails/templates/mail_templates/publication_ready.json b/templates/email/publication_ready.json similarity index 100% rename from mails/templates/mail_templates/publication_ready.json rename to templates/email/publication_ready.json diff --git a/mails/templates/mail_templates/submissions_referee_invite.html b/templates/email/referees/invite_contributor_to_referee.html similarity index 87% rename from mails/templates/mail_templates/submissions_referee_invite.html rename to templates/email/referees/invite_contributor_to_referee.html index 27ac15c1b3bfd5284f046491a34074b8ab0aab51..250e6f89933cdf90314d867d907a4f7563d52cd8 100644 --- a/mails/templates/mail_templates/submissions_referee_invite.html +++ b/templates/email/referees/invite_contributor_to_referee.html @@ -1,30 +1,25 @@ <p> Dear {{invitation.referee.get_title_display}} {{invitation.referee.user.last_name}}, </p> - <p> We have received a Submission to SciPost which, in view of your expertise and on behalf of the Editor-in-charge {{invitation.submission.editor_in_charge.get_title_display}} {{invitation.submission.editor_in_charge.user.last_name}}, we would like to invite you to referee: <br><br> <a href="https://scipost.org{{invitation.submission.get_absolute_url}}">{{invitation.submission.title}}</a> - <br>by {{invitation.submission.author_list}}. + <br>by {{invitation.submission.author_list}}<br> + (see https://scipost.org{{ invitation.submission.get_absolute_url }} - first submitted {{ invitation.submission.original_submission_date|date:"d M Y" }}). </p> - <p> Please <a href="https://scipost.org/submissions/accept_or_decline_ref_invitations">accept or decline</a> (login required) this invitation as soon as possible (ideally within the next 2 days). </p> - <p> If you accept, your report can be submitted by simply clicking on the "Contribute a Report" link on <a href="https://scipost.org{{invitation.submission.get_absolute_url}}">the Submission Page</a> before the reporting deadline (currently set at {{invitation.submission.reporting_deadline|date:'d-m-Y'}}; your report will be automatically recognized as an invited report). </p> - <p> You might want to make sure you are familiar with our refereeing <a href="https://scipost.org/journals/journals_terms_and_conditions">code of conduct</a> and with <a href="https://scipost.org/submissions/sub_and_ref_procedure">the refereeing procedure</a>. </p> - <p> We would be extremely grateful for your contribution, and thank you in advance for your consideration. - <br> + <br><br> The SciPost Team. </p> - {% include 'email/_footer.html' %} diff --git a/mails/templates/mail_templates/submissions_referee_invite.json b/templates/email/referees/invite_contributor_to_referee.json similarity index 100% rename from mails/templates/mail_templates/submissions_referee_invite.json rename to templates/email/referees/invite_contributor_to_referee.json diff --git a/templates/email/referees/invite_contributor_to_referee_reminder1.html b/templates/email/referees/invite_contributor_to_referee_reminder1.html new file mode 100644 index 0000000000000000000000000000000000000000..4d55fd2fdcdf7a93bb6e4e5016e518593c83f70d --- /dev/null +++ b/templates/email/referees/invite_contributor_to_referee_reminder1.html @@ -0,0 +1,30 @@ +<h3>Re: refereeing invitation. First automatic reminder</h3> +<p> + Dear {{invitation.referee.get_title_display}} {{invitation.referee.user.last_name}}, +</p> +<p> + Recently, on behalf of the Editor-in-charge {{ invitation.submission.editor_in_charge.get_title_display }} {{ invitation.submission.editor_in_charge.user.last_name }}, we invited you to consider refereeing a Submission to {{ invitation.submission.get_submitted_to_journal_display }}, namely<br><br> + {{ invitation.submission.title }}<br> + by {{ invitation.submission.author_list }}<br> + (see https://scipost.org{{ invitation.submission.get_absolute_url }} - first submitted {{ invitation.submission.original_submission_date|date:"d M Y" }}). +</p> +<p> + We are still awaiting your response to this invitation. + To ensure timely processing of the submission (out of respect for the authors), + could you please let us know whether we can count on your expertise? +</p> +<p> + Please <a href="https://scipost.org/submissions/accept_or_decline_ref_invitations">accept or decline</a> (login required) this invitation. +</p> +<p> + If you accept, your report can be submitted by simply clicking on the "Contribute a Report" link on <a href="https://scipost.org{{invitation.submission.get_absolute_url}}">the Submission Page</a> before the reporting deadline (currently set at {{invitation.submission.reporting_deadline|date:'d M Y'}}; your report will be automatically recognized as an invited report). +</p> +<p> + You might want to make sure you are familiar with our <a href="{% url 'submissions:sub_and_ref_procedure' %}">refereeing procedure</a>, <a href="{% url 'submissions:refereeing_guidelines' %}">refereeing guidelines</a> and <a href="{% url 'journals:journals_terms_and_conditions' %}#referee_code_of_conduct">referee code of conduct</a>. +</p> +<p> + We would be extremely grateful for your contribution, and thank you in advance for your consideration. + <br><br> + The SciPost Team. +</p> +{% include 'email/_footer.html' %} diff --git a/templates/email/referees/invite_contributor_to_referee_reminder1.json b/templates/email/referees/invite_contributor_to_referee_reminder1.json new file mode 100644 index 0000000000000000000000000000000000000000..3332fb790fc42a54fcf619ad64dacfffd20d4775 --- /dev/null +++ b/templates/email/referees/invite_contributor_to_referee_reminder1.json @@ -0,0 +1,10 @@ +{ + "subject": "SciPost: refereeing request reminder", + "to_address_bup": "referee.user.email", + "bcc_to_bup": "submission.editor_in_charge.user.email,admin@scipost.org", + "to_address": "J.S.Caux@uva.nl", + "bcc_to": "J.S.Caux@uva.nl", + "from_address_name": "SciPost Refereeing", + "from_address": "refereeing@scipost.org", + "context_object": "invitation" +} diff --git a/templates/email/referees/invite_contributor_to_referee_reminder2.html b/templates/email/referees/invite_contributor_to_referee_reminder2.html new file mode 100644 index 0000000000000000000000000000000000000000..d75dce8fbdff7dc6b6efc16342f8972a1a86b6a9 --- /dev/null +++ b/templates/email/referees/invite_contributor_to_referee_reminder2.html @@ -0,0 +1,30 @@ +<h3>Re: refereeing invitation. Second (and last) automatic reminder</h3> +<p> + Dear {{invitation.referee.get_title_display}} {{invitation.referee.user.last_name}}, +</p> +<p> + Recently, on behalf of the Editor-in-charge {{ invitation.submission.editor_in_charge.get_title_display }} {{ invitation.submission.editor_in_charge.user.last_name }}, we invited you to consider refereeing a Submission to {{ invitation.submission.get_submitted_to_journal_display }}, namely<br><br> + {{ invitation.submission.title }}<br> + by {{ invitation.submission.author_list }}<br> + (see https://scipost.org{{ invitation.submission.get_absolute_url }} - first submitted {{ invitation.submission.original_submission_date|date:"d M Y" }}). +</p> +<p> + We are still awaiting your response to this invitation. + To ensure timely processing of the submission (out of respect for the authors), + could you please let us know whether we can count on your expertise? +</p> +<p> + Please <a href="https://scipost.org/submissions/accept_or_decline_ref_invitations">accept or decline</a> (login required) this invitation. +</p> +<p> + If you accept, your report can be submitted by simply clicking on the "Contribute a Report" link on <a href="https://scipost.org{{invitation.submission.get_absolute_url}}">the Submission Page</a> before the reporting deadline (currently set at {{invitation.submission.reporting_deadline|date:'d M Y'}}; your report will be automatically recognized as an invited report). +</p> +<p> + You might want to make sure you are familiar with our <a href="{% url 'submissions:sub_and_ref_procedure' %}">refereeing procedure</a>, <a href="{% url 'submissions:refereeing_guidelines' %}">refereeing guidelines</a> and <a href="{% url 'journals:journals_terms_and_conditions' %}#referee_code_of_conduct">referee code of conduct</a>. +</p> +<p> + We would be extremely grateful for your contribution, and thank you in advance for your consideration. + <br><br> + The SciPost Team. +</p> +{% include 'email/_footer.html' %} diff --git a/templates/email/referees/invite_contributor_to_referee_reminder2.json b/templates/email/referees/invite_contributor_to_referee_reminder2.json new file mode 100644 index 0000000000000000000000000000000000000000..3332fb790fc42a54fcf619ad64dacfffd20d4775 --- /dev/null +++ b/templates/email/referees/invite_contributor_to_referee_reminder2.json @@ -0,0 +1,10 @@ +{ + "subject": "SciPost: refereeing request reminder", + "to_address_bup": "referee.user.email", + "bcc_to_bup": "submission.editor_in_charge.user.email,admin@scipost.org", + "to_address": "J.S.Caux@uva.nl", + "bcc_to": "J.S.Caux@uva.nl", + "from_address_name": "SciPost Refereeing", + "from_address": "refereeing@scipost.org", + "context_object": "invitation" +} diff --git a/templates/email/referees/invite_unregistered_to_referee.html b/templates/email/referees/invite_unregistered_to_referee.html new file mode 100644 index 0000000000000000000000000000000000000000..99691bc6f6c3445ceb0b5300ca96f50eaf833c18 --- /dev/null +++ b/templates/email/referees/invite_unregistered_to_referee.html @@ -0,0 +1,35 @@ +Dear {{ invitation.get_title_display }} {{ invitation.last_name }}, +<br><br> +<p> + On behalf of the Editor-in-charge {{ invitation.submission.editor_in_charge.get_title_display }} {{ invitation.submission.editor_in_charge.user.last_name }}, we would like to invite you to referee a Submission to {{ invitation.submission.get_submitted_to_journal_display }}, namely<br><br> + {{ invitation.submission.title }}<br> + by {{ invitation.submission.author_list }}<br> + (see https://scipost.org{{ invitation.submission.get_absolute_url }} - first submitted {{ invitation.submission.original_submission_date|date:"d M Y" }}). +</p> +<p> + To ensure timely processing of the submission (out of respect for the authors), + we would appreciate a quick accept/decline response from you, ideally within the next 2 days. +</p> +<p> + If you are <strong>not</strong> able to provide a Report, you can let us know by simply <a href="https://scipost.org/submissions/decline_ref_invitation/{{ invitation.invitation_key }}"> clicking here</a>. +</p> +<p> + If you are able to provide a Report, you can confirm this after registering and logging in (you will automatically be prompted for a confirmation). +</p> +<p> + We would thus hereby like to cordially invite you to become a Contributor on SciPost (this is required in order to deliver reports; our records show that you are not yet registered); + for your convenience, we have prepared a pre-filled <a href="https://scipost.org/invitation/{{ invitation.invitation_key }}">registration form</a> for you. + After activation of your registration, you will be allowed to contribute, in particular by providing referee reports. +</p> +<p> + You might want to make sure you are familiar with our <a href="{% url 'submissions:sub_and_ref_procedure' %}">refereeing procedure</a>, <a href="{% url 'submissions:refereeing_guidelines' %}">refereeing guidelines</a> and <a href="{% url 'journals:journals_terms_and_conditions' %}#referee_code_of_conduct">referee code of conduct</a>. +</p> +<p> + We very much hope that we can count on your expertise, + <br> + Many thanks in advance, + <br><br> + The SciPost Team +</p> + +{% include 'email/_footer.html' %} diff --git a/mails/templates/mail_templates/registration_invitation_refereeing.json b/templates/email/referees/invite_unregistered_to_referee.json similarity index 76% rename from mails/templates/mail_templates/registration_invitation_refereeing.json rename to templates/email/referees/invite_unregistered_to_referee.json index 7623f59ab523020b8df56d4c8d1712fdba7125af..84094ac0f51e622df367b2717aa381fe18d41dd5 100644 --- a/mails/templates/mail_templates/registration_invitation_refereeing.json +++ b/templates/email/referees/invite_unregistered_to_referee.json @@ -1,5 +1,5 @@ { - "subject": "SciPost: referee and registration invitation", + "subject": "SciPost: refereeing and registration invitation", "to_address": "email_address", "bcc_to": "invited_by.email,admin@scipost.org", "from_address_name": "SciPost Refereeing", diff --git a/templates/email/referees/invite_unregistered_to_referee_reminder1.html b/templates/email/referees/invite_unregistered_to_referee_reminder1.html new file mode 100644 index 0000000000000000000000000000000000000000..8ff419c05335556489c3b4d2c35ddc10b443c683 --- /dev/null +++ b/templates/email/referees/invite_unregistered_to_referee_reminder1.html @@ -0,0 +1,38 @@ +<h3>Re: refereeing invitation. First automatic reminder</h3> +<p> + Dear {{ invitation.get_title_display }} {{ invitation.last_name }}, +</p> +<p> + Recently, on behalf of the Editor-in-charge {{ invitation.submission.editor_in_charge.get_title_display }} {{ invitation.submission.editor_in_charge.user.last_name }}, we invited you to consider refereeing a Submission to {{ invitation.submission.get_submitted_to_journal_display }}, namely<br><br> + {{ invitation.submission.title }}<br> + by {{ invitation.submission.author_list }}<br> + (see https://scipost.org{{ invitation.submission.get_absolute_url }} - first submitted {{ invitation.submission.original_submission_date|date:"d M Y" }}). +</p> +<p> + We are still awaiting your response to this invitation. + To ensure timely processing of the submission (out of respect for the authors), + could you please let us know whether we can count on your expertise? +</p> +<p> + If you are <strong>not</strong> able to provide a Report, you can let us know by simply <a href="https://scipost.org/submissions/decline_ref_invitation/{{ invitation.invitation_key }}"> clicking here</a>. +</p> +<p> + If you are able to provide a Report, you can confirm this after registering and logging in (you will automatically be prompted for a confirmation). +</p> +<p> + We would thus hereby like to cordially invite you to become a Contributor on SciPost (this is required in order to deliver reports; our records show that you are not yet registered); + for your convenience, we have prepared a pre-filled <a href="https://scipost.org/invitation/{{ invitation.invitation_key }}">registration form</a> for you. + After activation of your registration, you will be allowed to contribute, in particular by providing referee reports. +</p> +<p> + You might want to make sure you are familiar with our <a href="{% url 'submissions:sub_and_ref_procedure' %}">refereeing procedure</a>, <a href="{% url 'submissions:refereeing_guidelines' %}">refereeing guidelines</a> and <a href="{% url 'journals:journals_terms_and_conditions' %}#referee_code_of_conduct">referee code of conduct</a>. +</p> +<p> + We very much hope that we can count on your expertise, + <br> + Many thanks in advance, + <br><br> + The SciPost Team +</p> + +{% include 'email/_footer.html' %} diff --git a/templates/email/referees/invite_unregistered_to_referee_reminder1.json b/templates/email/referees/invite_unregistered_to_referee_reminder1.json new file mode 100644 index 0000000000000000000000000000000000000000..1d88048515b7c423572100119857c0f08a3ad8a1 --- /dev/null +++ b/templates/email/referees/invite_unregistered_to_referee_reminder1.json @@ -0,0 +1,10 @@ +{ + "subject": "SciPost: refereeing and registration invitation reminder", + "to_address_bup": "J.S.Caux@uva.nl", + "bcc_to_bup": "J.S.Caux@uva.nl", + "to_address": "email_address", + "bcc_to": "invited_by.email,admin@scipost.org", + "from_address_name": "SciPost Refereeing", + "from_address": "refereeing@scipost.org", + "context_object": "invitation" +} diff --git a/templates/email/referees/invite_unregistered_to_referee_reminder2.html b/templates/email/referees/invite_unregistered_to_referee_reminder2.html new file mode 100644 index 0000000000000000000000000000000000000000..124000e206ab468c1cd2ae8f9af41f32fd055615 --- /dev/null +++ b/templates/email/referees/invite_unregistered_to_referee_reminder2.html @@ -0,0 +1,38 @@ +<h3>Re: refereeing invitation. Second (and last) automatic reminder</h3> +<p> + Dear {{ invitation.get_title_display }} {{ invitation.last_name }}, +</p> +<p> + Recently, on behalf of the Editor-in-charge {{ invitation.submission.editor_in_charge.get_title_display }} {{ invitation.submission.editor_in_charge.user.last_name }}, we invited you to consider refereeing a Submission to {{ invitation.submission.get_submitted_to_journal_display }}, namely<br><br> + {{ invitation.submission.title }}<br> + by {{ invitation.submission.author_list }}<br> + (see https://scipost.org{{ invitation.submission.get_absolute_url }} - first submitted {{ invitation.submission.original_submission_date|date:"d M Y" }}). +</p> +<p> + We are still awaiting your response to this invitation. + To ensure timely processing of the submission (out of respect for the authors), + could you please let us know whether we can count on your expertise? +</p> +<p> + If you are <strong>not</strong> able to provide a Report, you can let us know by simply <a href="https://scipost.org/submissions/decline_ref_invitation/{{ invitation.invitation_key }}"> clicking here</a>. +</p> +<p> + If you are able to provide a Report, you can confirm this after registering and logging in (you will automatically be prompted for a confirmation). +</p> +<p> + We would thus hereby like to cordially invite you to become a Contributor on SciPost (this is required in order to deliver reports; our records show that you are not yet registered); + for your convenience, we have prepared a pre-filled <a href="https://scipost.org/invitation/{{ invitation.invitation_key }}">registration form</a> for you. + After activation of your registration, you will be allowed to contribute, in particular by providing referee reports. +</p> +<p> + You might want to make sure you are familiar with our <a href="{% url 'submissions:sub_and_ref_procedure' %}">refereeing procedure</a>, <a href="{% url 'submissions:refereeing_guidelines' %}">refereeing guidelines</a> and <a href="{% url 'journals:journals_terms_and_conditions' %}#referee_code_of_conduct">referee code of conduct</a>. +</p> +<p> + We very much hope that we can count on your expertise, + <br> + Many thanks in advance, + <br><br> + The SciPost Team +</p> + +{% include 'email/_footer.html' %} diff --git a/templates/email/referees/invite_unregistered_to_referee_reminder2.json b/templates/email/referees/invite_unregistered_to_referee_reminder2.json new file mode 100644 index 0000000000000000000000000000000000000000..7619266b69008d1d395deea9a98f2b495502f923 --- /dev/null +++ b/templates/email/referees/invite_unregistered_to_referee_reminder2.json @@ -0,0 +1,10 @@ +{ + "subject": "SciPost: refereeing and registration invitation reminder", + "to_address_bup": "email_address", + "bcc_to_bup": "invited_by.email,admin@scipost.org", + "to_address": "email_address", + "bcc_to": "invited_by.email,admin@scipost.org", + "from_address_name": "SciPost Refereeing", + "from_address": "refereeing@scipost.org", + "context_object": "invitation" +} diff --git a/templates/email/referees/remind_referee_deadline_1week.html b/templates/email/referees/remind_referee_deadline_1week.html new file mode 100644 index 0000000000000000000000000000000000000000..b9e9f9ddfde78cce804bda144d075de0fb13a05d --- /dev/null +++ b/templates/email/referees/remind_referee_deadline_1week.html @@ -0,0 +1,16 @@ +<p> + Dear {{invitation.referee.get_title_display}} {{invitation.referee.user.last_name}}, +</p> +<p> + This is a simple email to remind you of the approaching deadline (in one week) to send a Report on + <br><br> + <a href="https://scipost.org{{invitation.submission.get_absolute_url}}">{{invitation.submission.title}}</a> + <br>by {{invitation.submission.author_list}}<br> + (see https://scipost.org{{ invitation.submission.get_absolute_url }} - first submitted {{ invitation.submission.original_submission_date|date:"d M Y" }}). +</p> +<p> + Thank you in advance, + <br> + The SciPost Team. +</p> +{% include 'email/_footer.html' %} diff --git a/templates/email/referees/remind_referee_deadline_1week.json b/templates/email/referees/remind_referee_deadline_1week.json new file mode 100644 index 0000000000000000000000000000000000000000..0d8566194c873253ff92023fbdc5a02f94d173e4 --- /dev/null +++ b/templates/email/referees/remind_referee_deadline_1week.json @@ -0,0 +1,10 @@ +{ + "subject": "SciPost: refereeing deadline approaching", + "to_address_bup": "referee.user.email", + "bcc_to_bup": "submission.editor_in_charge.user.email,admin@scipost.org", + "to_address": "referee.user.email", + "bcc_to": "submission.editor_in_charge.user.email,admin@scipost.org", + "from_address_name": "SciPost Refereeing", + "from_address": "refereeing@scipost.org", + "context_object": "invitation" +} diff --git a/mails/templates/mail_templates/registration_invitation.html b/templates/email/registration_invitation.html similarity index 100% rename from mails/templates/mail_templates/registration_invitation.html rename to templates/email/registration_invitation.html diff --git a/mails/templates/mail_templates/registration_invitation.json b/templates/email/registration_invitation.json similarity index 100% rename from mails/templates/mail_templates/registration_invitation.json rename to templates/email/registration_invitation.json diff --git a/templates/email/registration_invitation_reminder.html b/templates/email/registration_invitation_reminder.html new file mode 100644 index 0000000000000000000000000000000000000000..194bcffc022c73da44705e97b108f65b0fb803c5 --- /dev/null +++ b/templates/email/registration_invitation_reminder.html @@ -0,0 +1,4 @@ +<strong>Reminder: Invitation to SciPost</strong> +<br> +<br> +{% include 'email/registration_invitation.html' %} diff --git a/mails/templates/mail_templates/registration_invitation_reminder.json b/templates/email/registration_invitation_reminder.json similarity index 100% rename from mails/templates/mail_templates/registration_invitation_reminder.json rename to templates/email/registration_invitation_reminder.json diff --git a/mails/templates/mail_templates/submissions_assignment_failed.html b/templates/email/submissions_assignment_failed.html similarity index 100% rename from mails/templates/mail_templates/submissions_assignment_failed.html rename to templates/email/submissions_assignment_failed.html diff --git a/mails/templates/mail_templates/submissions_assignment_failed.json b/templates/email/submissions_assignment_failed.json similarity index 100% rename from mails/templates/mail_templates/submissions_assignment_failed.json rename to templates/email/submissions_assignment_failed.json