def process_editor_digest(journal, user_role): unassigned_articles = submission_models.Article.objects.filter( stage=submission_models.STAGE_UNASSIGNED, journal=journal) overdue_reviews = review_models.ReviewAssignment.objects.filter( date_complete__isnull=False, date_declined__isnull=True, is_complete=False, date_due__lte=timezone.now(), article__journal=journal) overdue_revisions = review_models.RevisionRequest.objects.filter( date_completed__isnull=True, date_due__lte=timezone.now(), article__journal=journal) overdue_proofing = proofing_models.ProofingTask.objects.filter( completed__isnull=True, cancelled__isnull=True, due__lte=timezone.now(), round__assignment__article__journal=journal) awaiting_publication = submission_models.Article.objects.filter( stage=submission_models.STAGE_READY_FOR_PUBLICATION, journal=journal) context = { 'unassigned_articles': unassigned_articles, 'overdue_reviews': overdue_reviews, 'overdue_revisions': overdue_revisions, 'overdue_proofing': overdue_proofing, 'awaiting_publication': awaiting_publication, } return render_template.get_requestless_content(context, journal, 'editor_digest')
def generate_crossref_doi_with_pattern(article): """ Creates a crossref doi utilising a preset pattern. :param article: article objects :return: returns a DOI """ from utils import setting_handler, render_template doi_prefix = setting_handler.get_setting('Identifiers', 'crossref_prefix', article.journal).value doi_suffix = render_template.get_requestless_content( {'article': article}, article.journal, 'doi_pattern', group_name='Identifiers') doi_options = { 'id_type': 'doi', 'identifier': '{0}/{1}'.format(doi_prefix, doi_suffix), 'article': article } from identifiers import models as identifier_models return identifier_models.Identifier.objects.create(**doi_options)
def render_doi_from_pattern(article): from utils import setting_handler, render_template doi_prefix = setting_handler.get_setting('Identifiers', 'crossref_prefix', article.journal).value doi_suffix = render_template.get_requestless_content({'article': article}, article.journal, 'doi_pattern', group_name='Identifiers') return '{0}/{1}'.format(doi_prefix, doi_suffix)
def process_reviewer_digest(journal, user_role): pending_requests = review_models.ReviewAssignment.objects.filter( reviewer=user_role.user, date_complete__isnull=True, date_due__gte=timezone.now()) overdue_requests = review_models.ReviewAssignment.objects.filter( reviewer=user_role.user, date_complete__isnull=True, date_due__lte=timezone.now()) context = { 'pending_requests': pending_requests, 'overdue_requests': overdue_requests, } return render_template.get_requestless_content(context, journal, 'reviewer_digest')
def process_revision_digest(journal, user_role): pending_requests = review_models.RevisionRequest.objects.filter( article__correspondence_author=user_role.user, date_completed__isnull=True, date_due__gte=timezone.now()) overdue_requests = review_models.RevisionRequest.objects.filter( article__correspondence_author=user_role.user, date_completed__isnull=True, date_due__lte=timezone.now()) context = { 'pending_requests': pending_requests, 'overdue_requests': overdue_requests, } return render_template.get_requestless_content(context, journal, 'revision_digest')
def send_reminder(self): objects = self.items_for_reminder() request = Request() request.journal = self.journal for item in objects: sent_check = SentReminder.objects.filter(type=self.type, object_id=item.pk, sent=timezone.now().date()) if not sent_check: context = {'object': item, 'journal': self.journal} message = render_template.get_requestless_content(context, self.journal, self.template_name) notify_helpers.send_email_with_body_from_user(request, self.subject, item.article.correspondence_author.email, message) # Create a SentReminder object to ensure we don't do this more than once by accident. SentReminder.objects.create(type=self.type, object_id=item.pk) print('Reminder sent for {0}'.format(object)) else: print('Reminder {0} for object {1} has already been sent'.format(self, item))