def send_notification_email(self, token):
     email = Email(
         [token.email, ],
         html_template='emails/subscription/journal/new_subscription_content.html',
         subject_template='emails/subscription/journal/new_subscription_subject.html',
         extra_context={'token': token})
     email.send()
Example #2
0
def send_notification_email_after_issue_submission_approval(
        sender, issue_submission, transition_name, request, **kwargs):
    if not issue_submission.is_validated:
        return

    emails = [
        issue_submission.contact.email,
    ]
    extra_context = {
        'issue': issue_submission,
        'journal': issue_submission.journal
    }

    comment = issue_submission.status_tracks.last().comment

    if comment:
        extra_context['comment'] = comment

    email = Email(
        emails,
        from_email=settings.PUBLISHER_EMAIL,
        html_template='emails/editor/issue_submission_validated_content.html',
        subject_template=
        'emails/editor/issue_submission_validated_subject.html',
        extra_context=extra_context)
    email.send()
Example #3
0
 def send_notification_email(self, token):
     email = Email(
         [token.email, ],
         html_template='emails/organisation/new_member_content.html',
         subject_template='emails/organisation/new_member_subject.html',
         extra_context={'token': token})
     email.send()
Example #4
0
 def send_mail(self, subject_template_name, email_template_name, context, from_email, to_email, **kwargs):
     """
     Overrides the  builtin `PasswordResetForm.send_mail` method to use the `core.email.Email`
     tool.
     """
     email = Email(
         to_email, html_template=email_template_name, subject_template=subject_template_name, extra_context=context
     )
     email.send()
Example #5
0
 def send_notification_email(self, token):
     email = Email(
         [
             token.email,
         ],
         html_template=
         'emails/subscription/journal/new_subscription_content.html',
         subject_template=
         'emails/subscription/journal/new_subscription_subject.html',
         extra_context={'token': token})
     email.send()
Example #6
0
 def send_mail(self, subject_template_name, email_template_name, context,
               from_email, to_email, **kwargs):
     """
     Overrides the  builtin `PasswordResetForm.send_mail` method to use the `core.email.Email`
     tool.
     """
     email = Email(to_email,
                   html_template=email_template_name,
                   subject_template=subject_template_name,
                   extra_context=context)
     email.send()
Example #7
0
def send_production_team_email(sender, issue_submission, transition_name, request, **kwargs):
    if not issue_submission.is_submitted:
        return

    production_team_group = get_production_team_group(issue_submission.journal)
    if production_team_group is None:
        return

    emails = list(production_team_group.user_set.values_list('email', flat=True))
    if not emails:
        return

    email = Email(
        emails,
        html_template='emails/editor/new_issue_submission_content.html',
        subject_template='emails/editor/new_issue_submission_subject.html',
        extra_context={'issue': issue_submission})
    email.send()
Example #8
0
def send_production_team_email(sender, instance, name, source, target, **kwargs):
    if not instance.is_submitted:
        return

    production_team = get_production_team_group()
    if production_team is None:
        return

    emails = production_team.user_set.values_list('email', flat=True)
    if not emails:
        return

    email = Email(
        emails,
        html_template='userspace/journal/editor/emails/new_issue_submission_content.html',
        subject_template='userspace/journal/editor/emails/new_issue_submission_subject.html',
        extra_context={'issue': instance})
    email.send()
Example #9
0
def _handle_issuesubmission_files_removal():
    now_dt = tz.now()

    # First, fetches the issue submissions whose files must be deleted.
    for issue in IssueSubmission.objects.archived_expired():
        for fversion in issue.files_versions.all():
            [rf.delete() for rf in fversion.submissions.all()]
        issue.archived = True
        issue.save()

    # Fetches the production team group
    production_team = get_production_team_group()
    if production_team is None:
        logger.error(
            """Cannot send issue submission removal notification email.
There is NO production team """)
        return

    # Now fetches the issue submissions that will soon be deleted. The production team must be
    # informed that the deletion will occur in a few days.
    email_limit_dt = now_dt - dt.timedelta(
        days=editor_settings.ARCHIVE_DAY_OFFSET - 5)
    email_limit_dt_range = [
        email_limit_dt.replace(hour=0, minute=0, second=0, microsecond=0),
        email_limit_dt.replace(hour=23,
                               minute=59,
                               second=59,
                               microsecond=999999),
    ]

    issue_submissions_to_email = IssueSubmission.objects.filter(
        status=IssueSubmission.VALID,
        date_modified__range=email_limit_dt_range)
    if issue_submissions_to_email.exists():
        emails = production_team.user_set.values_list('email', flat=True)
        if not emails:
            return

        email = Email(
            list(emails),
            html_template='emails/editor/issue_files_deletion_content.html',
            subject_template='emails/editor/issue_files_deletion_subject.html',
            extra_context={'issue_submissions': issue_submissions_to_email})
        email.send()
Example #10
0
def send_notification_email_after_issue_submission_refusal(
        sender, issue_submission, transition_name, request, **kwargs):
    if not issue_submission.is_draft:
        return
    extra_context = {'issue': issue_submission}
    emails = [issue_submission.contact.email, ]

    comment = issue_submission.status_tracks.last().comment

    if comment:
        extra_context['comment'] = comment

    email = Email(
        emails,
        from_email=settings.PUBLISHER_EMAIL,
        html_template='emails/editor/issue_submission_refused_content.html',
        subject_template='emails/editor/issue_submission_refused_subject.html',
        extra_context=extra_context)
    email.send()
Example #11
0
def _handle_issuesubmission_files_removal():
    now_dt = tz.now()

    # First, fetches the issue submissions whose files must be deleted.
    deletion_limit_dt = now_dt - dt.timedelta(days=editor_settings.ARCHIVE_DAY_OFFSET)
    deletion_limit_dt_range = [
        deletion_limit_dt.replace(hour=0, minute=0, second=0, microsecond=0),
        deletion_limit_dt.replace(hour=23, minute=59, second=59, microsecond=999999),
    ]
    issue_submissions_to_remove = IssueSubmission.objects.filter(
        status=IssueSubmission.VALID, date_modified__range=deletion_limit_dt_range)
    for issue in issue_submissions_to_remove:
        for fversion in issue.files_versions.all():
            [rf.delete() for rf in fversion.submissions.all()]
        issue.archived = True
        issue.save()

    # Fetches the production team group
    production_team = get_production_team_group()
    if production_team is None:
        return

    # Now fetches the issue submissions that will soon be deleted. The production team must be
    # informed that the deletion will occur in a few days.
    email_limit_dt = now_dt - dt.timedelta(days=editor_settings.ARCHIVE_DAY_OFFSET - 5)
    email_limit_dt_range = [
        email_limit_dt.replace(hour=0, minute=0, second=0, microsecond=0),
        email_limit_dt.replace(hour=23, minute=59, second=59, microsecond=999999),
    ]
    issue_submissions_to_email = IssueSubmission.objects.filter(
        status=IssueSubmission.VALID, date_modified__range=email_limit_dt_range)
    if issue_submissions_to_email.exists():
        emails = production_team.user_set.values_list('email', flat=True)
        if not emails:
            return

        email = Email(
            list(emails),
            html_template='emails/editor/issue_files_deletion_content.html',
            subject_template='emails/editor/issue_files_deletion_subject.html',
            extra_context={'issue_submissions': issue_submissions_to_email})
        email.send()
Example #12
0
def send_production_team_email(sender, issue_submission, transition_name,
                               request, **kwargs):
    if not issue_submission.is_submitted:
        return

    production_team_group = get_production_team_group(issue_submission.journal)
    if production_team_group is None:
        return

    emails = list(
        production_team_group.user_set.values_list('email', flat=True))
    if not emails:
        return

    email = Email(
        emails,
        html_template='emails/editor/new_issue_submission_content.html',
        subject_template='emails/editor/new_issue_submission_subject.html',
        extra_context={'issue': issue_submission})
    email.send()