annotate views.py @ 139:b8e0bdc37e32

Hide snippets created by anonymous users Created a custom manager for Snippet, with a public() method for easily retrieving all the snippets that were created by registered users. This change makes the code a bit neater, as it's no longer to necessary to have to do the {% if snippet.author %} check every time.
author dellsystem <ilostwaldo@gmail.com>
date Sat, 29 Sep 2012 21:31:17 -0400
parents 2bca07be6e51
children c7be7def8b57
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
107
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
1 from django.contrib.auth import login, authenticate
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
2 from django.contrib.auth.forms import AuthenticationForm
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
3 from django.shortcuts import render, redirect
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
4 from django.core.urlresolvers import reverse
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
5 from registration.forms import RegistrationForm
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
6
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
7 from agora.apps.snippet.models import Snippet
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
8
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
9
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
10 def code(request):
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
11 context = {
139
b8e0bdc37e32 Hide snippets created by anonymous users
dellsystem <ilostwaldo@gmail.com>
parents: 107
diff changeset
12 'snippets': Snippet.objects.public()[:5],
107
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
13 'modules': None, # temp
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
14 'forge': None, # temp
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
15 }
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
16
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
17 return render(request, 'code.djhtml', context)
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
18
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
19
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
20 def login_register(request):
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
21 form = None
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
22 next_url = None
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
23
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
24 if request.method == 'POST':
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
25 action = request.POST.get('action')
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
26 next_url = request.GET.get('next') or reverse('login')
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
27
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
28 if action == 'login':
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
29 username = request.POST.get('username', '')
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
30 password = request.POST.get('password1', '')
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
31
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
32 if username and password:
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
33 user = authenticate(username=username, password=password)
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
34 login(request, user)
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
35
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
36 return redirect(next_url)
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
37 else:
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
38 form = {
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
39 'password1': {
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
40 'errors': 'Please enter a username and password.',
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
41 },
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
42 }
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
43 elif action == 'register':
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
44 form = RegistrationForm(request.POST)
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
45
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
46 if form.is_valid():
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
47 user = form.save()
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
48 login(request, user)
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
49 return redirect(next_url)
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
50 else:
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
51 # The action is not set. Malicious submission?
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
52 pass
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
53
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
54 context = {
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
55 'next_url': next_url,
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
56 'form': form,
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
57 }
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
58
2bca07be6e51 Add login popup box
dellsystem <ilostwaldo@gmail.com>
parents:
diff changeset
59 return render(request, 'login.djhtml', context)