Created
April 5, 2012 02:16
-
-
Save robrocker7/2307481 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.shortcuts import render_to_response | |
from django.template import RequestContext, Context, loader | |
from django.http import Http404, HttpResponse | |
from django.utils import simplejson | |
from apps.menus.models import Menu, Category, Label, Item, Recommend | |
from apps.menus.forms import CategoryForm, ItemForm | |
def json_response(x): | |
return HttpResponse(simplejson.dumps(x, sort_keys=True, indent=2), | |
content_type='application/json; charset=UTF-8') | |
def add_category(request): | |
if request.method == 'POST': | |
form = CategoryForm(request.POST) | |
if form.is_valid(): | |
formset = form.save(commit=False) | |
formset.order = Category.objects.filter(menu=formset.menu).count() | |
formset.save() | |
return json_response({'success': True}) | |
return json_response({'success': False, | |
'errors':dict(form.errors.items())}) | |
def add_item(request): | |
if request.method == 'POST': | |
form = ItemForm(request.POST) | |
if form.is_valid(): | |
formset = form.save(commit=False); | |
formset.order = Item.objects.filter(category=formset.category).count() | |
formset.save() | |
return json_response({'success': True}) | |
return json_response({'success': False, | |
'errors':dict(form.errors.items())}) | |
def edit_item(request, item_id): | |
if not request.is_ajax(): | |
return HttpResponse('View Only used for AJAX, SORRY!') | |
try: | |
item = Item.objects.get(id=item_id) | |
except Item.DoesNotExist: | |
return json_response({'success': False, 'errors': 'no_item'}) | |
if request.method == 'GET': | |
form = ItemForm(instance=item) | |
t = loader.get_template('menus/_partial/edit_form.html') | |
c = Context({'form':form}) | |
return json_response({'success': True, 'html':t.render(c)}) | |
elif request.method == 'POST': | |
form = ItemForm(request.POST, instance=item) | |
if form.is_valid(): | |
form.save() | |
return json_response({'success': True}) | |
return json_response({'success': False, | |
'errors':dict(form.errors.items())}) | |
return HttpResponse('Must request with GET or POST') | |
def edit_category(request, category_id): | |
if not request.is_ajax(): | |
return HttpResponse('View Only used for AJAX, SORRY!') | |
try: | |
category = Category.objects.get(id=category_id) | |
except Category.DoesNotExist: | |
return json_response({'success': False, 'errors': 'no_category'}) | |
if request.method == 'GET': | |
form = CategoryFOrm(instance=category) | |
t = loader.get_template('menus/_partial/edit_form.html') | |
c = Context({'form': form}) | |
return json_response({'success': True, 'html':t.render(c)}) | |
elif request.method == 'POST': | |
form = CategoryForm(request.POST, instance=category) | |
if form.is_valid(): | |
form.save() | |
return json_response({'success': True}) | |
return json_response({'success': False, | |
'errors':dict(form.errors.items())}) | |
return HttpResponse('Must request with GET or POST') | |
def restaurant_menus(request): | |
# make sure there is a restaurant in the request | |
if request.restaurant is None: | |
return Http404 | |
# checking to see if an update is pushed | |
if request.method == "POST" and request.is_ajax(): | |
menu_objects = simplejson.loads(request.POST['menu_objects']) | |
category_form = CategoryForm() | |
item_form = ItemForm() | |
for key, value in menu_objects.iteritems(): | |
try: | |
category = Category.objects.get( | |
id=key.replace('category_', '')) | |
except: | |
return HttpResponse('fail') | |
category.order = value['order'] | |
category.save() | |
for order, item in value['items'].iteritems(): | |
try: | |
item = Item.objects.get( | |
id=item.replace('item_', '')) | |
except: | |
return HttpResponse('fail') | |
item.order = order | |
item.save() | |
return HttpResponse('ok') | |
else: | |
category_form = CategoryForm() | |
item_form = ItemForm() | |
menus = Menu.objects.filter(restaurant=request.restaurant) | |
return render_to_response('menus/menu.html', | |
{ | |
'menus': menus, | |
'category_form': category_form, | |
'item_form': item_form, | |
}, | |
context_instance=RequestContext(request)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment