X-Git-Url: http://git.ithinksw.org/~kgodey/maayanwich.git/blobdiff_plain/2fa1060c2b4ff808834251a9e36be456b6af896f..3cd54f9577831cd75a05ce890aa3f52b4b4885ce:/views.py diff --git a/views.py b/views.py index dff7b66..51be20d 100644 --- a/views.py +++ b/views.py @@ -1,62 +1,181 @@ -from django.http import HttpResponse -from forms import SandwichForm, IngredientForm +from django.http import HttpResponse, Http404 +from django.contrib.auth.models import User +from forms import SandwichForm, IngredientForm, NewUserForm from django.shortcuts import render_to_response from django.core.files.uploadedfile import SimpleUploadedFile from models import Sandwich, Ingredient -from django.http import Http404 +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 import datetime +import django.utils.simplejson as json + +def sidebar_context(request): + x = Sandwich.objects.order_by('-date_made') + if x.count() > 5: + sandwiches = x[:5] + else: + sandwiches = x + monthly = Sandwich.objects.dates('date_made', 'month') + return {'sandwiches': sandwiches, 'monthly': monthly, 'user': request.user} def add_sandwich(request): - if request.method == 'POST': # If the form has been submitted... - form = SandwichForm(request.POST, request.FILES) # A form bound to the POST data - if form.is_valid(): # All validation rules pass - newsandwich = form.save() - newsandwich.save() - thankshtml = "
Thanks! Your sandwich has been added!
" - return HttpResponse(thankshtml) # Redirect after POST + if request.user.is_authenticated(): + if request.method == 'POST': # If the form has been submitted... + form = SandwichForm(request.POST, request.FILES) # A form bound to the POST data + if form.is_valid(): # All validation rules pass + newsandwich = form.save(commit=False) + newsandwich.user = request.user + newsandwich.save() + 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)) + newsandwich.save() + thankshtml = "Thanks! Your sandwich has been added!
" + return HttpResponse(thankshtml) # Redirect after POST + else: + form = SandwichForm(initial={'user': request.user}) # An unbound form + return render_to_response('sandwich.html', {'sform': form,}, context_instance=RequestContext(request)) else: - form = SandwichForm() # An unbound form - - return render_to_response('sandwich.html', {'sform': form,}) - + thankshtml = "You are not logged in.
" + return HttpResponse(thankshtml) # Redirect after POST def add_ingredient(request): - if request.method == 'POST': # If the form has been submitted... - form = IngredientForm(request.POST) # A form bound to the POST data - if form.is_valid(): # All validation rules pass - newsandwich = form.save() - newsandwich.save() - thankshtml = "Thanks! Your ingredient has been saved!
" - return HttpResponse(thankshtml) # Redirect after POST - else: - form = IngredientForm() # An unbound form + if request.user.is_authenticated(): + if request.method == 'POST': # If the form has been submitted... + form = IngredientForm(request.POST) # A form bound to the POST data + if form.is_valid(): # All validation rules pass + newsandwich = form.save() + newsandwich.save() + thankshtml = "Thanks! Your ingredient has been saved!
" + return HttpResponse(thankshtml) # Redirect after POST + else: + form = IngredientForm() # An unbound form - return render_to_response('ingredient.html', {'iform': form,}) - + return render_to_response('ingredient.html', {'iform': form,}, context_instance=RequestContext(request)) + else: + thankshtml = "You are not logged in.
" + return HttpResponse(thankshtml) # Redirect after POST def all_sandwich(request): try: - sandwiches = Sandwich.objects.all() + allsandwiches = Sandwich.objects.all() except Sandwich.DoesNotExist: raise Http404 - return render_to_response('allsandwiches.html', {'sandwiches': sandwiches,}) + return render_to_response('allsandwiches.html', {'allsandwiches': allsandwiches,}, context_instance=RequestContext(request)) - -def newsandwiches(request): + +def sandwich_month(request, year, month): try: - if Sandwich.objects.count() > 5: - sandwiches = Sandwich.objects.order_by('date_made')[:5] - else: - sandwiches = Sandwich.objects.order_by('date_made') + ms = Sandwich.objects.filter(date_made__month=month, date_made__year=year) except Sandwich.DoesNotExist: raise Http404 - return render_to_response('allsandwiches.html', {'sandwiches': sandwiches,}) - + return render_to_response('allsandwiches.html', {'allsandwiches': ms,}, context_instance=RequestContext(request)) +def current_home(request): + temp = Sandwich.objects.order_by('-date_made')[0] + curr_month = temp.date_made.month + curr_year = temp.date_made.year + try: + ms = Sandwich.objects.filter(date_made__month=curr_month, date_made__year=curr_year) + except Sandwich.DoesNotExist: + raise Http404 + return render_to_response('allsandwiches.html', {'allsandwiches': ms,}, context_instance=RequestContext(request)) + + def specific_sandwich(request, slug): try: - sandwiches = Sandwich.objects.get(slug=slug) + s = Sandwich.objects.get(slug=slug) + if Sandwich.objects.count() > 5: + sandwiches = Sandwich.objects.order_by('-date_made')[:5] + else: + sandwiches = Sandwich.objects.order_by('-date_made') except Sandwich.DoesNotExist: raise Http404 - return render_to_response('onesandwich.html', {'s': sandwiches,}) \ No newline at end of file + return render_to_response('onesandwich.html', {'s': s,}, context_instance=RequestContext(request)) + +def logout_view(request): + if request.user.is_authenticated(): + logout(request) + thankshtml = "You have been logged out.
" + return HttpResponse(thankshtml) + else: + thankshtml = "You are not logged in.
" + return HttpResponse(thankshtml) + + +def login_view(request): + 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) + thankshtml = "You have been logged in
" + return HttpResponse(thankshtml) + else: + thankshtml = "Disabled account. Sorry.
" + return HttpResponse(thankshtml) + else: + thankshtml = "Invalid login!
" + return HttpResponse(thankshtml) + except KeyError: + aform = AuthenticationForm() + return render_to_response('login.html', {'aform': aform,}, context_instance=RequestContext(request)) + + +def create_user(request): + if Sandwich.objects.count() > 5: + sandwiches = Sandwich.objects.order_by('-date_made')[:5] + else: + sandwiches = Sandwich.objects.order_by('-date_made') + if request.user.is_authenticated(): + thankshtml = "You are already logged in!
" + return HttpResponse(thankshtml) + 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 + username = form.cleaned_data['username'] + first_name = form.cleaned_data['first_name'] + last_name = form.cleaned_data['last_name'] + password = form.cleaned_data['password'] + cpassword = form.cleaned_data['confirm_password'] + email = form.cleaned_data['email'] + if password == cpassword: + user = User.objects.create_user(username, email, password) + user.save() + 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 + else: + thankshtml = "Your passwords don't match!
" + return HttpResponse(thankshtml) # Redirect after POST + else: + form = NewUserForm() # An unbound form + 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 = [] + for i in ingredients: + responselist.append({'id': str(i.pk), 'name': i.name}) + response = json.dumps(responselist) + return HttpResponse(response) + else: + return HttpResponse('{}') \ No newline at end of file