Modified templates a little for sandwich by user and sandwich by month (to have more...
[~kgodey/maayanwich.git] / views.py
index 39ec141..18f6951 100644 (file)
--- a/views.py
+++ b/views.py
@@ -5,7 +5,8 @@ from django.shortcuts import render_to_response
 from django.core.files.uploadedfile import SimpleUploadedFile
 from models import Sandwich, Ingredient
 from django.contrib.auth import authenticate, login, logout
 from django.core.files.uploadedfile import SimpleUploadedFile
 from models import Sandwich, Ingredient
 from django.contrib.auth import authenticate, login, logout
-from django.contrib.auth.forms import AuthenticationForm
+from django.contrib.auth.forms import AuthenticationForm, UserCreationForm
+from django.contrib.comments.models import Comment
 from django.template import RequestContext
 from django.core import serializers
 from slugify import SlugifyUniquely
 from django.template import RequestContext
 from django.core import serializers
 from slugify import SlugifyUniquely
@@ -13,6 +14,7 @@ from recipes.settings import MEDIA_URL
 import datetime
 import django.utils.simplejson as json
 from django.core.urlresolvers import reverse
 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')
 
 def sidebar_context(request):
        x = Sandwich.objects.order_by('-date_made')
@@ -24,49 +26,81 @@ def sidebar_context(request):
        return {'sandwiches': sandwiches, 'monthly': monthly, 'user': request.user, 'media_url': MEDIA_URL }
 
 
        return {'sandwiches': sandwiches, 'monthly': monthly, 'user': request.user, 'media_url': MEDIA_URL }
 
 
+@login_required
 def add_sandwich(request):
 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):
+       try:
+               sedit = Sandwich.objects.get(slug=slug)
+       except Sandwich.DoesNotExist:
+               raise Http404
+       ingred = sedit.ingredients.all()
+       if not sedit.user == request.user:
+               return render_to_response('nopermission.html', context_instance=RequestContext(request))
+       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():
                                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:
+                                               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()
                                                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:
                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'))
+                       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 = "<p class=\"formthanks\">Thanks! Your ingredient has been saved!</p>"
-                               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()
+               x = request.user.username
+               return HttpResponseRedirect(reverse('sandwich_user', kwargs={'username': x,}))
        else:
        else:
-               thankshtml = "<p class=\"formthanks\">You are not logged in.</p>"
-               return HttpResponse(thankshtml) # Redirect after POST
+               raise Http404
+
 
 def all_sandwich(request):
        try:
 
 def all_sandwich(request):
        try:
@@ -74,14 +108,24 @@ def all_sandwich(request):
        except Sandwich.DoesNotExist:
                raise Http404
        return render_to_response('allsandwiches.html', {'allsandwiches': allsandwiches,}, context_instance=RequestContext(request))
        except Sandwich.DoesNotExist:
                raise Http404
        return render_to_response('allsandwiches.html', {'allsandwiches': allsandwiches,}, context_instance=RequestContext(request))
+       
+def index_sandwich(request):
+       try:
+               allsandwiches = Sandwich.objects.order_by('adjective')
+       except Sandwich.DoesNotExist:
+               raise Http404
+       return render_to_response('indexsandwiches.html', {'allsandwiches': allsandwiches,}, context_instance=RequestContext(request))
 
 
 def sandwich_month(request, year, month):
        try:
                ms = Sandwich.objects.filter(date_made__month=month, date_made__year=year)
 
 
 def sandwich_month(request, year, month):
        try:
                ms = Sandwich.objects.filter(date_made__month=month, date_made__year=year)
+               x = ms[0]
+               xdate = x.date_made
        except Sandwich.DoesNotExist:
                raise Http404
        except Sandwich.DoesNotExist:
                raise Http404
-       return render_to_response('allsandwiches.html', {'allsandwiches': ms,}, context_instance=RequestContext(request))
+       return render_to_response('monthsandwiches.html', {'allsandwiches': ms, 'xdate': xdate, }, context_instance=RequestContext(request))
+       
        
 def current_home(request):
        temp = Sandwich.objects.order_by('-date_made')[0]
        
 def current_home(request):
        temp = Sandwich.objects.order_by('-date_made')[0]
@@ -97,10 +141,6 @@ def current_home(request):
 def specific_sandwich(request, slug):
        try:
                s = Sandwich.objects.get(slug=slug)
 def specific_sandwich(request, slug):
        try:
                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': s,}, context_instance=RequestContext(request))
        except Sandwich.DoesNotExist:
                raise Http404
        return render_to_response('onesandwich.html', {'s': s,}, context_instance=RequestContext(request))
@@ -113,86 +153,96 @@ def logout_view(request):
                logout(request)
                return HttpResponseRedirect(x)
        else:
                logout(request)
                return HttpResponseRedirect(x)
        else:
-               return HttpResponseRedirect(x)
+               return render_to_response('notloggedin.html', context_instance=RequestContext(request))
 
 
 def login_view(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:
        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()
                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):
 
 
 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():
        if request.user.is_authenticated():
-               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
-                       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()
-                               return HttpResponseRedirect('index')
+               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 = UserCreationForm(data=request.POST)
+               if aform.is_valid():
+                       aform.save()
+                       x = authenticate(username=aform.cleaned_data['username'], password=aform.cleaned_data['password1'])
+                       login(request, x)
+                       return render_to_response('usercreated.html', context_instance=RequestContext(request))
+       else:
+               aform = UserCreationForm()
+
+       return render_to_response('newuser.html', {'aform': aform,}, context_instance=RequestContext(request))
+
+@login_required
+def sandwich_user(request, username):
+       user = User.objects.get(username = username)
+       try:
+               ms = Sandwich.objects.filter(user = user)
+       except Sandwich.DoesNotExist:
+               raise Http404
+       return render_to_response('usersandwiches.html', {'allsandwiches': ms,}, context_instance=RequestContext(request))
+
+@login_required
+def edit_user(request, gusername):
+       guser = User.objects.get(username = gusername)
+       if not request.user.is_authenticated():
+               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
+                       if form.is_valid():
+                               username = request.POST['username']
+                               first_name = request.POST['first_name']
+                               last_name = request.POST['last_name']
+                               password = request.POST['password']
+                               cpassword = request.POST['confirmpassword']
+                               email = request.POST['email']
+                               guser.username = username
+                               guser.first_name = first_name
+                               guser.last_name = last_name
+                               if password != '':
+                                       guser.set_password(password)
+                               guser.email = email
+                               guser.save()
+                               return render_to_response('userchanged.html', context_instance=RequestContext(request)) 
                        else:
                        else:
-                               return HttpResponseRedirect('signup')   
+                               return render_to_response('edituser.html', {'cform': form,}, context_instance=RequestContext(request))
+               else:
+                       form = NewUserForm(initial={'username': guser.username, 'first_name': guser.first_name, 'last_name': guser.last_name, 'email': guser.email, }) # An unbound form
+                       return render_to_response('edituser.html', {'cform': form,}, context_instance=RequestContext(request))
        else:
        else:
-               form = NewUserForm() # An unbound form
-               return render_to_response('newuser.html', {'cform': form,}, context_instance=RequestContext(request))
+               return render_to_response('nopermission.html', context_instance=RequestContext(request))
+               
+
+def comment_posted(request):
+       if request.GET['c']:
+               comment_id  = request.GET['c']
+               com = Comment.objects.get( pk = comment_id )
+               post = com.content_object
+               if post:
+                       return HttpResponseRedirect( post.get_absolute_url() + '#comments' )
 
 
 def ajaxfun(request):
 
 
 def ajaxfun(request):