Mercurial > agora-palash
comparison apps/snippet/views.py @ 133:ba51d3b7740b
Add ability to upload a file to create a snippet
If a file is specified, the contents of that file are used in preference
to the contents of the 'content' text box.
author | dellsystem <ilostwaldo@gmail.com> |
---|---|
date | Sat, 22 Sep 2012 12:20:24 -0400 |
parents | 4f6977515048 |
children | 3a850f49eea6 |
comparison
equal
deleted
inserted
replaced
132:4f6977515048 | 133:ba51d3b7740b |
---|---|
1 import difflib | 1 import difflib |
2 | 2 |
3 from django.shortcuts import render_to_response, \ | 3 from django.shortcuts import render_to_response, \ |
4 get_object_or_404, get_list_or_404, render | 4 get_object_or_404, get_list_or_404, render, redirect |
5 from django.template.context \ | 5 from django.template.context \ |
6 import RequestContext | 6 import RequestContext |
7 from django.http \ | 7 from django.http \ |
8 import HttpResponseRedirect, HttpResponseBadRequest, \ | 8 import HttpResponseRedirect, HttpResponseBadRequest, \ |
9 HttpResponse, HttpResponseForbidden | 9 HttpResponse, HttpResponseForbidden |
26 } | 26 } |
27 | 27 |
28 return render(request, 'snippet/explore.html', context) | 28 return render(request, 'snippet/explore.html', context) |
29 | 29 |
30 | 30 |
31 def snippet_new(request, template_name='snippet/snippet_new.djhtml'): | 31 def snippet_new(request): |
32 | |
33 if request.method == "POST": | 32 if request.method == "POST": |
34 snippet = Snippet() | 33 snippet = Snippet() |
35 try: | 34 |
35 if request.user.is_authenticated(): | |
36 snippet.author = request.user | 36 snippet.author = request.user |
37 except: | 37 |
38 pass | 38 snippet_form = SnippetForm(request.POST, |
39 snippet_form = SnippetForm(data=request.POST, request=request, | 39 request.FILES, |
40 request=request, | |
40 instance=snippet) | 41 instance=snippet) |
42 | |
41 if snippet_form.is_valid(): | 43 if snippet_form.is_valid(): |
42 request, new_snippet = snippet_form.save() | 44 request, new_snippet = snippet_form.save() |
43 return HttpResponseRedirect(new_snippet.get_absolute_url()) | 45 return redirect(new_snippet) |
44 else: | 46 else: |
45 snippet_form = SnippetForm(request=request) | 47 snippet_form = SnippetForm(request=request) |
46 | 48 |
47 recent = Snippet.objects.all()[:10] | 49 recent = Snippet.objects.all()[:10] |
48 | 50 |
49 template_context = { | 51 context = { |
50 'snippet_form': snippet_form, | 52 'snippet_form': snippet_form, |
51 'recent_snippets' : recent, | 53 'recent_snippets' : recent, |
52 } | 54 } |
53 | 55 |
54 return render_to_response( | 56 return render(request, 'snippet/snippet_new.djhtml', context) |
55 template_name, | |
56 template_context, | |
57 RequestContext(request) | |
58 ) | |
59 | 57 |
60 | 58 |
61 def snippet_details(request, snippet_id, | 59 def snippet_details(request, snippet_id, |
62 template_name='snippet/snippet_details.djhtml', | |
63 is_raw=False): | 60 is_raw=False): |
64 | |
65 snippet = get_object_or_404(Snippet, secret_id=snippet_id) | 61 snippet = get_object_or_404(Snippet, secret_id=snippet_id) |
66 snippet.num_views += 1 | 62 snippet.num_views += 1 |
67 snippet.save() | 63 snippet.save() |
68 | 64 |
69 tree = snippet.get_root() | 65 tree = snippet.get_root() |
74 'lexer': snippet.lexer, | 70 'lexer': snippet.lexer, |
75 'title': 'Re: %s' % snippet.title, | 71 'title': 'Re: %s' % snippet.title, |
76 } | 72 } |
77 | 73 |
78 if request.method == "POST": | 74 if request.method == "POST": |
79 snippet_form = SnippetForm(data=request.POST, | 75 snippet_form = SnippetForm(request.POST, |
76 request.FILES, | |
80 request=request, | 77 request=request, |
81 initial=new_snippet_initial) | 78 initial=new_snippet_initial) |
82 if snippet_form.is_valid(): | 79 if snippet_form.is_valid(): |
83 request, new_snippet = snippet_form.save(parent=snippet) | 80 request, new_snippet = snippet_form.save(parent=snippet) |
84 return HttpResponseRedirect(new_snippet.get_absolute_url()) | 81 return redirect(new_snippet) |
85 else: | 82 else: |
86 snippet_form = SnippetForm(initial=new_snippet_initial, | 83 snippet_form = SnippetForm(initial=new_snippet_initial, |
87 request=request) | 84 request=request) |
88 | 85 |
89 if request.user.is_authenticated(): | 86 if request.user.is_authenticated(): |
90 default_pygments_style = request.user.get_profile().pygments_style | 87 default_pygments_style = request.user.get_profile().pygments_style |
91 else: | 88 else: |
92 default_pygments_style = PygmentsStyle.objects.get(pk=1) | 89 default_pygments_style = PygmentsStyle.objects.get(pk=1) |
93 | 90 |
94 template_context = { | 91 context = { |
95 'snippet_form': snippet_form, | 92 'snippet_form': snippet_form, |
96 'snippet': snippet, | 93 'snippet': snippet, |
97 'lines': range(snippet.get_linecount()), | 94 'lines': range(snippet.get_linecount()), |
98 'tree': tree, | 95 'tree': tree, |
99 'language': dict(LEXER_LIST)[snippet.lexer], | 96 'language': dict(LEXER_LIST)[snippet.lexer], |
100 'pygments_styles': PygmentsStyle.objects.all(), | 97 'pygments_styles': PygmentsStyle.objects.all(), |
101 'default_style': default_pygments_style, | 98 'default_style': default_pygments_style, |
102 'no_descendants': len(tree) == 1, | 99 'no_descendants': len(tree) == 1, |
103 } | 100 } |
104 | 101 |
105 response = render_to_response( | 102 response = render(request, 'snippet/snippet_details.djhtml', context) |
106 template_name, | |
107 template_context, | |
108 RequestContext(request) | |
109 ) | |
110 | 103 |
111 if is_raw: | 104 if is_raw: |
112 response['Content-Type'] = 'text/plain' | 105 response['Content-Type'] = 'text/plain' |
113 return response | 106 return response |
114 else: | 107 else: |