Mercurial > agora-palash
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 |
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 | 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 | 40 |
151
c7be7def8b57
Bundles! (basic functionality)
dellsystem <ilostwaldo@gmail.com>
parents:
63
diff
changeset
|
41 @login_required |
63 | 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 | 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) |