diff --git a/common/utils.py b/common/utils.py index f5293015c3ca7c8182515e2c5dea967199606d00..4a778d1002428a3cd1c2da6823a7c137df54f39c 100644 --- a/common/utils.py +++ b/common/utils.py @@ -7,12 +7,13 @@ class BaseMailUtil(object): mail_sender_title = '' @classmethod - def load(cls, _dict): + def load(cls, _dict, request=None): cls._context = _dict + cls._context['request'] = request for var_name in _dict: setattr(cls, var_name, _dict[var_name]) - def _send_mail(cls, template_name, recipients, subject): + def _send_mail(cls, template_name, recipients, subject, extra_bcc=None): """ Call this method from a classmethod to send emails. The template will have context variables defined appended from the `load` method. @@ -29,8 +30,15 @@ class BaseMailUtil(object): html_template = loader.get_template('email/%s_html.html' % template_name) message = template.render(Context(cls._context)) html_message = html_template.render(Context(cls._context)) + bcc_list = [cls.mail_sender] + if extra_bcc: + bcc_list += extra_bcc email = EmailMultiAlternatives( - 'SciPost: ' + subject, message, '%s <%s>' % (cls.mail_sender_title, cls.mail_sender), - recipients, bcc=[cls.mail_sender], reply_to=[cls.mail_sender]) + 'SciPost: ' + subject, # message, + message, + '%s <%s>' % (cls.mail_sender_title, cls.mail_sender), + recipients, + bcc=bcc_list, + reply_to=[cls.mail_sender]) email.attach_alternative(html_message, 'text/html') email.send(fail_silently=False) diff --git a/scipost/management/commands/export_contributors.py b/scipost/management/commands/export_contributors.py index 889698b316759dc4055a850194ecece0878f4de4..153ace0457f0ce289e232cecbe259e0a62933075 100644 --- a/scipost/management/commands/export_contributors.py +++ b/scipost/management/commands/export_contributors.py @@ -32,7 +32,9 @@ class Command(BaseCommand): fieldnames = ['first_name', 'last_name', 'email_address'] # Query - queryset = Contributor.objects.filter(user__is_active=True, status=CONTRIBUTOR_NORMAL) + queryset = Contributor.objects.filter(user__is_active=True, + status=CONTRIBUTOR_NORMAL, + accepts_SciPost_emails=True) if kwargs['group']: queryset = queryset.filter(user__groups__name=kwargs['group']) diff --git a/scipost/views.py b/scipost/views.py index 0412865861c35f32090c89fa766322d850f72107..d3ad00c66f0084805cc474d2741a24ef3f580771 100644 --- a/scipost/views.py +++ b/scipost/views.py @@ -206,7 +206,7 @@ def register(request): form = RegistrationForm(request.POST or None) if form.is_valid(): contributor = form.create_and_save_contributor() - Utils.load({'contributor': contributor}) + Utils.load({'contributor': contributor}, request) Utils.send_registration_email() # Disable invitations related to the new Contributor @@ -281,7 +281,7 @@ def request_new_activation_link(request, contributor_id, key): if request.GET.get('confirm', False): # Generate a new email activation key and link contributor.generate_key() - Utils.load({'contributor': contributor}) + Utils.load({'contributor': contributor}, request) Utils.send_new_activation_link_email() context = { diff --git a/submissions/templates/submissions/_form_submission_cycle_choice.html b/submissions/templates/submissions/_form_submission_cycle_choice.html index 8b1a2d5b998df1dc54a8da16ba3bde1d38ffe6e1..3cfbd7176a6859a1a4a429a51acb45723fd894e9 100644 --- a/submissions/templates/submissions/_form_submission_cycle_choice.html +++ b/submissions/templates/submissions/_form_submission_cycle_choice.html @@ -1,77 +1,79 @@ +{% load bootstrap %} <form method="post" action="{% url 'submissions:cycle_confirmation' submission.arxiv_identifier_w_vn_nr %}"> {% csrf_token %} - <h3 class="mb-2">This submission is a resubmission, please choose which submission cycle to proceed with</h3> - <div class="card-deck mb-5" id="id_submission_cycle"> - {% for choice in form.refereeing_cycle %} - <div class="card radio-option" for="{{choice.id_for_label}}" data-reinvite="{% if choice.choice_value == 'direct_rec' %}0{% else %}1{% endif %}"> - <div class="card-block text-center"> - <span class="hidden-xs-up">{{choice.tag}}</span> - - <h3 class="card-title">{{choice.choice_label}}</h3> - <p class="card-text text-muted"> - {% if choice.choice_value == 'short' %} - Run a speedy refereeing round: two weeks, with option of reinviting previous referees - {% elif choice.choice_value == 'direct_rec' %} - Immediately write an editorial recommendation. - {% else %} - Run a new full refereeing round: four weeks as usual, can invite previous referees and/or new ones. - {% endif %} - </p> - <label for="{{choice.id_for_label}}" class="text-blue">Choose this cycle</label> - - </div> - </div> - {% endfor %} + <div class="row"> + <div class="col-12"> + <h3>This submission is a resubmission, please choose which submission cycle to proceed with</h3> + </div> </div> - <div class="card-deck" id="id_referees_reinvite_block" style="display: none;"> - <div class="card"> - <div class="card-block"> - <h3 class="card-title">The following referees were also invited in the last submission</h3> - <h4 class="card-subtitle text-muted pt-0">Please choose who you want to reinvite</h4> - <div class="form-group row" id="id_referees_reinvite"> - <label class="col-form-label col-md-2" for="id_referees_reinvite">Reinvite referees</label> - <div class="col-md-10 multiple-checkbox"> - <ul class="mb-0 list-group list-group-flush"> - {% for referee in form.referees_reinvite.field.queryset %} - <li class="list-group-item py-1"> - <label for="{{form.referees_reinvite.name}}_{{forloop.counter0}}" class="mb-0"> - <input checked="checked" id="{{form.referees_reinvite.name}}_{{forloop.counter0}}" name="{{form.referees_reinvite.name}}" type="checkbox" value="{{referee.id}}"> - <div class="d-inline-block" style="vertical-align: top;"> - {{referee.referee_str}} - <br> - <span class="text-muted">Originally invited on {{referee.date_invited}}</span> - </div> - </label> - </li> - {% endfor %} - </ul> - </div> + + <!-- Refereeing cycle --> + <div class="form-group row"> + <label class="col-form-label col-md-2 ">Refereeing cycle</label> + <div class="col-md-10"> + {% for field in form.refereeing_cycle %} + <div class="radio" data-reinvite="{% if field.choice_value == 'direct_rec' %}0{% else %}1{% endif %}"> + <label for="{{field.id_for_label}}" class="mb-0"> + {{field.tag}} + {{field.choice_label}} + </label> </div> + <p class="help-block text-muted"> + {{ field.help_text|safe }} + {% if field.choice_value == 'short' %} + Run a speedy refereeing round: two weeks, with option of reinviting previous referees + {% elif field.choice_value == 'direct_rec' %} + Immediately write an editorial recommendation. + {% else %} + Run a new full refereeing round: four weeks as usual, can invite previous referees and/or new ones. + {% endif %} + </p> + + {% for error in field.errors %} + <span class="help-block {{ form.error_css_class }}">{{ error }}</span> + {% endfor %} + {% endfor %} + </div> + </div><!-- end refereeing cycle --> + + <!-- Reinvite referees --> + <div id="id_referees_reinvite_block" style="display: none;"> + <div class="row"> + <div class="col-12"> + <h3>The following referees were also invited in the last submission</h3> + <h4 class="text-muted">Please choose who you want to reinvite (an invitation will be automatically emailed to the referee)</h4> </div> </div> + <div class="form-group row"> + <label class="col-form-label col-md-2 ">Reinvite referees</label> + <div class="col-md-10"> + <ul class="list-group list-group-flush"> + {% for referee in form.referees_reinvite.field.queryset %} + <li class="list-group-item py-1"> + <label for="{{form.referees_reinvite.name}}_{{forloop.counter0}}" class="mb-0"> + <input checked="checked" id="{{form.referees_reinvite.name}}_{{forloop.counter0}}" name="{{form.referees_reinvite.name}}" type="checkbox" value="{{referee.id}}"> + <div class="d-inline-block" style="vertical-align: top;"> + {{referee.referee_str}} + <br> + <span class="text-muted">Originally invited on {{referee.date_invited}}</span> + </div> + </label> + </li> + {% endfor %} + </ul> + </div> + </div><!-- end reinvite referees --> </div> <input type="submit" class="btn btn-primary" value="Confirm choice"> </form> <script> $(function(){ - $('#id_submission_cycle .radio-option').on('click change', function(){ - var radio_clicked = $(this).find('input[type="radio"]'); - - // Uncheck all cycles except the one clicked and - $('#id_submission_cycle .radio-option input[type="radio"]') - .prop('checked', false) - .filter(radio_clicked) - .prop('checked', true); - - // Toggle classes of cards - $('#id_submission_cycle .radio-option') - .removeClass('checked') - .filter(this) - .addClass('checked'); + $('[name="{{form.refereeing_cycle.name}}"]').on('click change', function(){ + var reinvite = $('[name="{{form.refereeing_cycle.name}}"]:checked').parents('.radio').attr('data-reinvite') == 1; // Show/hide invitation block - if($(this).attr('data-reinvite') > 0) { + if(reinvite > 0) { $('#id_referees_reinvite_block').show(); } else { $('#id_referees_reinvite_block').hide(); diff --git a/submissions/utils.py b/submissions/utils.py index 2534333d98fcace08ddd93619406c5c5414eea26..fb2039cc6df596f19c5dbce7b37985c794f9ee11 100644 --- a/submissions/utils.py +++ b/submissions/utils.py @@ -94,12 +94,13 @@ class BaseSubmissionCycle: return True - def reinvite_referees(self, referees): + def reinvite_referees(self, referees, request=None): """ Reinvite referees if allowed. This method does not check if it really is - an reinvitation or just a new invitation. + a reinvitation or just a new invitation. """ if self.may_reinvite_referees: + SubmissionUtils.load({'submission': self.submission}) for referee in referees: invitation = referee invitation.pk = None # Duplicate, do not remove the old invitation @@ -107,6 +108,8 @@ class BaseSubmissionCycle: invitation.reset_content() invitation.date_invited = timezone.now() invitation.save() + SubmissionUtils.load({'invitation': invitation}, request) + SubmissionUtils.reinvite_referees_email() def update_deadline(self, period=None): delta_d = period or self.default_days @@ -272,6 +275,21 @@ class SubmissionUtils(BaseMailUtil): atd.deprecated = True atd.save() + @classmethod + def reinvite_referees_email(cls): + """ + Email to be sent to referees when they are being reinvited by the EIC. + + Requires context to contain: + - `invitation` + """ + extra_bcc_list = [cls._context['invitation'].submission.editor_in_charge.user.email] + cls._send_mail(cls, 'submission_cycle_reinvite_referee', + [cls._context['invitation'].email_address], + 'Invitation on resubmission', + extra_bcc=extra_bcc_list) + + @classmethod def send_authors_submission_ack_email(cls): """ Requires loading 'submission' attribute. """ @@ -490,7 +508,7 @@ class SubmissionUtils(BaseMailUtil): 'Submission Page; you will be informed by email of any such Report or ' 'Comment being delivered). In order to facilitate the work of the ' 'Editorial College, we recommend limiting these replies to short ' - 'to-the-point clarifications of any issue raised on your manuscript.\n\n ' + 'to-the-point clarifications of any issue raised on your manuscript.\n\n' 'Please wait for the Editor-in-charge\'s Editorial Recommendation ' 'before any resubmission of your manuscript.' '\n\nTo facilitate metadata handling, we recommend that all authors ' diff --git a/submissions/views.py b/submissions/views.py index 9c3bf34d067a6b8e2e897014505a4f45d9fba423..99eb79e517db0ff148d5620b5000dd9b9abb1151 100644 --- a/submissions/views.py +++ b/submissions/views.py @@ -27,7 +27,6 @@ from .forms import SubmissionIdentifierForm, SubmissionForm, SubmissionSearchFor SubmissionCycleChoiceForm from .utils import SubmissionUtils -from comments.models import Comment from scipost.forms import ModifyPersonalMessageForm, RemarkForm from scipost.models import Contributor, Remark, RegistrationInvitation @@ -170,7 +169,7 @@ class SubmissionCreateView(PermissionRequiredMixin, CreateView): assignment.save() # Send emails - SubmissionUtils.load({'submission': submission}) + SubmissionUtils.load({'submission': submission}, self.request) SubmissionUtils.send_authors_resubmission_ack_email() SubmissionUtils.send_EIC_reappointment_email() else: @@ -333,8 +332,8 @@ def pool(request): .filter(submission__status__in=['put_to_EC_voting'])) recommendations_to_prepare_for_voting = (EICRecommendation.objects .get_for_user_in_pool(request.user) - .filter(submission__status__in= - ['voting_in_preparation'])) + .filter( + submission__status__in=['voting_in_preparation'])) contributor = Contributor.objects.get(user=request.user) assignments_to_consider = EditorialAssignment.objects.filter( to=contributor, accepted=None, deprecated=False) @@ -649,7 +648,7 @@ def cycle_form_submit(request, arxiv_identifier_w_vn_nr): submission = form.save() submission.cycle.update_status() submission.cycle.update_deadline() - submission.cycle.reinvite_referees(form.cleaned_data['referees_reinvite']) + submission.cycle.reinvite_referees(form.cleaned_data['referees_reinvite'], request) messages.success(request, ('<h3>Your choice has been confirmed</h3>' 'The new cycle will be <em>%s</em>' % submission.get_refereeing_cycle_display())) @@ -835,7 +834,7 @@ def accept_or_decline_ref_invitation_ack(request, invitation_id): invitation.accepted = False invitation.refusal_reason = form.cleaned_data['refusal_reason'] invitation.save() - SubmissionUtils.load({'invitation': invitation}) + SubmissionUtils.load({'invitation': invitation}, request) SubmissionUtils.email_referee_response_to_EIC() SubmissionUtils.email_referee_in_response_to_decision() @@ -1031,6 +1030,7 @@ def eic_recommendation(request, arxiv_identifier_w_vn_nr): submission=submission, to=request.user.contributor) assignment.completed = True assignment.save() + messages.success(request, 'Your Editorial Recommendation has been succesfully submitted') return redirect(reverse('submissions:editorial_page', kwargs={'arxiv_identifier_w_vn_nr': arxiv_identifier_w_vn_nr})) @@ -1095,7 +1095,7 @@ def submit_report(request, arxiv_identifier_w_vn_nr): # Update user stats author.nr_reports = Report.objects.filter(author=author).count() author.save() - SubmissionUtils.load({'report': newreport}) + SubmissionUtils.load({'report': newreport}, request) SubmissionUtils.email_EIC_report_delivered() # Why is this session update? diff --git a/templates/email/_footer.html b/templates/email/_footer.html index 41b50b80c1c2e210cb64a45f92fe1ec0658e8826..8dbca35955bcdbb9777d99b3f11f28b6b52ea7ed 100644 --- a/templates/email/_footer.html +++ b/templates/email/_footer.html @@ -4,18 +4,18 @@ <br/> <div style="background-color: #f0f0f0; color: #002B49; align-items: center;"> <div style="display: inline-block; padding: 8px;"> - <a href="https://scipost.org/journals/">Journals</a> + <a href="{{request.get_host}}{% url 'journals:journals' %}">Journals</a> </div> <div style="display: inline-block; padding: 8px;">' - <a href="https://scipost.org/submissions/">Submissions</a> + <a href="{{request.get_host}}{% url 'submissions:submissions' %}">Submissions</a> </div> <div style="display: inline-block; padding: 8px;"> - <a href="https://scipost.org/commentaries/">Commentaries</a> + <a href="{{request.get_host}}{% url 'commentaries:commentaries' %}">Commentaries</a> </div> <div style="display: inline-block; padding: 8px;"> - <a href="https://scipost.org/theses/">Theses</a> + <a href="{{request.get_host}}{% url 'theses:theses' %}">Theses</a> </div> <div style="display: inline-block; padding: 8px;"> - <a href="https://scipost.org/login/">Login</a> + <a href="{{request.get_host}}{% url 'scipost:login' %}">Login</a> </div> </div> diff --git a/templates/email/new_activation_link.html b/templates/email/new_activation_link.html index 3d8def3613888ad4377396c3c11972a053dd946f..755aaddd9f0aae366ba9884b84bbc11624b4746f 100644 --- a/templates/email/new_activation_link.html +++ b/templates/email/new_activation_link.html @@ -2,7 +2,7 @@ Dear {{contributor.get_title_display}} {{contributor.user.last_name}},\n\n Your request for a new email activation link for registration to the SciPost publication portal has been received. You now need to visit this link within the next 48 hours: \n\n -{% url 'scipost:activation' contributor.id contributor.activation_key %} +{{request.get_host}}{% url 'scipost:activation' contributor.id contributor.activation_key %} \n\n Your registration will thereafter be vetted. Many thanks for your interest.\n diff --git a/templates/email/new_activation_link_html.html b/templates/email/new_activation_link_html.html index 8ab56b93af64371f8dda5906ef741bedffa90ddb..48a6e019acecf05d6122fb79e8ddf6ce99525fae 100644 --- a/templates/email/new_activation_link_html.html +++ b/templates/email/new_activation_link_html.html @@ -4,7 +4,7 @@ Your request for a new email activation link for registration to the SciPost publication portal has been received. You now need to visit this link within the next 48 hours: </p> <p> - <a href="{% url 'scipost:activation' contributor.id contributor.activation_key %}">Activate your account</a> + <a href="{{request.get_host}}{% url 'scipost:activation' contributor.id contributor.activation_key %}">Activate your account</a> </p> <p> diff --git a/templates/email/referee_response_to_EIC.html b/templates/email/referee_response_to_EIC.html index e4c185bf57304fb41a0b26488e1a991a4982e3f9..c3e7b18856e90284714941a74d3a529b134c5c5b 100644 --- a/templates/email/referee_response_to_EIC.html +++ b/templates/email/referee_response_to_EIC.html @@ -5,7 +5,7 @@ Referee {{invitation.referee.get_title_display}} {{invitation.referee.user.last_ {{invitation.submission.title}} by {{invitation.submission.author_list}}\n\n {% if not invitation.accepted %} -Please invite another referee from the Submission\'s editorial page at {% url 'submissions:editorial_page' invitation.submission.arxiv_identifier_w_vn_nr %}.\n\n +Please invite another referee from the Submission\'s editorial page at {{request.get_host}}{% url 'submissions:editorial_page' invitation.submission.arxiv_identifier_w_vn_nr %}.\n\n {% endif %} Many thanks for your collaboration,\n diff --git a/templates/email/referee_response_to_EIC_html.html b/templates/email/referee_response_to_EIC_html.html index 2c50f00c02770229387d6797769ecad7de11b1a2..8a8ea2958a74a03a1419863f1d3c56733c7a6a8b 100644 --- a/templates/email/referee_response_to_EIC_html.html +++ b/templates/email/referee_response_to_EIC_html.html @@ -9,7 +9,7 @@ {% if not invitation.accepted %} <p> - Please invite another referee from the Submission's <a href="{% url 'submissions:editorial_page' invitation.submission.arxiv_identifier_w_vn_nr %}">editorial page</a>. + Please invite another referee from the Submission's <a href="{{request.get_host}}{% url 'submissions:editorial_page' invitation.submission.arxiv_identifier_w_vn_nr %}">editorial page</a>. </p> {% endif %} diff --git a/templates/email/registration_request_received.html b/templates/email/registration_request_received.html index d18818fbfc929832f1e7815bf3771bb675e3a313..47d9124523bc8588a5b54536a7661618ebef5029 100644 --- a/templates/email/registration_request_received.html +++ b/templates/email/registration_request_received.html @@ -2,7 +2,7 @@ Dear {{contributor.get_title_display}} {{contributor.user.last_name}},\n\n Your request for registration to the SciPost publication portal has been received. You now need to validate your email by visiting this link within the next 48 hours: \n\n -{% url 'scipost:activation' contributor.id contributor.activation_key %} +{{request.get_host}}{% url 'scipost:activation' contributor.id contributor.activation_key %} \n\n Your registration will thereafter be vetted. Many thanks for your interest.\n diff --git a/templates/email/registration_request_received_html.html b/templates/email/registration_request_received_html.html index ca016a1a10a7d626ffa8646284a4e9e9c229fd65..c9eb3ff312a5e7e7f9525017f935cb9c4845ed51 100644 --- a/templates/email/registration_request_received_html.html +++ b/templates/email/registration_request_received_html.html @@ -4,7 +4,7 @@ Your request for registration to the SciPost publication portal has been received. You now need to validate your email by visiting this link within the next 48 hours: </p> <p> - <a href="{% url 'scipost:activation' contributor.id contributor.activation_key %}">Activate your account</a> + <a href="{{request.get_host}}{% url 'scipost:activation' contributor.id contributor.activation_key %}">Activate your account</a> </p> <p> diff --git a/templates/email/report_delivered_eic.html b/templates/email/report_delivered_eic.html index f2051e9afcc7efb1a9995a5fa4daf6352d83aa59..4d326dd5d8105f4b24be2dca147eac53a36b1b5a 100644 --- a/templates/email/report_delivered_eic.html +++ b/templates/email/report_delivered_eic.html @@ -3,7 +3,8 @@ Dear {{report.submission.editor_in_charge.get_title_display}} {{report.submissio Referee {{report.author.get_title_display}} {{report.author.user.last_name}} has delivered a Report for Submission "{{report.submission.title}} by {{report.submission.author_list}}". \n\n -Please vet this Report via your <a href="{% url 'scipost:personal_page' %}">personal page</a> under the Editorial Actions tab. +Please vet this Report via your personal page under the Editorial Actions tab.\n +{{request.get_host}}{% url 'scipost:personal_page' %} \n\n\n Many thanks in advance for your collaboration,\n diff --git a/templates/email/report_delivered_eic_html.html b/templates/email/report_delivered_eic_html.html index d9a2c2785483f90f54ed88d5ea052a3ef0534936..0a94697c09c2a8c7d68da68728a0b22b3b2111d2 100644 --- a/templates/email/report_delivered_eic_html.html +++ b/templates/email/report_delivered_eic_html.html @@ -4,7 +4,7 @@ Referee {{report.author.get_title_display}} {{report.author.user.last_name}} has delivered a Report for Submission "<span style="color: grey;">{{report.submission.title}} by {{report.submission.author_list}}</span>". </p> <p> - Please vet this Report via your <a href="{% url 'scipost:personal_page' %}">personal page</a> under the Editorial Actions tab. + Please vet this Report via your <a href="{{request.get_host}}{% url 'scipost:personal_page' %}">personal page</a> under the Editorial Actions tab. </p> <p> Many thanks in advance for your collaboration, diff --git a/templates/email/submission_cycle_reinvite_referee.html b/templates/email/submission_cycle_reinvite_referee.html new file mode 100644 index 0000000000000000000000000000000000000000..3ae8ab59c207d451b19c0b3ad4e0da54de4ebd63 --- /dev/null +++ b/templates/email/submission_cycle_reinvite_referee.html @@ -0,0 +1,15 @@ +Dear {{invitation.get_title_display}} {{invitation.last_name}},\n\n\n + +The authors of submission\n\n + +{{invitation.submission.title}} by {{invitation.submission.author_list}} \n\n + +have resubmitted their manuscript to SciPost. On behalf of the Editor-in-charge {{invitation.submission.editor_in_charge.get_title_display}} {{invitation.submission.editor_in_charge.last_name}}, we would like to invite you to quickly review this new version.\n +Please accept or decline the invitation (login required) as soon as possible (ideally within the next 2 days).\n\n + +If you accept, your report can be submitted by simply clicking on the "Contribute a Report" link on the Submission's Page before the reporting deadline (currently set at {{invitation.submission.reporting_deadline|date:'N j, Y'}}; your report will be automatically recognized as an invited report).\n\n + +You might want to make sure you are familiar with our refereeing code of conduct and with the refereeing procedure.\n\n + +We would be extremely grateful for your contribution, and thank you in advance for your consideration.\n +The SciPost Team. diff --git a/templates/email/submission_cycle_reinvite_referee_html.html b/templates/email/submission_cycle_reinvite_referee_html.html new file mode 100644 index 0000000000000000000000000000000000000000..ec0eef3e764fb7e23b78723b275554efa664370b --- /dev/null +++ b/templates/email/submission_cycle_reinvite_referee_html.html @@ -0,0 +1,28 @@ +<h3>Dear {{invitation.get_title_display}} {{invitation.last_name}},</h3> + +<p> + The authors of submission +</p> + +<p> + {{invitation.submission.title}} + <br> + by {{invitation.submission.author_list}} + <br> + (<a href="{{request.get_host}}{{invitation.submission.get_absolute_url}}">see on SciPost.org</a>) +<p> + have resubmitted their manuscript to SciPost. On behalf of the Editor-in-charge {{invitation.submission.editor_in_charge.get_title_display}} {{invitation.submission.editor_in_charge.last_name}}, we would like to invite you to quickly review this new version. + Please accept or decline the invitation (login required) 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 the Submission's Page before the reporting deadline (currently set at {{invitation.submission.reporting_deadline|date:'N j, 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 code of conduct and with the refereeing procedure. +</p> +<p> + We would be extremely grateful for your contribution, and thank you in advance for your consideration.<br> + The SciPost Team. +</p> + +{% include 'email/_footer.html' %} diff --git a/templates/email/submission_eic_reappointment.html b/templates/email/submission_eic_reappointment.html index 24cd530cb1236644316298e56fde0dd9e038ea8f..f5429e97b1fd9f0b19d1e566875bda11ae5b9540 100644 --- a/templates/email/submission_eic_reappointment.html +++ b/templates/email/submission_eic_reappointment.html @@ -1,11 +1,16 @@ -Dear {{submission.editor_in_charge.get_title_display}} {{submission.editor_in_charge.last_name}},\n\n +Dear {{submission.editor_in_charge.get_title_display}} {{submission.editor_in_charge.user.last_name}},\n\n -The authors of the SciPost Submission {{submission.title}} by {{submission.author_list}} have resubmitted their manuscript.\n\n +The authors of the SciPost Submission\n\n +{{submission.title}} +\n\n +by {{submission.author_list}} +\n\n +have resubmitted their manuscript.\n\n -As Editor-in-charge, you can take your editorial actions from the submission\'s <a href="{% url 'submissions:editorial_page' submission.arxiv_identifier_w_vn_nr %}">editorial page</a> -(also accessible from your <a href="{% url 'scipost:personal_page' %}">personal page</a> under the Editorial Actions tab).\n +As Editor-in-charge, you can take your editorial actions from the submission\'s editorial page: {{request.get_host}}{% url 'submissions:editorial_page' submission.arxiv_identifier_w_vn_nr %}.\n +(also accessible from your personal page under the Editorial Actions tab), see {{request.get_host}}{% url 'scipost:personal_page' %}. \n\n -You can either take an immediate acceptance/rejection decision, or run a new refereeing round, in which case you should now invite at least 3 referees; you might want to make sure you are aware of the detailed procedure described in the <a href="{% url 'scipost:EdCol_by-laws' %}">Editorial College by-laws</a>. +You can either take an immediate acceptance/rejection decision, quickly consult previous referees or run a new refereeing round, in which case you should now invite at least 3 referees; you might want to make sure you are aware of the detailed procedure described in the Editorial College by-laws. See {{request.get_host}}{% url 'scipost:EdCol_by-laws' %}. \n\n Many thanks in advance for your collaboration,\n diff --git a/templates/email/submission_eic_reappointment_html.html b/templates/email/submission_eic_reappointment_html.html index c0c08326e76be5ae162681e7e07b057e26e3c1f0..41b1ff0ce9ad308359476785e9c7dc94c6c1d30c 100644 --- a/templates/email/submission_eic_reappointment_html.html +++ b/templates/email/submission_eic_reappointment_html.html @@ -1,14 +1,14 @@ -<h3>Dear {{submission.editor_in_charge.get_title_display}} {{submission.editor_in_charge.last_name}},</h3> +<h3>Dear {{submission.editor_in_charge.get_title_display}} {{submission.editor_in_charge.user.last_name}},</h3> <p> The authors of the SciPost Submission "<span style="color: grey;">{{submission.title}} by {{submission.author_list}}</span>" have resubmitted their manuscript. </p> <p> - As Editor-in-charge, you can take your editorial actions from the submission\'s <a href="{% url 'submissions:editorial_page' submission.arxiv_identifier_w_vn_nr %}">editorial page</a>. - (also accessible from your <a href="{% url 'scipost:personal_page' %}">personal page</a> under the Editorial Actions tab). + As Editor-in-charge, you can take your editorial actions from the submission\'s <a href="{{request.get_host}}{% url 'submissions:editorial_page' submission.arxiv_identifier_w_vn_nr %}">editorial page</a>. + (also accessible from your <a href="{{request.get_host}}{% url 'scipost:personal_page' %}">personal page</a> under the Editorial Actions tab). </p> <p> - You can either take an immediate acceptance/rejection decision, or run a new refereeing round, in which case you should now invite at least 3 referees; you might want to make sure you are aware of the detailed procedure described in the <a href="{% url 'scipost:EdCol_by-laws' %}">Editorial College by-laws</a>. + You can either take an immediate acceptance/rejection decision, quickly consult previous referees or run a new refereeing round, in which case you should now invite at least 3 referees; you might want to make sure you are aware of the detailed procedure described in the <a href="{{request.get_host}}{% url 'scipost:EdCol_by-laws' %}">Editorial College by-laws</a>. </p> <p> Many thanks in advance for your collaboration,