annotate apps/bundle/views.py @ 170:3be23e2e8fe7

Use correct template for bundle explore page
author dellsystem <ilostwaldo@gmail.com>
date Sat, 20 Oct 2012 00:20:22 -0400
parents d31b236ed5cf
children 86129d185ddb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
167
d31b236ed5cf Okay, I think I caught all the with statements now...
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 151
diff changeset
1 from __future__ import with_statement
d31b236ed5cf Okay, I think I caught all the with statements now...
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 151
diff changeset
2
151
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
3 import os
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
4
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
5 from django.shortcuts import get_object_or_404, render, redirect
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
6 from django.contrib.auth.decorators import login_required
63
d5ebcf4a249f Added some urls for the bundle links, and a template
Rettaw
parents: 37
diff changeset
7 from django.http import HttpResponse
4
069cabdaf8b2 Define stub template and admin site
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 2
diff changeset
8
151
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
9 from apps.bundle.models import Bundle, BundleFile
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
10 from apps.bundle.forms import BundleForm
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
11 from apps.bundle.tasks import handle_bundle_upload
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
12 from apps.pygments_style.models import PygmentsStyle
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
13
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
14
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
15 def detail(request, user, bundle, file=None):
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
16 bundle = get_object_or_404(Bundle, uploader__username=user, name=bundle)
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
17 files = bundle.bundlefile_set.all()
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
18
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
19 if request.user.is_authenticated():
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
20 pygments_style = request.user.get_profile().pygments_style
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
21 else:
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
22 pygments_style = PygmentsStyle.objects.get(pk=1)
6
c83460992637 Elaborate on stub bundle template
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 4
diff changeset
23
151
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
24 context = {
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
25 'default_style': pygments_style,
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
26 'pygments_styles': PygmentsStyle.objects.all(),
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
27 'bundle': bundle,
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
28 'files': files,
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
29 'file': file,
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
30 }
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
31
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
32 return render(request, 'bundle/bundle.djhtml', context)
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
33
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
34
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
35 def file_detail(request, user, bundle, path):
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
36 bundle_file = get_object_or_404(BundleFile, bundle__uploader__username=user,
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
37 bundle__name=bundle, full_path=path, is_dir=False)
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
38
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
39 return detail(request, user, bundle, file=bundle_file)
63
d5ebcf4a249f Added some urls for the bundle links, and a template
Rettaw
parents: 37
diff changeset
40
151
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
41 @login_required
63
d5ebcf4a249f Added some urls for the bundle links, and a template
Rettaw
parents: 37
diff changeset
42 def index(request):
151
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
43 if request.method == 'POST':
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
44 post_data = request.POST.copy()
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
45 post_data['uploader'] = request.user.id
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
46 form = BundleForm(post_data,
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
47 request.FILES)
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
48
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
49 if form.is_valid():
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
50 file = request.FILES.get('file')
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
51 bundle = form.save()
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
52
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
53 bundle.file_name = file.name
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
54 bundle.save()
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
55 bundle_path = bundle.get_temp_path()
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
56
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
57 with open(bundle_path, 'wb+') as destination:
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
58 for chunk in request.FILES.get('file', []):
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
59 destination.write(chunk)
63
d5ebcf4a249f Added some urls for the bundle links, and a template
Rettaw
parents: 37
diff changeset
60
151
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
61 handle_bundle_upload.delay(bundle.id)
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
62
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
63 return redirect(bundle)
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
64 else:
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
65 form = BundleForm()
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
66
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
67 context = {
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
68 'form': form,
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
69 'bundles': Bundle.objects.order_by('-pub_date')[:5]
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
70 }
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
71 return render(request, 'bundle/index.djhtml', context)
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
72
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
73
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
74 def explore(request):
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
75 context = {
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
76 'recent_bundles': Bundle.objects.all()[:20]
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
77 }
c7be7def8b57 Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents: 63
diff changeset
78
170
3be23e2e8fe7 Use correct template for bundle explore page
dellsystem <ilostwaldo@gmail.com>
parents: 167
diff changeset
79 return render(request, "bundle/explore.html", context)