registrasion/views.py
def amend_registration(request, user_id):
    ''' Allows staff to amend a user's current registration cart, and etc etc.
    '''

    user = User.objects.get(id=int(user_id))
    current_cart = CartController.for_user(user)

    items = commerce.ProductItem.objects.filter(
        cart=current_cart.cart,
    ).select_related("product")
    initial = [{"product": i.product, "quantity": i.quantity} for i in items]

    StaffProductsFormSet = forms.staff_products_formset_factory(user)
    formset = StaffProductsFormSet(
        request.POST or None,
        initial=initial,
        prefix="products",
    )

    for item, form in zip(items, formset):
        queryset = inventory.Product.objects.filter(id=item.product.id)
        form.fields["product"].queryset = queryset

    voucher_form = forms.VoucherForm(
        request.POST or None,
        prefix="voucher",
    )

    if request.POST and formset.is_valid():

        pq = [
            (f.cleaned_data["product"], f.cleaned_data["quantity"])
            for f in formset
            if "product" in f.cleaned_data and
            f.cleaned_data["product"] is not None
        ]

        try:
            current_cart.set_quantities(pq)
            return redirect(amend_registration, user_id)
        except ValidationError as ve:
            for ve_field in ve.error_list:
                product, message = ve_field.message
                for form in formset:
                    if "product" not in form.cleaned_data:
                        # This is the empty form.
                        continue
                    if form.cleaned_data["product"] == product:
                        form.add_error("quantity", message)

    if request.POST and voucher_form.has_changed() and voucher_form.is_valid():
        try:
            current_cart.apply_voucher(voucher_form.cleaned_data["voucher"])
            return redirect(amend_registration, user_id)
        except ValidationError as ve:
            voucher_form.add_error(None, ve)

    ic = ItemController(user)
    data = {
        "user": user,
        "paid": ic.items_purchased(),
        "cancelled": ic.items_released(),
        "form": formset,
        "voucher_form": voucher_form,
    }

    return render(request, "registrasion/amend_registration.html", data)
def amend_registration(request, user_id):
    ''' Allows staff to amend a user's current registration cart, and etc etc.
    '''

    user = User.objects.get(id=int(user_id))
    current_cart = CartController.for_user(user)

    items = commerce.ProductItem.objects.filter(
        cart=current_cart.cart,
    ).select_related("product")
    initial = [{"product": i.product, "quantity": i.quantity} for i in items]

    StaffProductsFormSet = forms.staff_products_formset_factory(user)
    formset = StaffProductsFormSet(
        request.POST or None,
        initial=initial,
        prefix="products",
    )

    for item, form in zip(items, formset):
        queryset = inventory.Product.objects.filter(id=item.product.id)
        form.fields["product"].queryset = queryset

    voucher_form = forms.VoucherForm(
        request.POST or None,
        prefix="voucher",
    )

    if request.POST and formset.is_valid():

        pq = [
            (f.cleaned_data["product"], f.cleaned_data["quantity"])
            for f in formset
            if "product" in f.cleaned_data and
            f.cleaned_data["product"] is not None
        ]

        try:
            current_cart.set_quantities(pq)
            return redirect(amend_registration, user_id)
        except ValidationError as ve:
            for ve_field in ve.error_list:
                product, message = ve_field.message
                for form in formset:
                    if "product" not in form.cleaned_data:
                        # This is the empty form.
                        continue
                    if form.cleaned_data["product"] == product:
                        form.add_error("quantity", message)

    if request.POST and voucher_form.has_changed() and voucher_form.is_valid():
        try:
            current_cart.apply_voucher(voucher_form.cleaned_data["voucher"])
            return redirect(amend_registration, user_id)
        except ValidationError as ve:
            voucher_form.add_error(None, ve)

    ic = ItemController(user)
    data = {
        "user": user,
        "paid": ic.items_purchased(),
        "cancelled": ic.items_released(),
        "form": formset,
        "voucher_form": voucher_form,
    }

    return render(request, "registrasion/amend_registration.html", data)
def amend_registration ( request , user_id ) : user = User . objects . get ( id = int ( user_id ) ) current_cart = CartController . for_user ( user ) items = commerce . ProductItem . objects . filter ( cart = current_cart . cart , ) . select_related ( "product" ) initial = [ { "product" : i . product , "quantity" : i . quantity } for i in items ] StaffProductsFormSet = forms . staff_products_formset_factory ( user ) formset = StaffProductsFormSet ( request . POST or None , initial = initial , prefix = "products" , ) for item , form in zip ( items , formset ) : queryset = inventory . Product . objects . filter ( id = item . product . id ) form . fields [ "product" ] . queryset = queryset voucher_form = forms . VoucherForm ( request . POST or None , prefix = "voucher" , ) if request . POST and formset . is_valid ( ) : pq = [ ( f . cleaned_data [ "product" ] , f . cleaned_data [ "quantity" ] ) for f in formset if "product" in f . cleaned_data and f . cleaned_data [ "product" ] is not None ] try : current_cart . set_quantities ( pq ) return redirect ( amend_registration , user_id ) except ValidationError as ve : for ve_field in ve . error_list : product , message = ve_field . message for form in formset : if "product" not in form . cleaned_data : # This is the empty form. continue if form . cleaned_data [ "product" ] == product : form . add_error ( "quantity" , message ) if request . POST and voucher_form . has_changed ( ) and voucher_form . is_valid ( ) : try : current_cart . apply_voucher ( voucher_form . cleaned_data [ "voucher" ] ) return redirect ( amend_registration , user_id ) except ValidationError as ve : voucher_form . add_error ( None , ve ) ic = ItemController ( user ) data = { "user" : user , "paid" : ic . items_purchased ( ) , "cancelled" : ic . items_released ( ) , "form" : formset , "voucher_form" : voucher_form , } return render ( request , "registrasion/amend_registration.html" , data )
Allows staff to amend a user's current registration cart, and etc etc.
Allows staff to amend a user s current registration cart and etc etc .