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)
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)
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)