Example #1
0
def assign_typesetter(request, article_id, production_assignment_id):
    production_assignment = get_object_or_404(models.ProductionAssignment,
                                              pk=production_assignment_id,
                                              closed__isnull=True)
    article = get_object_or_404(submission_models.Article, pk=article_id)
    copyedit_files = logic.get_copyedit_files(article)
    typesetters = logic.get_typesetters(article)
    errors, _dict = None, None

    if request.POST.get('typesetter_id'):
        task = logic.handle_self_typesetter_assignment(production_assignment, request)
        return redirect(reverse('do_typeset_task', kwargs={'typeset_id': task.id}))

    if request.POST:
        task, errors, _dict = logic.handle_assigning_typesetter(production_assignment, request)

        if not errors and task:
            return redirect(reverse('notify_typesetter', kwargs={'typeset_id': task.pk}))

    template = 'production/assign_typesetter.html'
    context = {
        'production_assignment': production_assignment,
        'article': article,
        'copyedit_files': copyedit_files,
        'typesetters': typesetters,
        'errors': errors,
        'dict': _dict,
    }

    return render(request, template, context)
Example #2
0
def assign_typesetter(request, article_id, production_assignment_id):
    """
    Lets a production manager assign a typesetter a task
    :param request: HttpRequest object
    :param article_id: Article object PK
    :param production_assignment_id: ProductionAssignment object PK
    :return: HttpRedirect if POST otherwise HttpResponse
    """
    production_assignment = get_object_or_404(
        models.ProductionAssignment,
        pk=production_assignment_id,
        article__journal=request.journal,
        closed__isnull=True,
    )
    article = get_object_or_404(
        submission_models.Article,
        pk=article_id,
        journal=request.journal,
    )
    copyedit_files = logic.get_copyedit_files(article)
    typesetters = logic.get_typesetters(article)
    typesetter_form = forms.AssignTypesetter(
        article=article,
        files=copyedit_files,
        typesetters=typesetters,
        assignment=production_assignment,
    )

    if request.POST.get('typesetter_id'):
        task = logic.handle_self_typesetter_assignment(production_assignment,
                                                       request)
        return redirect(
            reverse('do_typeset_task', kwargs={'typeset_id': task.id}))

    if request.POST:
        typesetter_form = forms.AssignTypesetter(
            request.POST,
            request.FILES,
            article=article,
            files=copyedit_files,
            typesetters=typesetters,
            assignment=production_assignment,
        )

        if typesetter_form.is_valid():
            task = typesetter_form.save()

            return redirect(
                reverse('notify_typesetter', kwargs={'typeset_id': task.pk}))

    template = 'production/assign_typesetter.html'
    context = {
        'production_assignment': production_assignment,
        'article': article,
        'copyedit_files': copyedit_files,
        'typesetters': typesetters,
        'form': typesetter_form,
    }

    return render(request, template, context)