def action_undo(request, action_slug): action = get_object_or_404(Action, slug=action_slug) if request.method == "GET": return redirect("action_detail", action_slug=action.slug) success = False if action.is_group_project: form = GroupActionCommitForm(user=request.user, action=action, data=request.POST, mark_undone=True) if form.is_valid() and action.undo_for_group(form.group_obj): success = True else: if action.undo_for_user(request.user): success = True if success: messages.success(request, _("No worries. We've updated the record. " "Let us know when you're finished with " "this action.")) messages.add_message(request, GA_TRACK_PAGEVIEW, '/actions/undo') messages.add_message(request, GA_TRACK_PAGEVIEW, '/actions/undo/%s' % action_slug) return redirect("action_detail", action_slug=action.slug)
def action_cancel(request, action_slug): action = get_object_or_404(Action, slug=action_slug) success = False if request.method == "POST": if action.is_group_project: form = GroupActionCommitForm(user=request.user, action=action, data=request.POST, mark_cancelled=True) if form.is_valid() and action.cancel_for_group(form.group_obj): success = True else: if action.cancel_for_user(request.user): success = True if success: messages.success(request, _("We cancelled your commitment. If " "you're having trouble completing an " "action, try asking a question. " "Other members will be happy to help!")) messages.add_message(request, GA_TRACK_PAGEVIEW, '/actions/cancel') messages.add_message(request, GA_TRACK_PAGEVIEW, '/actions/cancel/%s' % action_slug) return redirect("action_detail", action_slug=action.slug) return render_to_response("actions/action_cancel.html", locals(), RequestContext(request))
def action_commit(request, action_slug): action = get_object_or_404(Action, slug=action_slug) if request.method == "GET": return redirect("action_detail", action_slug=action.slug) if action.is_group_project: action_commit_form = GroupActionCommitForm(user=request.user, action=action, data=request.POST) else: action_commit_form = ActionCommitForm(user=request.user, action=action, data=request.POST) # TODO: There is weirdness here if you have already completed the action and try to commit again. # This can happen when you are logged out, commit to an action you've already completes, are asked to log in, and are directed back to the action detail page. if action_commit_form.is_valid(): uap, record = action_commit_form.save() if record: record_created.send(sender=None, request=request, record=record) messages.success(request, _("Thanks for making a commitment.")) messages.add_message(request, GA_TRACK_PAGEVIEW, '/actions/commit') messages.add_message(request, GA_TRACK_PAGEVIEW, '/actions/commit/%s' % action_slug) return redirect("action_detail", action_slug=action.slug) default_vars = _default_action_vars(action, request.user) default_vars.update(locals()) return render_to_response("actions/action_detail.html", default_vars, RequestContext(request))
def action_complete(request, action_slug): """invoked when a user marks an action as completed""" action = get_object_or_404(Action, slug=action_slug) if request.method == "GET": return redirect("action_detail", action_slug=action.slug) if action.is_group_project: action_commit_form = GroupActionCommitForm(user=request.user, action=action, mark_completed=True, data=request.POST) if action_commit_form.is_valid(): uap, record = action_commit_form.save() else: return redirect("action_detail", action_slug=action.slug) else: uap, record = action.complete_for_user(request.user) if record: record_created.send(sender=None, request=request, record=record) messages.success(request, _("Nice work! We've updated your profile, " "so all your friends can see your progress ")) messages.add_message(request, GA_TRACK_PAGEVIEW, '/actions/complete') messages.add_message(request, GA_TRACK_PAGEVIEW, '/actions/complete/%s' % action_slug) return redirect("action_detail", action_slug=action.slug)