def random_order_form(): no_variants = True while no_variants: item = Item.objects.order_by('?')[0] if item.variant_set.count(): v = item.variant_set.all()[0] v.schedule = None v.save() break item.taxable = True item.save() form_class = get_order_form(item) data = data_for_order_form(item) bound_form = form_class(data, location=Location.objects.all()[0]) bound_form.full_clean() return item, bound_form
@online_ordering def order_item(request, section_id, section_slug, item_id, item_slug): if not request.location: return HttpResponseRedirect(reverse('change_location')) i = get_object_or_404(Item, section__slug=section_slug, section__id=section_id, id=item_id, slug=item_slug, site=request.site) try: assert request.site.is_open(request.location) and i.is_available(request.location) except OrderingError, e: if request.is_mobile: return HttpResponse(json.dumps({ 'error': True, 'msg': e.msg })) messages.warning(request, e.msg) return HttpResponseRedirect(e.redirect_to) OrderForm = get_order_form(i) total = i.variant_set.order_by('-price')[0].price if request.method == 'POST': form = OrderForm(request.POST, location=request.location) if form.is_valid(): request.cart.add(i, form) if request.is_mobile: return HttpResponse(request.cart.to_json()) else: msg = """%s added to your order. You can <a href="%s">complete your order now</a> or <a href="/menu/">add more items</a>.""" % ( i.name, reverse('preview_order')) messages.success(request, msg) return HttpResponseRedirect(i.section.get_absolute_url()) elif request.is_mobile: return HttpResponse(json.dumps({