Пример #1
0
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')
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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')
Пример #5
0
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')
Пример #6
0
    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))