Ejemplo n.º 1
0
def submit_funding(request, article_id):
    """
    Presents a form for the user to complete with article information
    :param request: HttpRequest object
    :param article_id: Article PK
    :return: HttpResponse or HttpRedirect
    """
    article = get_object_or_404(models.Article, pk=article_id)
    additional_fields = models.Field.objects.filter(journal=request.journal)
    submission_summary = setting_handler.get_setting(
        'general', 'submission_summary', request.journal).processed_value
    form = forms.ArticleInfoSubmit(instance=article,
                                   additional_fields=additional_fields,
                                   submission_summary=submission_summary,
                                   journal=request.journal)

    if request.POST:

        if 'next_step' in request.POST:
            article.current_step = 5
            article.save()
            return redirect(
                reverse('submit_review', kwargs={'article_id': article_id}))

        funder = models.Funder(name=request.POST.get('funder_name',
                                                     default=''),
                               fundref_id=request.POST.get('funder_doi',
                                                           default=''),
                               funding_id=request.POST.get('grant_number',
                                                           default=''))

        funder.save()
        article.funders.add(funder)
        article.save()

    template = 'admin/submission//submit_funding.html'
    context = {
        'article': article,
        'form': form,
        'additional_fields': additional_fields,
    }

    return render(request, template, context)
Ejemplo n.º 2
0
def edit_metadata(request, article_id):
    """
    Allows the Editors and Production Managers to edit an Article's metadata/
    :param request: request object
    :param article_id: PK of an Article
    :return: contextualised django template
    """
    article = get_object_or_404(models.Article, pk=article_id)
    submission_summary = setting_handler.get_setting(
        'general',
        'submission_summary',
        request.journal,
    ).processed_value
    info_form = forms.ArticleInfo(
        instance=article,
        submission_summary=submission_summary,
        pop_disabled_fields=False,
    )
    frozen_author, modal = None, None
    return_param = request.GET.get('return')
    reverse_url = '{0}?return={1}'.format(
        reverse(
            'edit_metadata',
            kwargs={'article_id': article.pk}
        ),
        return_param,
    )

    if request.GET.get('author'):
        frozen_author, modal = logic.get_author(request, article)
        author_form = forms.EditFrozenAuthor(instance=frozen_author)
    else:
        author_form = forms.EditFrozenAuthor()

    if request.POST:
        if 'add_funder' in request.POST:
            funder = models.Funder(
                name=request.POST.get('funder_name', default=''),
                fundref_id=request.POST.get('funder_doi', default=''),
                funding_id=request.POST.get('grant_number', default='')
            )

            funder.save()
            article.funders.add(funder)
            article.save()

        if 'metadata' in request.POST:
            info_form = forms.ArticleInfo(
                request.POST,
                instance=article,
                submission_summary=submission_summary,
                pop_disabled_fields=False,
            )

            if info_form.is_valid():
                info_form.save(request=request)
                messages.add_message(
                    request,
                    messages.SUCCESS,
                    'Metadata updated.',
                )
                return redirect(reverse_url)

        if 'author' in request.POST:
            author_form = forms.EditFrozenAuthor(
                request.POST,
                instance=frozen_author,
            )

            if author_form.is_valid():
                saved_author = author_form.save()
                saved_author.article = article
                saved_author.save()
                messages.add_message(
                    request,
                    messages.SUCCESS,
                    'Author {0} updated.'.format(saved_author.full_name()),
                )
                return redirect(reverse_url)

        if 'delete' in request.POST:
            frozen_author_id = request.POST.get('delete')
            frozen_author = get_object_or_404(models.FrozenAuthor,
                                              pk=frozen_author_id,
                                              article=article,
                                              article__journal=request.journal)
            frozen_author.delete()
            messages.add_message(
                request,
                messages.SUCCESS,
                'Frozen Author deleted.',
            )
            return redirect(reverse_url)

    template = 'submission/edit/metadata.html'
    context = {
        'article': article,
        'info_form': info_form,
        'author_form': author_form,
        'modal': modal,
        'frozen_author': frozen_author,
        'return': return_param
    }

    return render(request, template, context)