integrating ajaxupload upto gdrive celery task executing
authorSeth Woodworth <seth@sethish.com>
Wed, 23 Jan 2013 00:40:23 +0000 (19:40 -0500)
committerSeth Woodworth <seth@sethish.com>
Wed, 23 Jan 2013 00:40:23 +0000 (19:40 -0500)
karmaworld/apps/ajaxuploader/backends/local.py
karmaworld/apps/ajaxuploader/views.py
karmaworld/templates/courses/course_detail.html
karmaworld/urls.py

index b2575d147d778c116bf22400e9e1cbc41b8f4d09..67494af066d72c4f481246d76c4cd85d9aec3311 100644 (file)
@@ -6,6 +6,7 @@ from django.conf import settings
 from ajaxuploader.backends.base import AbstractUploadBackend
 from karmaworld.apps.notes import tasks
 from karmaworld.apps.notes.models import Note
+from karmaworld.apps.courses.models import Course
 
 class LocalUploadBackend(AbstractUploadBackend):
     #UPLOAD_DIR = "uploads"
@@ -58,19 +59,24 @@ class LocalUploadBackend(AbstractUploadBackend):
 
         # Avoid File.objects.create, as this will try to make
         # Another file copy at FileField's 'upload_to' dir
+        print "creating note"
         note = Note()
         note.note_file = os.path.join(self._dir, filename)
+        note.course_id = request.GET['course_id']
+        print "saving note"
         note.save()
 
         # FIXME: Make get or create
-        if self.SESSION_UNCLAIMED_FILES_KEY in request.session:
+        print "setting up session vars"
+        #import ipdb; ipdb.set_trace()
+        if 'uploaded_files' in request.session:
             request.session['uploaded_files'].append(note.pk)
         else:
             request.session['uploaded_files'] = [note.pk]
 
         # Asynchronously process document with Google Documents API
         print "upload_complete, firing task"
-        tasks.process_document.delay(new_File)
+        tasks.process_document.delay(note)
 
         return {"path": path, "file_pk": note.pk}
 
index e8e5dd9b86747455a758a1fdfb31bbe48598d4b7..4f34426856c7b571dfb32db72d6ba8a0f23d7809 100644 (file)
@@ -12,6 +12,7 @@ class AjaxFileUploader(object):
         self.get_backend = lambda: backend(**kwargs)
 
     def __call__(self,request):
+        print "ajax file uploader called"
         return self._ajax_upload(request)
 
     def _ajax_upload(self, request):
@@ -60,3 +61,5 @@ class AjaxFileUploader(object):
                 ret_json.update(extra_context)
 
             return HttpResponse(json.dumps(ret_json, cls=DjangoJSONEncoder))
+
+ajax_uploader = AjaxFileUploader()
index d9014cbed859c6e6911519a2c302a8dd990d8f55..2f78c92bca28387e89755ac7b13848ad1adebfe6 100644 (file)
@@ -3,11 +3,37 @@
 
 
 {% block pagescripts %}
+    <script src="{{ STATIC_URL }}/js/bootstrap-modal.js" ></script>
+    <script src="{{STATIC_URL}}ajaxuploader/js/fileuploader.js" ></script>
     <script>
         var course_pk = {{ course.id }};
         var course_name = "{{ course.name }}";
+
+        $(function(){
+            var uploader = new qq.FileUploader( {
+                action: "{% url 'ajax_upload' %}",
+                element: $('#file-uploader')[0],
+                multiple: true,
+                onComplete: function( id, fileName, responseJSON ) {
+                  if( responseJSON.success )
+                    alert( "success!" ) ;
+                  else
+                    alert( "upload failed!" ) ;
+                },
+                onAllComplete: function( uploads ) {
+                  // uploads is an array of maps
+                  // the maps look like this: { file: FileObject, response: JSONServerResponse }
+                  alert( "All complete!" ) ;
+                },
+                params: {
+                  'csrf_token': '{{ csrf_token }}',
+                  'csrf_name': 'csrfmiddlewaretoken',
+                  'csrf_xname': 'X-CSRFToken',
+                  'course_id': course_pk,
+                },
+              }) ;
+        });
     </script>
-    <script src="{{ STATIC_URL }}/js/bootstrap-modal.js" ></script>
 {% endblock %}
 
 
index a4953040cdbcfcc5411a1f3c3c287437ff213518..b41cbaa39aed9e26fed7d6fa41abc853c7abfa00 100644 (file)
@@ -3,7 +3,7 @@ from django.conf.urls.defaults import patterns, include, url
 from django.views.generic import ListView, DetailView
 from django.views.generic.simple import direct_to_template
 
-from karmaworld.apps.ajaxuploader.views import AjaxFileUploader
+from karmaworld.apps.ajaxuploader.views import ajax_uploader
 from karmaworld.apps.courses.models import Course
 from karmaworld.apps.courses.views import CourseDetailView
 from karmaworld.apps.notes.views import NoteDetailView, RawNoteDetailView, raw_file
@@ -11,7 +11,6 @@ from karmaworld.apps.notes.views import NoteDetailView, RawNoteDetailView, raw_f
 # See: https://docs.djangoproject.com/en/dev/ref/contrib/admin/#hooking-adminsite-instances-into-your-urlconf
 admin.autodiscover()
 
-
 # See: https://docs.djangoproject.com/en/dev/topics/http/urls/
 urlpatterns = patterns('',
     # Admin panel and documentation:
@@ -29,7 +28,7 @@ urlpatterns = patterns('',
         NoteDetailView.as_view(), name='note_detail'),
 
     # uploading
-    url(r'ajax-upload$', AjaxFileUploader(), name='ajax_upload'),
+    url(r'ajax-upload$', ajax_uploader, name='ajax_upload'),
 
     url(r'^$', ListView.as_view(model=Course), name='home'),
 )