Files @ f3614fcf5285
Branch filter:

Location: symposion_app/symposion/boxes/views.py

Patrick Altman
Merge branch 'master' of https://github.com/pyohio/symposion into pyohio-master

Conflicts:
README.md
symposion/boxes/urls.py
symposion/cms/urls.py
symposion/proposals/actions.py
symposion/proposals/urls.py
symposion/proposals/views.py
symposion/reviews/tests.py
symposion/reviews/urls.py
symposion/reviews/views.py
symposion/schedule/forms.py
symposion/schedule/models.py
symposion/schedule/views.py
symposion/speakers/fixture_gen.py
symposion/sponsorship/urls.py
symposion/templates/cms/file_create.html
symposion/templates/cms/file_index.html
symposion/templates/conference/user_list.html
symposion/templates/dashboard.html
symposion/templates/emails/proposal_new_message/message.html
symposion/templates/emails/proposal_updated/message.html
symposion/templates/emails/speaker_addition/message.html
symposion/templates/emails/speaker_invite/message.html
symposion/templates/proposals/_pending_proposal_row.html
symposion/templates/proposals/_proposal_fields.html
symposion/templates/proposals/_proposal_row.html
symposion/templates/proposals/proposal_cancel.html
symposion/templates/proposals/proposal_detail.html
symposion/templates/proposals/proposal_edit.html
symposion/templates/proposals/proposal_speaker_manage.html
symposion/templates/proposals/proposal_submit.html
symposion/templates/reviews/_review_table.html
symposion/templates/reviews/base.html
symposion/templates/reviews/result_notification.html
symposion/templates/reviews/result_notification_prepare.html
symposion/templates/reviews/review_admin.html
symposion/templates/reviews/review_assignment.html
symposion/templates/reviews/review_detail.html
symposion/templates/reviews/review_review.html
symposion/templates/reviews/review_stats.html
symposion/templates/schedule/_edit_grid.html
symposion/templates/schedule/_grid.html
symposion/templates/schedule/_slot_edit.html
symposion/templates/schedule/presentation_detail.html
symposion/templates/schedule/schedule_list.html
symposion/templates/speakers/speaker_create.html
symposion/templates/speakers/speaker_edit.html
symposion/templates/speakers/speaker_profile.html
symposion/templates/sponsorship/add.html
symposion/templates/sponsorship/apply.html
symposion/templates/sponsorship/detail.html
symposion/templates/sponsorship/list.html
symposion/templates/teams/team_detail.html
from django.http import HttpResponseForbidden
from django.shortcuts import redirect
from django.views.decorators.http import require_POST

from symposion.boxes.authorization import load_can_edit
from symposion.boxes.forms import BoxForm
from symposion.boxes.models import Box


# @@@ problem with this is that the box_edit.html and box_create.html won't have domain objects in
# context
def get_auth_vars(request):
    auth_vars = {}
    if request.method == "POST":
        keys = [k for k in request.POST.keys() if k.startswith("boxes_auth_")]
        for key in keys:
            auth_vars[key.replace("boxes_auth_", "")] = request.POST.get(key)
        auth_vars["user"] = request.user
    return auth_vars


@require_POST
def box_edit(request, label):

    if not load_can_edit()(request, **get_auth_vars(request)):
        return HttpResponseForbidden()

    next = request.GET.get("next")

    try:
        box = Box.objects.get(label=label)
    except Box.DoesNotExist:
        box = None

    form = BoxForm(request.POST, instance=box, prefix=label)

    if form.is_valid():
        if box is None:
            box = form.save(commit=False)
            box.label = label
            box.created_by = request.user
            box.last_updated_by = request.user
            box.save()
        else:
            form.save()
        return redirect(next)