Exemple #1
0
def action_detail(request, action_slug):
    """Detail page for an action"""
    action = get_object_or_404(Action, slug=action_slug)
    nav_selected = "group_actions" if action.is_group_project else "solo_actions"
    default_vars = _default_action_vars(action, request.user)
    default_vars.update(_build_action_form_vars(action, request.user))

    try:
        translated_action = TranslatedAction.objects.get(action=action, 
                                                         language=request.LANGUAGE_CODE)
    except TranslatedAction.DoesNotExist:
        translated_action = action

    group_link_forms = []
    action_commit_form = None
    if action.is_group_project and not request.user.is_anonymous():
        for group in Group.objects.filter(users=request.user).order_by("name"):
            form = GroupActionCommitForm(user=request.user, action=action,
                                         group=group)
            try:
                progress = GroupActionProgress.objects.get(
                    action=action, 
                    group=group)
                days_till_commitment = 0
                if progress.date_committed:
                    days_till_commitment = (progress.date_committed -
                                            datetime.date.today())
                    days_till_commitment = (days_till_commitment.days
                                            if days_till_commitment.days > 0
                                            else 0)
                form.progress = progress
                form.days_till_commitment = days_till_commitment
            except GroupActionProgress.DoesNotExist:
                form.progress = None
            group_link_forms.append(form)
    else:
        action_commit_form = ActionCommitForm(user=request.user, action=action)

    group_link_form = ActionGroupLinkForm(request.user, instance=action)

    if request.method == "POST":
        group_link_form = ActionGroupLinkForm(request.user, instance=action, data=request.POST)
        if group_link_form.is_valid():
            action = group_link_form.save()
            messages.success(request, _("Thanks for taking on this project with your group."))
            return redirect("action_detail", action_slug=action.slug)

    default_vars.update(locals())
    return render_to_response("actions/action_detail.html", default_vars, RequestContext(request))