Esempio n. 1
0
def editor_review(request, article_id, copyedit_id):
    """
    Allows Editor to review a copyedit.
    :param request: Django request object
    :param article_id: Article PK
    :param copyedit_id: CopyeditAssignment PK
    :return: Contextualised Django template
    """
    article = get_object_or_404(submission_models.Article, pk=article_id)
    copyedit = get_object_or_404(models.CopyeditAssignment, pk=copyedit_id)

    if request.POST:
        if 'accept_note' in request.POST:
            logic.accept_copyedit(copyedit, article, request)
        elif 'review_note' in request.POST:
            logic.request_author_review(copyedit, article, request)
        elif 'reset_note' in request.POST:
            logic.reset_copyedit(copyedit, article, request)

        return redirect(reverse('article_copyediting', kwargs={'article_id': article.id}))

    if request.GET.get('file_id'):
        return logic.attempt_to_serve_file(request, copyedit)

    template = 'copyediting/editor_review.html'
    context = {
        'article': article,
        'copyedit': copyedit,
        'accept_message': logic.get_copyedit_message(request, article, copyedit, 'copyeditor_ack'),
        'review_message': logic.get_copyedit_message(request, article, copyedit, 'copyeditor_notify_author'),
        'reopen_message': logic.get_copyedit_message(request, article, copyedit, 'copyeditor_reopen_task'),
    }

    return render(request, template, context)
Esempio n. 2
0
def author_update_file(request, article_id, author_review_id, file_id):
    """
    Allows an article's author to update a copyeditor_file
    :param request: django request object
    :param article_id: Article pk
    :param author_review_id: AuthorReview pk
    :param file_id: File pk
    :return: contextualised django template
    """
    author_review = get_object_or_404(models.AuthorReview,
                                      pk=author_review_id,
                                      assignment__article__id=article_id,
                                      date_decided__isnull=True)
    copyedit = author_review.assignment

    try:
        file = copyedit.copyeditor_files.get(pk=file_id)
    except core_models.File.DoesNotExist:
        raise Http404

    if request.POST and request.FILES:

        if 'replacement' in request.POST:
            uploaded_file = request.FILES.get('replacement-file')
            label = request.POST.get('label')
            new_file = files.save_file_to_article(uploaded_file,
                                                  copyedit.article,
                                                  request.user,
                                                  replace=file,
                                                  is_galley=False,
                                                  label=label)
            files.replace_file(copyedit.article,
                               file,
                               new_file,
                               copyedit=copyedit,
                               retain_old_label=False)
            author_review.files_updated.add(new_file)

        return redirect(
            reverse('author_copyedit',
                    kwargs={
                        'article_id': article_id,
                        'author_review_id': author_review.pk
                    }))

    if request.GET.get('file_id'):
        return logic.attempt_to_serve_file(request, copyedit)

    template = 'copyediting/author_update_file.html'
    context = {
        'author_review': author_review,
        'copyedit': copyedit,
        'file': file,
    }

    return render(request, template, context)
Esempio n. 3
0
def author_copyedit(request, article_id, author_review_id):
    """
    Allows an author to review a copyedit.
    :param request: django request object
    :param article_id: Article PK
    :param author_review_id: AuthorReview pk
    :return: contextualised template
    """
    author_review = get_object_or_404(models.AuthorReview,
                                      pk=author_review_id,
                                      assignment__article__id=article_id,
                                      date_decided__isnull=True)
    copyedit = author_review.assignment
    form = forms.AuthorCopyeditForm(instance=author_review)

    if request.POST:
        form = forms.AuthorCopyeditForm(request.POST, instance=author_review)

        if form.is_valid():
            author_review = form.save(commit=False)
            author_review.date_decided = timezone.now()
            author_review.save()

            kwargs = {
                'author_review': author_review,
                'copyedit': copyedit,
                'request': request
            }
            event_logic.Events.raise_event(
                event_logic.Events.ON_COPYEDIT_AUTHOR_REVIEW_COMPLETE,
                **kwargs)

            return redirect(reverse('core_dashboard'))

    if request.GET.get('file_id'):
        return logic.attempt_to_serve_file(request, copyedit)

    template = 'copyediting/author_review.html'
    context = {
        'author_review': author_review,
        'copyedit': copyedit,
        'form': form,
    }

    return render(request, template, context)