Пример #1
0
 def ajax_upload(self, request, folder_id=None):
     """
     receives an upload from the flash uploader and fixes the session
     because of the missing cookie. Receives only one file at the time, 
     althow it may be a zip file, that will be unpacked.
     """
     try:
         # flashcookie-hack (flash does not submit the cookie, so we send the
         # django sessionid over regular post
         engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])
         session_key = request.POST.get('jsessionid')
         request.session = engine.SessionStore(session_key)
         request.user = User.objects.get(
             id=request.session['_auth_user_id'])
         # upload and save the file
         if not request.method == 'POST':
             return HttpResponse("must be POST")
         original_filename = request.POST.get('Filename')
         file = request.FILES.get('Filedata')
         # Get clipboad
         clipboard, was_clipboard_created = Clipboard.objects.get_or_create(
             user=request.user)
         files = generic_handle_file(file, original_filename)
         file_items = []
         for ifile, iname in files:
             try:
                 iext = os.path.splitext(iname)[1].lower()
             except:
                 iext = ''
             if iext in ['.jpg', '.jpeg', '.png', '.gif']:
                 uploadform = UploadImageFileForm(
                     {
                         'original_filename': iname,
                         'owner': request.user.pk
                     }, {'file': ifile})
             else:
                 uploadform = UploadFileForm(
                     {
                         'original_filename': iname,
                         'owner': request.user.pk
                     }, {'file': ifile})
             if uploadform.is_valid():
                 try:
                     file = uploadform.save(commit=False)
                     # Enforce the FILER_IS_PUBLIC_DEFAULT
                     file.is_public = filer_settings.FILER_IS_PUBLIC_DEFAULT
                     file.save()
                     file_items.append(file)
                     clipboard_item = ClipboardItem(clipboard=clipboard,
                                                    file=file)
                     clipboard_item.save()
                 except Exception, e:
                     #print e
                     pass
             else:
                 pass  #print uploadform.errors
     except Exception, e:
         #print e
         pass
Пример #2
0
    def ajax_upload(self, request, folder_id=None):
        """
        Receives an upload from the uploader. Receives only one file at a time.
        """
        mimetype = "application/json" if request.is_ajax() else "text/html"
        content_type_key = 'mimetype' if DJANGO_1_4 else 'content_type'
        response_params = {content_type_key: mimetype}
        try:
            upload, filename, is_raw = handle_upload(request)

            # Get clipboad
            clipboard = Clipboard.objects.get_or_create(user=request.user)[0]

            # find the file type
            for filer_class in filer_settings.FILER_FILE_MODELS:
                FileSubClass = load_object(filer_class)
                # TODO: What if there are more than one that qualify?
                if FileSubClass.matches_file_type(filename, upload, request):
                    FileForm = modelform_factory(model=FileSubClass,
                                                 fields=('original_filename',
                                                         'owner', 'file'))
                    break
            uploadform = FileForm(
                {
                    'original_filename': filename,
                    'owner': request.user.pk
                }, {'file': upload})
            if uploadform.is_valid():
                file_obj = uploadform.save(commit=False)
                # Enforce the FILER_IS_PUBLIC_DEFAULT
                file_obj.is_public = filer_settings.FILER_IS_PUBLIC_DEFAULT
                file_obj.save()
                clipboard_item = ClipboardItem(clipboard=clipboard,
                                               file=file_obj)
                clipboard_item.save()
                json_response = {
                    'thumbnail': file_obj.icons['32'],
                    'alt_text': '',
                    'label': str(file_obj),
                }
                return HttpResponse(json.dumps(json_response),
                                    **response_params)
            else:
                form_errors = '; '.join([
                    '%s: %s' % (field, ', '.join(errors))
                    for field, errors in list(uploadform.errors.items())
                ])
                raise UploadException(
                    "AJAX request not valid: form invalid '%s'" %
                    (form_errors, ))
        except UploadException as e:
            return HttpResponse(json.dumps({'error': str(e)}),
                                **response_params)
Пример #3
0
    def ajax_upload(self, request, folder_id=None):
        """
        receives an upload from the uploader. Receives only one file at the time.
        """
        mimetype = "application/json" if request.is_ajax() else "text/html"
        try:
            upload, filename, is_raw = handle_upload(request)

            # Get clipboad
            clipboard = Clipboard.objects.get_or_create(user=request.user)[0]

            # find the file type
            for filer_class in filer_settings.FILER_FILE_MODELS:
                FileSubClass = load_object(filer_class)
                #TODO: What if there are more than one that qualify?
                if FileSubClass.matches_file_type(filename, upload, request):
                    FileForm = modelform_factory(model=FileSubClass,
                                                 fields=('original_filename',
                                                         'owner', 'file'))
                    break
            uploadform = FileForm(
                {
                    'original_filename': filename,
                    'owner': request.user.pk
                }, {'file': upload})
            if uploadform.is_valid():
                file_obj = uploadform.save(commit=False)
                # Enforce the FILER_IS_PUBLIC_DEFAULT
                file_obj.is_public = filer_settings.FILER_IS_PUBLIC_DEFAULT
                file_obj.save()
                clipboard_item = ClipboardItem(clipboard=clipboard,
                                               file=file_obj)
                clipboard_item.save()
                try:
                    json_response = {
                        'thumbnail': file_obj.icons['32'],
                        'alt_text': '',
                        'label': unicode(file_obj),
                    }
                except Exception, e:
                    json_response = {
                        'thumbnail': None,
                        'alt_text': '',
                        'label': unicode(file_obj),
                    }
                return HttpResponse(simplejson.dumps(json_response),
                                    mimetype=mimetype)
            else: