Exemplo n.º 1
0
    def __init__(self, upload_file, upload_to=None):
        self.upload_file = upload_file
        self.upload_to = upload_to

        file_storage_class = getattr(settings, 'REDACTOR_FILE_STORAGE',
                                     'django.core.files.storage.default_storage')
        self.file_storage = import_class(file_storage_class)
Exemplo n.º 2
0
 def form_valid(self, form):
     file_ = form.cleaned_data['file']
     handler_class = import_class(self.upload_handler)
     uploader = handler_class(file_)
     uploader.save_file()
     file_name = uploader.get_filename().encode('utf-8')
     file_url = uploader.get_url()
     return HttpResponse(self.response(file_name, file_url))
Exemplo n.º 3
0
 def form_valid(self, form):
     file_ = form.cleaned_data['file']
     handler_class = import_class(self.upload_handler)
     uploader = handler_class(file_)
     uploader.save_file()
     file_name = uploader.get_filename().encode('utf-8')
     file_url = uploader.get_url()
     return HttpResponse(self.response(file_name, file_url))
Exemplo n.º 4
0
class RedactorUploadView(FormView):
    form_class = ImageForm
    http_method_names = ('post', )
    upload_to = getattr(settings, 'REDACTOR_UPLOAD', 'redactor/')
    upload_handler = getattr(settings, 'REDACTOR_UPLOAD_HANDLER',
                             'redactor.handlers.SimpleUploader')
    auth_decorator = getattr(settings, 'REDACTOR_AUTH_DECORATOR',
                             staff_member_required)
    if isinstance(auth_decorator, basestring):
        # Given decorator is string, probably because user can't import eg.
        # django.contrib.auth.decorators.login_required in settings level.
        # We are expected to import it on our own.
        auth_decorator = import_class(auth_decorator)

    @method_decorator(csrf_exempt)
    @method_decorator(auth_decorator)
    def dispatch(self, request, *args, **kwargs):
        if not is_module_image_installed():
            data = {
                'error':
                _("ImproperlyConfigured: Neither Pillow nor PIL could be imported: No module named 'Image'"
                  ),
            }
            return HttpResponse(json.dumps(data),
                                content_type='application/json')

        return super(RedactorUploadView,
                     self).dispatch(request, *args, **kwargs)

    def form_invalid(self, form):
        # TODO: Needs better error messages
        try:
            error = form.errors.values()[-1][-1]
        except:
            error = _('Invalid file.')
        data = {
            'error': error,
        }
        return HttpResponse(json.dumps(data), content_type='application/json')

    def form_valid(self, form):
        file_ = form.cleaned_data['file']
        handler_class = import_class(self.upload_handler)
        uploader = handler_class(file_,
                                 upload_to=self.kwargs.get('upload_to', None))
        uploader.save_file()
        file_name = force_str(uploader.get_filename())
        file_url = force_str(uploader.get_url())
        if file_url[0] != '/':
            file_url = '/' + file_url
        data = {
            'filelink': file_url,
            'filename': file_name,
        }
        return HttpResponse(json.dumps(data), content_type='application/json')
Exemplo n.º 5
0
 def form_valid(self, form):
     file_ = form.cleaned_data['file']
     handler_class = import_class(self.upload_handler)
     uploader = handler_class(file_,
                              upload_to=self.kwargs.get('upload_to', None))
     uploader.save_file()
     file_name = force_str(uploader.get_filename())
     file_url = force_str(uploader.get_url())
     file_name_key = 'id' if self.form_class is ImageForm else 'name'
     data = {'url': file_url, file_name_key: file_name}
     return HttpResponse(json.dumps(data), content_type='application/json')
Exemplo n.º 6
0
 def form_valid(self, form):
     file_ = form.cleaned_data['file']
     handler_class = import_class(self.upload_handler)
     uploader = handler_class(file_,
                              upload_to=self.kwargs.get('upload_to', None))
     uploader.save_file()
     file_name = force_str(uploader.get_filename())
     file_url = force_str(uploader.get_url())
     file_name_key = 'id' if self.form_class is ImageForm else 'name'
     data = {'file': {'url': file_url, 'id': file_name}}
     return HttpResponse(json.dumps(data), content_type='application/json')
Exemplo n.º 7
0
 def form_valid(self, form):
     handler_class = import_class(self.upload_handler)
     uploader = handler_class(form.cleaned_data['file'])
     uploader.save_file()
     return HttpResponse(
         json.dumps({
             "filename": uploader.get_filename().encode('utf-8'),
             "filelink": uploader.get_url(),
         }),
         content_type='application/json'
     )
Exemplo n.º 8
0
 def post(self, request, **kwargs):
     file_ = request.FILES.get('file[]')
     handler_class = import_class(self.upload_handler)
     uploader = handler_class(file_,
                              upload_to=self.kwargs.get('upload_to', None))
     uploader.save_file()
     file_name = force_str(uploader.get_filename())
     file_url = force_str(uploader.get_url())
     file_name_key = 'id' if 'upload/image' in request.path else 'name'
     data = {'file': {'url': file_url, file_name_key: file_name}}
     return HttpResponse(json.dumps(data), content_type='application/json')
Exemplo n.º 9
0
 def form_valid(self, form):
     file_ = form.cleaned_data['file']
     handler_class = import_class(self.upload_handler)
     uploader = handler_class(file_)
     uploader.save_file()
     file_name = force_str(uploader.get_filename())
     file_url = force_str(uploader.get_url())
     data = {
         'filelink': file_url,
         'filename': file_name,
     }
     return HttpResponse(json.dumps(data), content_type='application/json')
Exemplo n.º 10
0
 def form_valid(self, form):
     file_ = form.cleaned_data['file']
     handler_class = import_class(self.upload_handler)
     uploader = handler_class(file_)
     uploader.save_file()
     file_name = force_str(uploader.get_filename())
     file_url = force_str(uploader.get_url())
     data = {
         'filelink': file_url,
         'filename': file_name,
     }
     return HttpResponse(json.dumps(data), content_type='application/json')
Exemplo n.º 11
0
    def __init__(self, upload_file, upload_to=None):
        self.upload_file = upload_file
        self.upload_to = upload_to

        file_storage_class = getattr(settings, 'REDACTOR_FILE_STORAGE',
                                     'django.core.files.storage.DefaultStorage')

        # File storage can either be a Storage instance (currently deprecated),
        # or a class which we should instantiate ourselves
        file_storage = import_class(file_storage_class)
        if isinstance(file_storage, type):
            # The class case
            file_storage = file_storage()
        self.file_storage = file_storage
Exemplo n.º 12
0
    def __init__(self, upload_file, upload_to=None):
        self.upload_file = upload_file
        self.upload_to = upload_to

        file_storage_class = getattr(
            settings, 'REDACTOR_FILE_STORAGE',
            'django.core.files.storage.DefaultStorage')

        # File storage can either be a Storage instance (currently deprecated),
        # or a class which we should instantiate ourselves
        file_storage = import_class(file_storage_class)
        if isinstance(file_storage, type):
            # The class case
            file_storage = file_storage()
        self.file_storage = file_storage
Exemplo n.º 13
0
class RedactorUploadView(FormView):
    form_class = ImageForm
    http_method_names = ('post', )
    upload_to = getattr(settings, 'REDACTOR_UPLOAD', 'redactor/')
    upload_handler = getattr(settings, 'REDACTOR_UPLOAD_HANDLER',
                             'redactor.handlers.SimpleUploader')
    auth_decorator = getattr(settings, 'REDACTOR_AUTH_DECORATOR',
                             staff_member_required)
    if isinstance(auth_decorator, basestring):
        # Given decorator is string, probably because user can't import eg.
        # django.contrib.auth.decorators.login_required in settings level.
        # We are expected to import it on our own.
        auth_decorator = import_class(auth_decorator)

    @method_decorator(csrf_exempt)
    @method_decorator(auth_decorator)
    def dispatch(self, request, *args, **kwargs):
        if not is_module_image_installed():
            data = {
                'error':
                True,
                'message':
                _("ImproperlyConfigured: Neither Pillow nor PIL could be imported: No module named 'Image'"
                  )
            }
            return HttpResponse(json.dumps(data),
                                status=400,
                                content_type='application/json')
        return super(RedactorUploadView,
                     self).dispatch(request, *args, **kwargs)

    def get_form(self, form_class=None):
        """Return an instance of the form to be used in this view."""
        if form_class is None:
            form_class = self.get_form_class()
        kwargs = self.get_form_kwargs()

        # there is a bug in redactor3, it appends '[]' to fieldname
        if 'files' in kwargs and 'file[]' in kwargs['files']:
            kwargs['files']['file'] = kwargs['files']['file[]']

        return form_class(**kwargs)

    def form_invalid(self, form):
        # TODO: Needs better error messages
        try:
            message = form.errors.values()[-1][-1]
        except:
            message = _('Invalid file.')
        data = {'error': True, 'message': message}
        return HttpResponse(json.dumps(data),
                            status=400,
                            content_type='application/json')

    def form_valid(self, form):
        file_ = form.cleaned_data['file']
        handler_class = import_class(self.upload_handler)
        uploader = handler_class(file_,
                                 upload_to=self.kwargs.get('upload_to', None))
        uploader.save_file()
        file_name = force_str(uploader.get_filename())
        file_url = force_str(uploader.get_url())
        file_name_key = 'id' if self.form_class is ImageForm else 'name'
        data = {'file': {'url': file_url, 'id': file_name}}
        return HttpResponse(json.dumps(data), content_type='application/json')