From: Kriti Godey Date: Thu, 8 Apr 2010 19:16:41 +0000 (-0400) Subject: Redirects to error pages for most pages work. Still todo: adding/editing sandwiches... X-Git-Url: http://git.ithinksw.org/~kgodey/maayanwich.git/commitdiff_plain/e2869e2dfb4fdb7f01f27a03211bec2b198e4a4a Redirects to error pages for most pages work. Still todo: adding/editing sandwiches and editing user settings. --- diff --git a/templates/loggedin.html b/templates/loggedin.html new file mode 100644 index 0000000..034852d --- /dev/null +++ b/templates/loggedin.html @@ -0,0 +1,5 @@ +{% extends "base.html" %} + +{% block content %} +

You are already logged in!

+{% endblock %} \ No newline at end of file diff --git a/templates/login.html b/templates/login.html index 584047f..73ff730 100644 --- a/templates/login.html +++ b/templates/login.html @@ -2,7 +2,7 @@ {% block content %}

Login

-
+ {{ aform.as_p }}
diff --git a/templates/notloggedin.html b/templates/notloggedin.html new file mode 100644 index 0000000..15d9bb8 --- /dev/null +++ b/templates/notloggedin.html @@ -0,0 +1,5 @@ +{% extends "base.html" %} + +{% block content %} +

You are not logged in!

+{% endblock %} \ No newline at end of file diff --git a/urls.py b/urls.py index a90d4fc..67695c8 100644 --- a/urls.py +++ b/urls.py @@ -4,7 +4,6 @@ from django.shortcuts import render_to_response urlpatterns = patterns('', url(r'^sandwich/add/$', views.add_sandwich, name='add_sandwich'), - url(r'^sandwich/addingredient/$', views.add_ingredient, name='add_ingredient'), url(r'^sandwich/all/$', views.all_sandwich, name='all_sandwiches'), url(r'^sandwich/(?P[-\w]+)/edit/', views.edit_user, name='edit_user'), url(r'^sandwich/(?P[-\w]+)/edit/', views.edit_sandwich, name='edit_sandwich'), @@ -12,7 +11,6 @@ urlpatterns = patterns('', url(r'^sandwich/(?P[-\w]+)/$', views.specific_sandwich, name='sandwich_by_slug'), url(r'^sandwich/(?P[-\w]+)/(?P[-\w]+)/$', views.sandwich_month, name='sandwich_by_month'), url(r'^login/$', views.login_view, name='login'), - url(r'^login2/$', views.login_view2, name='login2'), url(r'^logout/$', views.logout_view, name='logout'), url(r'^signup/$', views.create_user, name='signup'), url(r'^ajaxfun', views.ajaxfun, name='ajaxfun'), diff --git a/views.py b/views.py index 879c303..e3912c2 100644 --- a/views.py +++ b/views.py @@ -14,6 +14,7 @@ from recipes.settings import MEDIA_URL import datetime import django.utils.simplejson as json from django.core.urlresolvers import reverse +from django.contrib.auth.decorators import login_required def sidebar_context(request): x = Sandwich.objects.order_by('-date_made') @@ -25,97 +26,77 @@ def sidebar_context(request): return {'sandwiches': sandwiches, 'monthly': monthly, 'user': request.user, 'media_url': MEDIA_URL } +@login_required def add_sandwich(request): - 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() + 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)) + elif n[:4] == 'new:' and len(n) > 4: + 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)) + + +@login_required +def edit_sandwich(request, slug): + sedit = Sandwich.objects.get(slug=slug) + ingred = sedit.ingredients.all() + if not sedit.user == request.user: + return HttpResponseRedirect(reverse('all_sandwiches')) + else: + if request.method == 'POST': + sform = SandwichForm(request.POST, request.FILES, instance=sedit) + if sform.is_valid(): # All validation rules pass + sedit.adjective = request.POST['adjective'] + sedit.date_made = request.POST['date_made'] + sedit.notes = request.POST['notes'] + for ig in sedit.ingredients.all(): + sedit.ingredients.remove(ig) + if request.POST['picture']: + sedit.picture = request.POST['picture'] 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)) + sedit.ingredients.add(Ingredient.objects.get(id=n)) elif n[:4] == 'new:' and len(n) > 4: 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()) + sedit.ingredients.add(newingredient) + sedit.save() + return HttpResponseRedirect(sedit.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: - return HttpResponseRedirect(reverse('login2')) - -def edit_sandwich(request, slug): - sedit = Sandwich.objects.get(slug=slug) - ingred = sedit.ingredients.all() - if request.user.is_authenticated(): - if not sedit.user == request.user: - return HttpResponseRedirect(reverse('all_sandwiches')) - else: - if request.method == 'POST': - sform = SandwichForm(request.POST, request.FILES, instance=sedit) - if sform.is_valid(): # All validation rules pass - sedit.adjective = request.POST['adjective'] - sedit.date_made = request.POST['date_made'] - sedit.notes = request.POST['notes'] - for ig in sedit.ingredients.all(): - sedit.ingredients.remove(ig) - if request.POST['picture']: - sedit.picture = request.POST['picture'] - x = request.POST['ing'] - x = x.strip() - y = x.split(',') - for n in y: - if n.isdigit(): - sedit.ingredients.add(Ingredient.objects.get(id=n)) - elif n[:4] == 'new:' and len(n) > 4: - n = n.lstrip('new:') - newingredient = Ingredient(name=n, slug=SlugifyUniquely(n, Ingredient)) - newingredient.save() - sedit.ingredients.add(newingredient) - sedit.save() - return HttpResponseRedirect(sedit.get_absolute_url()) - else: - sform = SandwichForm(instance=sedit) - return render_to_response('editsandwich.html', {'sform': sform, 's':sedit, 'prepop': ingred, }, context_instance=RequestContext(request)) - else: - return HttpResponseRedirect(reverse('login2')) - -def del_sandwich(request, slug): - if request.user.is_authenticated(): - if Sandwich.objects.get(slug=slug): - del_sandwich = Sandwich.objects.get(slug=slug) - if request.user == del_sandwich.user: - del_sandwich.delete() - return HttpResponseRedirect(reverse('all_sandwiches')) - else: - return HttpResponseRedirect(reverse('all_sandwiches')) - else: - return HttpResponseRedirect(reverse('login2')) + sform = SandwichForm(instance=sedit) + return render_to_response('editsandwich.html', {'sform': sform, 's':sedit, 'prepop': ingred, }, context_instance=RequestContext(request)) -def add_ingredient(request): - 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,}, context_instance=RequestContext(request)) +@login_required +def del_sandwich(request, slug): + if Sandwich.objects.get(slug=slug): + del_sandwich = Sandwich.objects.get(slug=slug) + if request.user == del_sandwich.user: + del_sandwich.delete() + return HttpResponseRedirect(reverse('all_sandwiches')) else: - thankshtml = "

You are not logged in.

" - return HttpResponse(thankshtml) # Redirect after POST + return HttpResponseRedirect(reverse('all_sandwiches')) + def all_sandwich(request): try: @@ -132,6 +113,7 @@ def sandwich_month(request, year, month): raise Http404 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 @@ -158,61 +140,31 @@ def logout_view(request): logout(request) return HttpResponseRedirect(x) else: - return HttpResponseRedirect(x) + return render_to_response('notloggedin.html', context_instance=RequestContext(request)) 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: - 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('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] + if request.user.is_authenticated(): + return render_to_response('loggedin.html', context_instance=RequestContext(request)) + + redirect_to = reverse('index') + if 'next' in request.GET: + redirect_to = request.GET['next'] + + if request.method == 'POST': + aform = AuthenticationForm(data=request.POST) + if aform.is_valid(): + login(request, aform.get_user()) + return HttpResponseRedirect(redirect_to) 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('login2') - except KeyError: aform = AuthenticationForm() - return render_to_response('pleaselogin.html', {'aform': aform,}, context_instance=RequestContext(request)) + + return render_to_response('login.html', {'aform': aform,}, context_instance=RequestContext(request)) def create_user(request): if request.user.is_authenticated(): - return HttpResponseRedirect('index') + return render_to_response('loggedin.html', context_instance=RequestContext(request)) 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 @@ -235,10 +187,11 @@ def create_user(request): form = NewUserForm() # An unbound form return render_to_response('newuser.html', {'cform': form,}, context_instance=RequestContext(request)) + def edit_user(request, gusername): guser = User.objects.get(username = gusername) if not request.user.is_authenticated(): - return HttpResponseRedirect(reverse('login2')) + return HttpResponseRedirect(reverse('login')) elif request.user == guser: if request.method == 'POST': # If the form has been submitted... form = NewUserForm(request.POST) # A form bound to the POST data