Example #1
0
File: logic.py Project: StuJ/rua
def send_acknowldgement_email(book, press_editors):
    from_email = core_models.Setting.objects.get(group__name='email', name='from_address').value
    author_text = core_models.Setting.objects.get(group__name='email', name='author_submission_ack').value
    editor_text = core_models.Setting.objects.get(group__name='email', name='editor_submission_ack').value
    press_name = core_models.Setting.objects.get(group__name='general', name='press_name').value

    try:
        principal_contact_name = models.Setting.objects.get(group__name='general', name='primary_contact_name').value
    except:
        principal_contact_name = None

    context = {
        'base_url': core_models.Setting.objects.get(group__name='general', name='base_url').value,
        'submission': book,
        'press_name':press_name,
        'principal_contact_name': principal_contact_name,
    }

    email.send_email(get_setting('submission_ack_subject','email_subject','Submission Acknowledgement'), context, from_email, book.owner.email, author_text, book=book, kind = 'submission')

    if len(press_editors) > 1:
        editor = press_editors[0]
        cc_eds = [editor.email for editor in press_editors if not editor == press_editors[0]]
    else:
        editor = press_editors[0]
        cc_eds = None
    email.send_email(get_setting('new_submission_subject','email_subject','New Submission'), context, from_email, editor.email, editor_text, book=book, cc=cc_eds, kind = 'submission') 

    for editor in press_editors:
        notification = core_models.Task(book=book, assignee=editor, creator=press_editors[0], text='A new submission, {0}, has been made.'.format(book.title), workflow='review')
        notification.save()
Example #2
0
File: logic.py Project: StuJ/rua-1
def send_invite_typesetter(book, typeset, email_text, sender, attachment=None):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )

    context = {
        'base_url':
        models.Setting.objects.get(
            group__name='general',
            name='base_url',
        ).value,
        'submission':
        typeset.book,
        'typeset':
        typeset,
        'sender':
        sender,
    }

    email.send_email(
        get_setting('typesetting_subject', 'email_subject', 'Typesetting'),
        context,
        from_email.value,
        typeset.typesetter.email,
        email_text,
        book=book,
        attachment=attachment,
        kind='typeset',
    )
Example #3
0
File: logic.py Project: StuJ/rua-1
def send_author_sign_off(submission, email_text, sender):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )

    context = {
        'base_url':
        models.Setting.objects.get(
            group__name='general',
            name='base_url',
        ).value,
        'submission':
        submission,
        'sender':
        sender,
    }

    email.send_email(
        get_setting('book_contract_uploaded_subject', 'email_subject',
                    'Book Contract Uploaded'),
        context,
        from_email.value,
        submission.owner.email,
        email_text,
        book=submission,
        kind='submission',
    )
Example #4
0
File: logic.py Project: StuJ/rua-1
def send_proposal_revisions(proposal, email_text, sender):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )

    context = {
        'base_url':
        models.Setting.objects.get(
            group__name='general',
            name='base_url',
        ).value,
        'proposal':
        proposal,
        'sender':
        sender,
    }

    email.send_email(
        get_setting('proposal_revision_required_subject', 'email_subject',
                    '[abp] Proposal Revisions Required'),
        context,
        from_email.value,
        proposal.owner.email,
        email_text,
        kind='proposal',
    )
Example #5
0
File: logic.py Project: StuJ/rua-1
def send_proposal_accept(
    proposal,
    email_text,
    submission,
    sender,
    attachment=None,
):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )

    context = {
        'base_url':
        models.Setting.objects.get(group__name='general',
                                   name='base_url').value,
        'proposal':
        proposal,
        'submission':
        submission,
        'sender':
        sender,
    }

    email.send_email(
        get_setting('proposal_accepted_subject', 'email_subject',
                    '[abp] Proposal Accepted'),
        context,
        from_email.value,
        proposal.owner.email,
        email_text,
        book=submission,
        attachment=attachment,
    )
Example #6
0
def reminder_overdue_revisions(task):
    days = int(
        models.Setting.objects.get(group__name='cron',
                                   name='revisions_reminder').value)
    email_text = models.Setting.objects.get(
        group__name='email', name='revisions_reminder_email').value
    dt = timezone.now()
    target_date = dt - timedelta(days=days)
    books = models.Book.objects.filter(
        Q(stage__current_stage='review')
        | Q(stage__current_stage='submission'))

    for book in books:
        revisions = revision_models.Revision.objects.filter(
            book=book,
            completed__isnull=True,
            overdue_reminder=False,
            due=target_date.date,
        )

        for review in revisions:
            review.user = review.book.owner
            send_reminder_email(
                book,
                get_setting('revision_request_reminder_subject',
                            'email_subject', 'Revision Request Reminder'),
                review,
                email_text,
            )
            review.overdue_reminder = True
            review.save()
Example #7
0
File: logic.py Project: StuJ/rua-1
def send_author_invite(
    submission,
    copyedit,
    email_text,
    sender,
    attachment=None,
):
    from_email = models.Setting.objects.get(group__name='email',
                                            name='from_address')

    context = {
        'base_url':
        models.Setting.objects.get(group__name='general',
                                   name='base_url').value,
        'submission':
        submission,
        'copyedit':
        copyedit,
        'sender':
        sender,
    }
    subject = get_setting('copyediting_completed_subject', 'email_subject',
                          'Copyediting Completed')
    email.send_email(
        subject,
        context,
        from_email.value,
        submission.owner.email,
        email_text,
        book=submission,
        attachment=attachment,
        kind='copyedit',
    )
Example #8
0
File: logic.py Project: StuJ/rua-1
def send_editorial_review_update(
    book,
    review_assignment,
    email_text,
    sender,
    attachment=None,
):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )

    context = {'book': book, 'review': review_assignment, 'sender': sender}

    for editor in review_assignment.editorial_board.all():
        email.send_email(
            get_setting('editorial_review_due_date_subject', 'email_subject',
                        'Editorial Review Assignment {}: Due Date Updated') %
            review_assignment.id,
            context,
            from_email.value,
            editor.email,
            email_text,
            book=book,
            attachment=attachment,
            kind='review',
        )
Example #9
0
File: logic.py Project: StuJ/rua-1
def send_new_user_ack(submission, email_text, new_user, code):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )

    context = {
        'base_url':
        models.Setting.objects.get(
            group__name='general',
            name='base_url',
        ).value,
        'user':
        new_user,
        'code':
        code,
        'submission':
        submission,
    }

    email.send_email(
        get_setting('new_user_subject', 'email_subject',
                    'New User : Profile Details'),
        context,
        from_email.value,
        new_user.email,
        email_text,
        book=submission,
        kind='general',
    )
Example #10
0
def remind_overdue_reviews(task):
    days = int(
        models.Setting.objects.get(group__name='cron',
                                   name='remind_overdue_reviews').value)
    email_text = models.Setting.objects.get(group__name='email',
                                            name='overdue_reminder').value
    dt = timezone.now()
    target_date = dt - timedelta(days=days)
    books = models.Book.objects.filter(stage__current_stage='review')

    for book in books:
        reviews = models.ReviewAssignment.objects.filter(
            book=book,
            review_round__round_number=book.get_latest_review_round(),
            overdue_reminder=False,
            completed__isnull=True,
            declined__isnull=True,
            due=target_date.date)

        for review in reviews:
            send_reminder_email(
                book,
                get_setting('review_request_reminder_subject', 'email_subject',
                            'Review Request Reminder'),
                review,
                email_text,
            )
            # Lets make sure that we don't accidentally send this twice.
            review.overdue_reminder = True
            review.save()
Example #11
0
File: logic.py Project: StuJ/rua-1
def send_invite_indexer(book, index, email_text, sender, attachment):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )

    context = {
        'base_url':
        models.Setting.objects.get(group__name='general',
                                   name='base_url').value,
        'submission':
        book,
        'index':
        index,
        'sender':
        sender,
    }

    email.send_email(
        get_setting('indexing_request_subject', 'email_subject',
                    'Indexing Request'),
        context,
        from_email.value,
        index.indexer.email,
        email_text,
        book=book,
        attachment=attachment,
        kind='index',
    )
def reminder_notifications_not_emailed(task):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')
	press_name = models.Setting.objects.get(group__name='general', name='press_name').value
	days = int(models.Setting.objects.get(group__name='cron', name='notification_reminder').value)
	email_text = models.Setting.objects.get(group__name='email', name='notification_reminder_email').value
	dt = timezone.now()
	target_date = dt - timedelta(days=days)

	editors = User.objects.filter(Q(profile__roles__slug='press-editor') | Q(profile__roles__slug='book-editor') | Q(profile__roles__slug='production-editor'))
  
	for editor in editors:
		tasks = models.Task.objects.filter(assignee = editor, emailed = False, completed__isnull = True)
		task_list = ""
		for notification in tasks:
			task_list = task_list +'- '+ notification.text + "\n"
			notification.emailed = True
			notification.save()

		if task_list:
			
			context = {
				'user': editor,
				'notifications': task_list,
				'notification_count': tasks.count(),
				'press_name': press_name,
				'base_url': models.Setting.objects.get(group__name='general', name='base_url').value,	
			}
			email.send_email(get_setting('weekly_notification_reminder_subject','email_subject','Weekly Notification Reminder'), context, from_email.value, editor.email, email_text)
Example #13
0
File: logic.py Project: StuJ/rua
def send_proposal_decline(proposal, email_text, sender):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')

	context = {
		'proposal': proposal,
		'sender': sender,
	}

	email.send_email(get_setting('proposal_declined_subject','email_subject','[abp] Proposal Declined'), context, from_email.value, proposal.owner.email, email_text, kind = 'proposal')
Example #14
0
File: logic.py Project: StuJ/rua-1
def send_review_request(
    book,
    review_assignment,
    email_text,
    sender,
    attachment=None,
    access_key=None,
):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )
    base_url = models.Setting.objects.get(
        group__name='general',
        name='base_url',
    )
    press_name = models.Setting.objects.get(
        group__name='general',
        name='press_name',
    ).value

    if access_key:
        decision_url = (
            'http://%s/review/%s/%s/assignment/%s/access_key/%s/decision/' % (
                base_url.value,
                review_assignment.review_type,
                book.id,
                review_assignment.id,
                access_key,
            ))
    else:
        decision_url = ('http://%s/review/%s/%s/assignment/%s/decision/' %
                        (base_url.value, review_assignment.review_type,
                         book.id, review_assignment.id))

    context = {
        'book': book,
        'review': review_assignment,
        'decision_url': decision_url,
        'sender': sender,
        'base_url': base_url.value,
        'press_name': press_name,
    }

    email.send_email(
        subject=get_setting('review_request_subject', 'email_subject',
                            'Review Request'),
        context=context,
        from_email=from_email.value,
        to=review_assignment.user.email,
        html_template=email_text,
        book=book,
        attachment=attachment,
        kind='review',
        access_key=access_key,
    )
Example #15
0
File: logic.py Project: StuJ/rua
def send_proposal_revisions(proposal, email_text, sender):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')

	context = {
		'base_url': models.Setting.objects.get(group__name='general', name='base_url').value,
		'proposal': proposal,
		'sender': sender,
	}

	email.send_email(get_setting('proposal_revision_required_subject','email_subject','[abp] Proposal Revisions Required'), context, from_email.value, proposal.owner.email, email_text, kind = 'proposal')
Example #16
0
File: logic.py Project: StuJ/rua
def send_author_sign_off(submission, email_text, sender):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')

	context = {
		'base_url': models.Setting.objects.get(group__name='general', name='base_url').value,
		'submission': submission,
		'sender': sender,
	}

	email.send_email(get_setting('book_contract_uploaded_subject','email_subject','Book Contract Uploaded'), context, from_email.value, submission.owner.email, email_text, book=submission, kind = 'submission')
Example #17
0
File: logic.py Project: StuJ/rua-1
def send_editorial_review_request(book,
                                  review_assignment,
                                  email_text,
                                  sender,
                                  attachment=None):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )
    base_url = models.Setting.objects.get(
        group__name='general',
        name='base_url',
    )
    press_name = models.Setting.objects.get(
        group__name='general',
        name='press_name',
    ).value

    if review_assignment.publishing_committee_access_key:
        decision_url = 'http://%s/editorial/submission/%s/access_key/%s/' % (
            base_url.value,
            book.id,
            review_assignment.publishing_committee_access_key,
        )
        access_key = review_assignment.publishing_committee_access_key
    else:
        decision_url = 'http://%s/editorial/submission/%s/access_key/%s/' % (
            base_url.value,
            book.id,
            review_assignment.editorial_board_access_key,
        )
        access_key = review_assignment.editorial_board_access_key

    context = {
        'book': book,
        'review': review_assignment,
        'decision_url': decision_url,
        'sender': sender,
        'base_url': base_url.value,
        'press_name': press_name,
    }

    for editor in review_assignment.editorial_board.all():
        email.send_email(
            get_setting('editorial_review_request', 'email_subject',
                        'Editorial Review Request'),
            context,
            from_email.value,
            editor.email,
            email_text,
            book=book,
            attachment=attachment,
            kind='review',
            access_key=access_key,
        )
Example #18
0
File: logic.py Project: StuJ/rua
def send_invite_indexer(book, index, email_text, sender, attachment):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')

	context = {
		'base_url': models.Setting.objects.get(group__name='general', name='base_url').value,
		'submission': book,
		'index': index,
		'sender': sender,
	}

	email.send_email(get_setting('indexing_request_subject','email_subject','Indexing Request'), context, from_email.value, index.indexer.email, email_text, book=book, attachment=attachment, kind = 'index')
Example #19
0
File: logic.py Project: StuJ/rua
def send_new_user_ack(submission, email_text, new_user, code):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')

	context = {
		'base_url': models.Setting.objects.get(group__name='general', name='base_url').value,
		'user': new_user,
		'code': code,
		'submission':submission,
	}

	email.send_email(get_setting('new_user_subject','email_subject','New User : Profile Details'), context, from_email.value, new_user.email, email_text, book=submission, kind = 'general')
Example #20
0
File: logic.py Project: StuJ/rua
def send_copyedit_assignment(submission, copyedit, email_text, sender, attachment=None):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')

	context = {
		'base_url': models.Setting.objects.get(group__name='general', name='base_url').value,
		'submission': submission,
		'copyedit': copyedit,
		'sender': sender,
	}

	email.send_email(get_setting('copyedit_assignment_subject','email_subject','Copyedit Assignment'), context, from_email.value, copyedit.copyeditor.email, email_text, book=submission, attachment=attachment, kind = 'copyedit')
Example #21
0
File: logic.py Project: StuJ/rua
def send_author_invite(submission, copyedit, email_text, sender, attachment=None):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')

	context = {
		'base_url': models.Setting.objects.get(group__name='general', name='base_url').value,
		'submission': submission,
		'copyedit': copyedit,
		'sender': sender,
	}

	email.send_email(get_setting('copyediting_completed_subject','email_subject','Copyediting Completed'), context, from_email.value, submission.owner.email, email_text, book=submission, attachment=attachment, kind = 'copyedit')
Example #22
0
File: logic.py Project: StuJ/rua
def send_proposal_accept(proposal, email_text, submission, sender, attachment=None):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')

	context = {
		'base_url': models.Setting.objects.get(group__name='general', name='base_url').value,
		'proposal': proposal,
		'submission': submission,
		'sender': sender,
	}

	email.send_email(get_setting('proposal_accepted_subject','email_subject','[abp] Proposal Accepted'), context, from_email.value, proposal.owner.email, email_text, book=submission, attachment=attachment)
Example #23
0
File: logic.py Project: StuJ/rua
def send_invite_typesetter(book, typeset, email_text, sender, attachment=None):

	from_email = models.Setting.objects.get(group__name='email', name='from_address')

	context = {
		'base_url': models.Setting.objects.get(group__name='general', name='base_url').value,
		'submission': typeset.book,
		'typeset': typeset,
		'sender': sender,
	}

	email.send_email(get_setting('typesetting_subject','email_subject','Typesetting'), context, from_email.value, typeset.typesetter.email, email_text, book=book, attachment=attachment, kind = 'typeset')
Example #24
0
File: logic.py Project: StuJ/rua
def send_review_update(book, review_assignment, email_text, sender, attachment=None):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')
	base_url = models.Setting.objects.get(group__name='general', name='base_url')

	print email_text
	context = {
		'book': book,
		'review': review_assignment,
		'sender': sender,
	}

	email.send_email(get_setting('review_due_date_subject','email_subject','Review Assignment %s: Due Date Updated') % review_assignment.id, context, from_email.value, review_assignment.user.email, email_text, book=book, attachment=attachment, kind = 'review')
Example #25
0
File: logic.py Project: StuJ/rua
def send_book_editors(book, added_editors,removed_editors,email_text):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')
	base_url = models.Setting.objects.get(group__name='general', name='base_url').value

	context = {
		'base_url':base_url,
		'submission': book,
		'added_editors': added_editors,
		'removed_editors':removed_editors,
		'submission_page': "http://%s/editor/submission/%s/" % (base_url, book.id)
	}
	if added_editors or removed_editors:
		email.send_email(get_setting('book_editors_subject','email_subject','Book Editors have been updated'), context, from_email.value, book.owner.email, email_text, book=book, kind = 'general')
Example #26
0
File: logic.py Project: StuJ/rua
def send_requests_revisions(book, revision, email_text):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')
	base_url = models.Setting.objects.get(group__name='general', name='base_url').value
	press_name = models.Setting.objects.get(group__name='general', name='press_name').value


	context = {
		'book': book,
		'revision': revision,
		'press_name': press_name,
		'revision_url': "http://%s/author/submission/%s/revisions/%s" % (base_url, book.id, revision.id)
	}

	email.send_email(get_setting('revisions_requested_subject','email_subject','Revisions Requested'), context, from_email.value, book.owner.email, email_text, book=book, kind = 'revisions')
def reminder_overdue_revisions(task):
	days = int(models.Setting.objects.get(group__name='cron', name='revisions_reminder').value)
	email_text = models.Setting.objects.get(group__name='email', name='revisions_reminder_email').value
	dt = timezone.now()
	target_date = dt - timedelta(days=days)

	books = models.Book.objects.filter(Q(stage__current_stage='review') | Q(stage__current_stage='submission'))

	for book in books:
		revisions = revision_models.Revision.objects.filter(book=book, completed__isnull=True, overdue_reminder=False, due=target_date.date)
		for review in revisions:
			review.user = review.book.owner
			send_reminder_email(book, get_setting('revision_request_reminder_subject','email_subject','Revision Request Reminder'), review, email_text)
			review.overdue_reminder = True
			review.save()
def remind_overdue_reviews(task):
	days = int(models.Setting.objects.get(group__name='cron', name='remind_overdue_reviews').value)
	email_text = models.Setting.objects.get(group__name='email', name='overdue_reminder').value
	dt = timezone.now()
	target_date = dt - timedelta(days=days)

	books = models.Book.objects.filter(stage__current_stage='review')

	for book in books:
		reviews = models.ReviewAssignment.objects.filter(book=book, review_round__round_number=book.get_latest_review_round(), overdue_reminder=False, completed__isnull=True, declined__isnull=True, due=target_date.date)
		for review in reviews:
			send_reminder_email(book, get_setting('review_request_reminder_subject','email_subject','Review Request Reminder'), review, email_text)
			# Lets make sure that we don't accidentally send this twice.
			review.overdue_reminder = True
			review.save()
Example #29
0
File: logic.py Project: StuJ/rua-1
def send_requests_revisions(
    book,
    sender,
    revision,
    email_text,
    attachments=None,
):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )
    base_url = models.Setting.objects.get(
        group__name='general',
        name='base_url',
    ).value
    press_name = models.Setting.objects.get(
        group__name='general',
        name='press_name',
    ).value

    context = {
        'book':
        book,
        'sender':
        sender,
        'revision':
        revision,
        'press_name':
        press_name,
        'revision_url':
        "http://%s/author/submission/%s/revisions/%s" % (
            base_url,
            book.id,
            revision.id,
        )
    }

    email.send_email_multiple(
        get_setting('revisions_requested_subject', 'email_subject',
                    'Revisions Requested'),
        context,
        from_email.value,
        book.owner.email,
        email_text,
        book=book,
        attachments=attachments,
        kind='revisions',
    )
Example #30
0
File: logic.py Project: StuJ/rua-1
def send_proposal_decline(proposal, email_text, sender):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )

    context = {'proposal': proposal, 'sender': sender}

    email.send_email(
        get_setting('proposal_declined_subject', 'email_subject',
                    '[abp] Proposal Declined'),
        context,
        from_email.value,
        proposal.owner.email,
        email_text,
        kind='proposal',
    )
Example #31
0
def reminder_notifications_not_emailed(task):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )
    press_name = models.Setting.objects.get(group__name='general',
                                            name='press_name').value
    email_text = models.Setting.objects.get(
        group__name='email', name='notification_reminder_email').value
    editors = User.objects.filter(
        Q(profile__roles__slug='press-editor')
        | Q(profile__roles__slug='book-editor')
        | Q(profile__roles__slug='production-editor'))

    for editor in editors:
        tasks = models.Task.objects.filter(
            assignee=editor,
            emailed=False,
            completed__isnull=True,
        )
        task_list = ""

        for notification in tasks:
            task_list = task_list + '- ' + notification.text + "\n"
            notification.emailed = True
            notification.save()

        if task_list:
            context = {
                'user':
                editor,
                'notifications':
                task_list,
                'notification_count':
                tasks.count(),
                'press_name':
                press_name,
                'base_url':
                models.Setting.objects.get(group__name='general',
                                           name='base_url').value,
            }
            email.send_email(
                get_setting('weekly_notification_reminder_subject',
                            'email_subject', 'Weekly Notification Reminder'),
                context, from_email.value, editor.email, email_text)
Example #32
0
File: logic.py Project: StuJ/rua-1
def send_new_user_ack(email_text, new_user, code):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )

    try:
        press_name = models.Setting.objects.get(
            group__name='general',
            name='press_name',
        ).value
    except:
        press_name = None
    try:
        principal_contact_name = models.Setting.objects.get(
            group__name='general', name='primary_contact_name').value
    except:
        principal_contact_name = None

    context = {
        'base_url':
        models.Setting.objects.get(
            group__name='general',
            name='base_url',
        ).value,
        'user':
        new_user,
        'press_name':
        press_name,
        'principal_contact_name':
        principal_contact_name,
        'code':
        code,
    }

    email.send_email(
        get_setting('new_user_subject', 'email_subject',
                    'New User : Profile Details'),
        context,
        from_email.value,
        new_user.email,
        email_text,
        kind='general',
    )
Example #33
0
File: logic.py Project: StuJ/rua-1
def send_copyedit_assignment(
    submission,
    copyedit,
    email_text,
    sender,
    attachment,
):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )
    press_name = models.Setting.objects.get(
        group__name='general',
        name='press_name',
    ).value

    context = {
        'base_url':
        models.Setting.objects.get(
            group__name='general',
            name='base_url',
        ).value,
        'submission':
        submission,
        'copyedit':
        copyedit,
        'sender':
        sender,
        'press_name':
        press_name,
    }

    email.send_email(
        get_setting('copyedit_assignment_subject', 'email_subject',
                    'Copyedit Assignment'),
        context,
        from_email.value,
        copyedit.copyeditor.email,
        email_text,
        book=submission,
        attachment=attachment,
        kind='copyedit',
    )
Example #34
0
File: logic.py Project: StuJ/rua
def send_review_request(book, review_assignment, email_text, sender, attachment=None, access_key=None):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')
	base_url = models.Setting.objects.get(group__name='general', name='base_url')
	press_name = models.Setting.objects.get(group__name='general', name='press_name').value
	
	if access_key:
		decision_url = 'http://%s/review/%s/%s/assignment/%s/access_key/%s/decision/' % (base_url.value, review_assignment.review_type, book.id, review_assignment.id, access_key)
	else:
		decision_url = 'http://%s/review/%s/%s/assignment/%s/decision/' % (base_url.value, review_assignment.review_type, book.id, review_assignment.id)

	context = {
		'book': book,
		'review': review_assignment,
		'decision_url': decision_url,
		'sender': sender,
		'base_url':base_url.value,
		'press_name':press_name,
	}

	email.send_email(subject = get_setting('review_request_subject','email_subject','Review Request'), context = context, from_email = from_email.value, to = review_assignment.user.email, html_template = email_text, book=book, attachment=attachment, kind = 'review')
Example #35
0
File: logic.py Project: StuJ/rua
def send_editorial_review_request(book, review_assignment, email_text, sender, attachment=None):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')
	base_url = models.Setting.objects.get(group__name='general', name='base_url')
	press_name = models.Setting.objects.get(group__name='general', name='press_name').value
	
	if review_assignment.publishing_committee_access_key:
		decision_url = 'http://%s/editorial/submission/%s/access_key/%s/' % (base_url.value, book.id, review_assignment.publishing_committee_access_key)
	else:
		decision_url = 'http://%s/editorial/submission/%s/access_key/%s/' % (base_url.value, book.id, review_assignment.editorial_board_access_key)

	context = {
		'book': book,
		'review': review_assignment,
		'decision_url': decision_url,
		'sender': sender,
		'base_url':base_url.value,
		'press_name':press_name,
	}
	for editor in review_assignment.editorial_board.all():
		email.send_email(get_setting('editorial_review_request','email_subject','Editorial Review Request'), context, from_email.value, editor.email, email_text, book=book, attachment=attachment, kind = 'review')
Example #36
0
File: logic.py Project: StuJ/rua
def send_new_user_ack(email_text, new_user, code):
	from_email = models.Setting.objects.get(group__name='email', name='from_address')
	
	try:
		press_name = models.Setting.objects.get(group__name='general', name='press_name').value
	except:
		press_name=None
	try:
		principal_contact_name = models.Setting.objects.get(group__name='general', name='primary_contact_name').value
	except:
		principal_contact_name = None
	
	context = {
		'base_url': models.Setting.objects.get(group__name='general', name='base_url').value,
		'user': new_user,
		'press_name':press_name,
		'principal_contact_name': principal_contact_name,
		'code': code,
	}

	email.send_email(get_setting('new_user_subject','email_subject','New User : Profile Details'), context, from_email.value, new_user.email, email_text, kind = 'general')
Example #37
0
File: logic.py Project: StuJ/rua-1
def send_review_update(
    book,
    review_assignment,
    email_text,
    sender,
    attachment=None,
):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )
    context = {'book': book, 'review': review_assignment, 'sender': sender}

    email.send_email(get_setting('review_due_date_subject', 'email_subject',
                                 'Review Assignment %s: Due Date Updated') %
                     review_assignment.id,
                     context,
                     from_email.value,
                     review_assignment.user.email,
                     email_text,
                     book=book,
                     attachment=attachment,
                     kind='review')
Example #38
0
File: logic.py Project: StuJ/rua-1
def send_book_editors(book, added_editors, removed_editors, email_text):
    from_email = models.Setting.objects.get(
        group__name='email',
        name='from_address',
    )
    base_url = models.Setting.objects.get(
        group__name='general',
        name='base_url',
    ).value

    context = {
        'base_url':
        base_url,
        'submission':
        book,
        'added_editors':
        added_editors,
        'removed_editors':
        removed_editors,
        'submission_page':
        "http://%s/editor/submission/%s/" % (
            base_url,
            book.id,
        )
    }

    if added_editors or removed_editors:
        email.send_email(
            get_setting('book_editors_subject', 'email_subject',
                        'Book Editors have been updated'),
            context,
            from_email.value,
            book.owner.email,
            email_text,
            book=book,
            kind='general',
        )
Example #39
0
def email_editorial_review(request, review_id):
    """Preview the content of an editorial review request email then send it
     with any necessary attachments.
     """

    review = get_object_or_404(models.EditorialReview, pk=review_id)
    email_setting = 'editorial_review_{0}'.format(review.content_type)
    task_url = logic.get_task_url(review, request)

    email_text = email.get_email_content(request, email_setting, {
        'review': review,
        'sender': request.user,
        'task_url': task_url
    })
    subject = setting_util.get_setting(
        setting_name='editorial_review',
        setting_group_name='email_subject',
        default='Editorial Review Request',
    )

    if request.POST:
        email_text = request.POST.get('email_text')
        attachment_files = request.FILES.getlist('attachment')
        attachments = []
        custom_from_email = None
        if request.user.email:
            custom_from_email = request.user.email

        if attachment_files:
            for file in attachment_files:
                attachment = handle_email_file(
                    file, 'other', request.user,
                    "Attachment: Uploaded by {}".format(request.user.username))
                attachments.append(attachment)

        if review.content_type.model == 'proposal':
            email.send_prerendered_email(request=request,
                                         html_template=email_text,
                                         subject=subject,
                                         to=review.user.email,
                                         attachments=attachments,
                                         book=None,
                                         proposal=review.content_object,
                                         custom_from_email=custom_from_email)
            messages.add_message(
                request, messages.INFO,
                'Editorial review assignment sent for {} '.format(review))
            return redirect(
                reverse('view_proposal',
                        kwargs={'proposal_id': review.content_object.id}))
        else:
            email.send_prerendered_email(request=request,
                                         html_template=email_text,
                                         subject=subject,
                                         to=review.user.email,
                                         attachments=attachments,
                                         book=review.content_object,
                                         proposal=None,
                                         custom_from_email=custom_from_email)
            messages.add_message(
                request, messages.INFO,
                'Editorial review assignment sent for {} '.format(review))
            return redirect(
                reverse('editor_review',
                        kwargs={'submission_id': review.content_object.id}))

    template = 'editorialreview/email_editorial_review.html'
    context = {
        'review': review,
        'email_text': email_text,
        'subject': subject,
    }

    return render(request, template, context)
Example #40
0
def editorial_review(request, review_id):
    """Complete an editorial review."""

    review = get_object_or_404(models.EditorialReview,
                               pk=review_id,
                               completed__isnull=True)

    form = review_forms.GeneratedForm(form=review.review_form)
    recommendation_form = forms.RecommendationForm(instance=review)
    submission = review.content_object
    book = isinstance(submission, core_models.Book)
    proposal = isinstance(submission, submission_models.Proposal)

    if book:
        peer_reviews = core_models.ReviewAssignment.objects.filter(
            book=submission,
            completed__isnull=False,
        )
    else:
        peer_reviews = submission_models.ProposalReview.objects.filter(
            proposal=submission,
            completed__isnull=False,
        )

    completed_editorial_reviews = models.EditorialReview.objects.filter(
        object_id=submission.id,
        content_type=review.content_type,
        completed__isnull=False,
    )

    if request.POST:  # Handle completed review.
        form = review_forms.GeneratedForm(
            request.POST,
            request.FILES,
            form=review.review_form,
        )
        recommendation_form = forms.RecommendationForm(
            request.POST,
            instance=review,
        )

        if form.is_valid() and recommendation_form.is_valid():
            logic.handle_generated_form_post(review, request)
            review.completed = timezone.now()
            review.save()

            # Add to logs and notify editors.
            message = ("Editorial review assignment for "
                       "'{}' has been completed by {}.".format(
                           submission.title,
                           review.user.profile.full_name(),
                       ))
            short_message = 'Completed'

            if book:
                log.add_log_entry(
                    book=submission,
                    user=review.user,
                    kind='Editorial Review',
                    message=message,
                    short_name=short_message,
                )
                for editor in submission.book_editors.all():
                    notification = core_models.Task(
                        assignee=editor,
                        creator=review.user,
                        text=message,
                        book=submission,
                    )
                    notification.save()
            else:
                log.add_proposal_log_entry(
                    proposal=submission,
                    user=review.user,
                    kind='Editorial Review',
                    message=message,
                    short_name=short_message,
                )

            # Handle email notification to editors.
            subject = get_setting(
                setting_name='editorialreview_completed_email_subject',
                setting_group_name='email_subject',
                default='Editorial review completed',
            )

            email_text = get_setting(
                setting_name='editorialreview_completed_email',
                setting_group_name='email',
                default='message',
            )
            email_text.replace('\n', '<br />')

            from_email = get_setting(
                setting_name='from_address',
                setting_group_name='email',
                default='*****@*****.**',
            )

            press_name = get_setting(
                setting_name='press_name',
                setting_group_name='general',
                default='The publishers',
            )

            try:
                series_editor_email = [submission.series.editor.email]
            except AttributeError:
                series_editor_email = None

            editors_to_notify = User.objects.filter(
                profile__roles__slug='press-editor')
            if submission.book_editors.all():
                editors_to_notify = submission.book_editors.all()

            for editor in editors_to_notify:
                salutation = editor.profile.full_name()

                if editor.profile.salutation:
                    salutation = editor.profile.salutation

                context = {
                    'salutation':
                    salutation,
                    'submission':
                    submission,
                    'review':
                    review,
                    'base_url':
                    core_models.Setting.objects.get(name='base_url').value,
                    'authors': [submission.author]
                    if proposal else submission.author.all(),
                    'press_name':
                    press_name
                }

                email.send_email(subject=subject,
                                 context=context,
                                 html_template=email_text,
                                 from_email=from_email,
                                 to=editor.email,
                                 cc=series_editor_email,
                                 book=submission if book else None,
                                 proposal=submission if proposal else None)
            return redirect(
                reverse('editorial_review_thanks',
                        kwargs={'review_id': review_id}))

    template = 'editorialreview/editorial_review.html'
    context = {
        'review': review,
        'access_key': request.GET.get('access_key'),
        'form': form,
        'recommendation_form': recommendation_form,
        'peer_reviews': peer_reviews,
        'completed_editorial_reviews': completed_editorial_reviews
    }

    return render(request, template, context)
Example #41
0
def send_acknowldgement_email(book, press_editors):
    from_email = Setting.objects.get(
        group__name='email',
        name='from_address',
    ).value
    author_text = Setting.objects.get(
        group__name='email',
        name='author_submission_ack',
    ).value
    editor_text = Setting.objects.get(
        group__name='email',
        name='editor_submission_ack',
    ).value
    press_name = Setting.objects.get(
        group__name='general',
        name='press_name',
    ).value

    try:
        principal_contact_name = Setting.objects.get(
            group__name='general', name='primary_contact_name').value
    except:
        principal_contact_name = None

    context = {
        'base_url': Setting.objects.get(
            group__name='general',
            name='base_url',
        ).value,
        'submission': book,
        'press_name': press_name,
        'principal_contact_name': principal_contact_name,
    }

    email.send_email(
        get_setting('submission_ack_subject', 'email_subject',
                    'Submission Acknowledgement'),
        context,
        from_email,
        book.owner.email,
        author_text,
        book=book,
        kind='submission',
    )

    if len(press_editors) > 1:
        editor = press_editors[0]
        cc_eds = [ed.email for ed in press_editors if ed != press_editors[0]]
    else:
        editor = press_editors[0]
        cc_eds = None

    email.send_email(
        get_setting('new_submission_subject', 'email_subject',
                    'New Submission'),
        context,
        from_email,
        editor.email,
        editor_text,
        book=book,
        cc=cc_eds,
        kind='submission',
    )

    for editor in press_editors:
        notification = Task(
            book=book,
            assignee=editor,
            creator=press_editors[0],
            text='A new submission, {0}, has been made.'.format(book.title),
            workflow='review')
        notification.save()