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"
# 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}
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):
ret_json.update(extra_context)
return HttpResponse(json.dumps(ret_json, cls=DjangoJSONEncoder))
+
+ajax_uploader = AjaxFileUploader()
{% 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 %}
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
# 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:
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'),
)