X-Git-Url: http://git.ithinksw.org/~kgodey/maayanwich.git/blobdiff_plain/851d4e0ba5381535c55fe4347103aaa53c785606..598bab51785e33f0f224d0603b260a9ae35cac47:/views.py diff --git a/views.py b/views.py index b84a926..309aa2f 100644 --- a/views.py +++ b/views.py @@ -1,4 +1,4 @@ -from django.http import HttpResponse, Http404 +from django.http import HttpResponse, Http404, HttpResponseRedirect from django.contrib.auth.models import User from forms import SandwichForm, IngredientForm, NewUserForm from django.shortcuts import render_to_response @@ -7,7 +7,12 @@ from models import Sandwich, Ingredient from django.contrib.auth import authenticate, login, logout from django.contrib.auth.forms import AuthenticationForm from django.template import RequestContext +from django.core import serializers +from slugify import SlugifyUniquely +from recipes.settings import MEDIA_URL import datetime +import django.utils.simplejson as json +from django.core.urlresolvers import reverse def sidebar_context(request): x = Sandwich.objects.order_by('-date_made') @@ -16,7 +21,7 @@ def sidebar_context(request): else: sandwiches = x monthly = Sandwich.objects.dates('date_made', 'month') - return {'sandwiches': sandwiches, 'monthly': monthly, 'user': request.user} + return {'sandwiches': sandwiches, 'monthly': monthly, 'user': request.user, 'media_url': MEDIA_URL } def add_sandwich(request): @@ -27,14 +32,24 @@ def add_sandwich(request): newsandwich = form.save(commit=False) newsandwich.user = request.user newsandwich.save() - thankshtml = "

Thanks! Your sandwich has been added!

" - return HttpResponse(thankshtml) # Redirect after POST + x = request.POST['ing'] + x = x.strip() + y = x.split(',') + for n in y: + if n.isdigit(): + newsandwich.ingredients.add(Ingredient.objects.get(id=n)) + else: + n = n.lstrip('new:') + newingredient = Ingredient(name=n, slug=SlugifyUniquely(n, Ingredient)) + newingredient.save() + newsandwich.ingredients.add(newingredient) + newsandwich.save() + return HttpResponseRedirect(newsandwich.get_absolute_url()) else: form = SandwichForm(initial={'user': request.user}) # An unbound form return render_to_response('sandwich.html', {'sform': form,}, context_instance=RequestContext(request)) else: - thankshtml = "

You are not logged in.

" - return HttpResponse(thankshtml) # Redirect after POST + return HttpResponseRedirect(reverse('login2')) def add_ingredient(request): if request.user.is_authenticated(): @@ -91,16 +106,20 @@ def specific_sandwich(request, slug): return render_to_response('onesandwich.html', {'s': s,}, context_instance=RequestContext(request)) def logout_view(request): + x = reverse('index') + if 'HTTP_REFERER' in request.META: + x = request.META['HTTP_REFERER'] if request.user.is_authenticated(): logout(request) - thankshtml = "

You have been logged out.

" - return HttpResponse(thankshtml) + return HttpResponseRedirect(x) else: - thankshtml = "

You are not logged in.

" - return HttpResponse(thankshtml) + return HttpResponseRedirect(x) def login_view(request): + x = reverse('index') + if 'HTTP_REFERER' in request.META: + x = request.META['HTTP_REFERER'] if Sandwich.objects.count() > 5: sandwiches = Sandwich.objects.order_by('-date_made')[:5] else: @@ -112,17 +131,38 @@ def login_view(request): if user is not None: if user.is_active: login(request, user) - thankshtml = "

You have been logged in

" - return HttpResponse(thankshtml) + return HttpResponseRedirect(x) else: - thankshtml = "

Disabled account. Sorry.

" - return HttpResponse(thankshtml) + return HttpResponseRedirect(x) else: - thankshtml = "

Invalid login!

" - return HttpResponse(thankshtml) + return HttpResponseRedirect('login') except KeyError: aform = AuthenticationForm() return render_to_response('login.html', {'aform': aform,}, context_instance=RequestContext(request)) + +def login_view2(request): + x = reverse('index') + if 'HTTP_REFERER' in request.META: + x = request.META['HTTP_REFERER'] + if Sandwich.objects.count() > 5: + sandwiches = Sandwich.objects.order_by('-date_made')[:5] + else: + sandwiches = Sandwich.objects.order_by('-date_made') + try: + username = request.POST['username'] + password = request.POST['password'] + user = authenticate(username=username, password=password) + if user is not None: + if user.is_active: + login(request, user) + return HttpResponseRedirect(x) + else: + return HttpResponseRedirect(x) + else: + return HttpResponseRedirect('login') + except KeyError: + aform = AuthenticationForm() + return render_to_response('pleaselogin.html', {'aform': aform,}, context_instance=RequestContext(request)) def create_user(request): @@ -131,8 +171,7 @@ def create_user(request): else: sandwiches = Sandwich.objects.order_by('-date_made') if request.user.is_authenticated(): - thankshtml = "

You are already logged in!

" - return HttpResponse(thankshtml) + return HttpResponseRedirect('index') elif request.method == 'POST': # If the form has been submitted... form = NewUserForm(request.POST) # A form bound to the POST data if form.is_valid(): # All validation rules pass @@ -148,11 +187,28 @@ def create_user(request): user.first_name = first_name user.last_name = last_name user.save() - thankshtml = "

Thanks! You are now a new user!

" - return HttpResponse(thankshtml) # Redirect after POST + return HttpResponseRedirect('index') else: - thankshtml = "

Your passwords don't match!

" - return HttpResponse(thankshtml) # Redirect after POST + return HttpResponseRedirect('signup') else: form = NewUserForm() # An unbound form - return render_to_response('newuser.html', {'cform': form,}, context_instance=RequestContext(request)) \ No newline at end of file + return render_to_response('newuser.html', {'cform': form,}, context_instance=RequestContext(request)) + + +def ajaxfun(request): + if request.method == 'GET': + if 'q' in request.GET: + query = request.GET['q'] + ingredients = Ingredient.objects.filter(name__icontains=query).order_by('name') + responselist = [] + is_in = False + for i in ingredients: + responselist.append({'id': str(i.pk), 'name': i.name}) + if i.name == query: + is_in = True + if is_in == False: + responselist.append({'id': 'new:' + query, 'name': query}) + response = json.dumps(responselist) + return HttpResponse(response) + else: + return HttpResponse('{}') \ No newline at end of file