diff 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
line wrap: on
line diff
--- a/apps/snippet/views.py	Sat Sep 22 12:17:03 2012 -0400
+++ b/apps/snippet/views.py	Sat Sep 22 12:20:24 2012 -0400
@@ -1,7 +1,7 @@
 import difflib
 
 from django.shortcuts import render_to_response, \
-     get_object_or_404, get_list_or_404, render
+     get_object_or_404, get_list_or_404, render, redirect
 from django.template.context \
      import RequestContext
 from django.http \
@@ -28,40 +28,36 @@
     return render(request, 'snippet/explore.html', context)
 
 
-def snippet_new(request, template_name='snippet/snippet_new.djhtml'):
-
+def snippet_new(request):
     if request.method == "POST":
         snippet = Snippet()
-        try:
+
+        if request.user.is_authenticated():
             snippet.author = request.user
-        except:
-            pass
-        snippet_form = SnippetForm(data=request.POST, request=request,
+
+        snippet_form = SnippetForm(request.POST,
+                                   request.FILES,
+                                   request=request,
                                    instance=snippet)
+
         if snippet_form.is_valid():
             request, new_snippet = snippet_form.save()
-            return HttpResponseRedirect(new_snippet.get_absolute_url())
+            return redirect(new_snippet)
     else:
         snippet_form = SnippetForm(request=request)
 
     recent = Snippet.objects.all()[:10]
 
-    template_context = {
+    context = {
         'snippet_form': snippet_form,
         'recent_snippets' : recent,
     }
 
-    return render_to_response(
-        template_name,
-        template_context,
-        RequestContext(request)
-    )
+    return render(request, 'snippet/snippet_new.djhtml', context)
 
 
 def snippet_details(request, snippet_id,
-                    template_name='snippet/snippet_details.djhtml',
                     is_raw=False):
-
     snippet = get_object_or_404(Snippet, secret_id=snippet_id)
     snippet.num_views += 1
     snippet.save()
@@ -76,12 +72,13 @@
     }
 
     if request.method == "POST":
-        snippet_form = SnippetForm(data=request.POST,
+        snippet_form = SnippetForm(request.POST,
+                                   request.FILES,
                                    request=request,
                                    initial=new_snippet_initial)
         if snippet_form.is_valid():
             request, new_snippet = snippet_form.save(parent=snippet)
-            return HttpResponseRedirect(new_snippet.get_absolute_url())
+            return redirect(new_snippet)
     else:
         snippet_form = SnippetForm(initial=new_snippet_initial,
                                    request=request)
@@ -91,7 +88,7 @@
     else:
         default_pygments_style = PygmentsStyle.objects.get(pk=1)
 
-    template_context = {
+    context = {
         'snippet_form': snippet_form,
         'snippet': snippet,
         'lines': range(snippet.get_linecount()),
@@ -102,11 +99,7 @@
         'no_descendants': len(tree) == 1,
     }
 
-    response = render_to_response(
-        template_name,
-        template_context,
-        RequestContext(request)
-    )
+    response = render(request, 'snippet/snippet_details.djhtml', context)
 
     if is_raw:
         response['Content-Type'] = 'text/plain'