Ejemplo n.º 1
0
    def render(self, name, value, attrs=None, renderer=None):
        element_id = 'id'
        md5sum_field_value = ''
        file_url = ''
        file_path = ''

        if value:
            if hasattr(value, 'instance') and isinstance(
                    value.instance, TemporaryFileWrapper):
                # Case 1: Pre existing temporary-file in form.
                md5sum_field_value = value.instance.md5sum
                file_url = force_text(value.instance.file.url)
                file_path = force_text(value.instance.file.path)
            elif hasattr(value, "url") and value.name != 'False':
                # Case 2: Pre existing linked-file in form.
                file_url = force_text(value.url)
                file_path = force_text(value.path)
                md5sum_field_value = 'id:%s' % value.instance.id

        classes = [
            'file-uploader', self.widget_class, 'has-image' if file_url else ''
        ]

        if file_url and not self.get_is_image(value):
            classes.append('is-file')

        upload_url = reverse('thor-file-upload')
        delete_val = '' if file_url else 'checked="checked"'

        file_name = os.path.split(value.name)[-1] if value and hasattr(
            value, "name") else 'Uploaded.pdf'

        delete_field = self.render_delete_field(name, delete_val)

        output = self.render_template(
            name=name,
            file_url=self.get_file_upload_url_func(file_url),
            element_id=element_id,
            classes=' '.join(classes),
            upload_url=upload_url,
            FQ=self.get_fq(),
            md5sum_field_name=self.md5sum_field_name(name),
            fq_field_name=self.fq_field_name(name),
            md5sum_field_value=md5sum_field_value,
            delete_field=delete_field,
            file_name=file_name,
            max_size=get_max_file_size(),
            size_error=get_size_error(),
            value=value,
            file_path=file_path,
            file_upload_icon=self.get_file_upload_icon_func(file_path),
        )

        return mark_safe(force_text(output))
Ejemplo n.º 2
0
    def render(self, name, value, attrs=None):
        element_id = 'id'
        md5sum_field_value = ''
        file_url = ''
        file_path = ''

        if value:
            if hasattr(value, 'instance') and isinstance(value.instance, TemporaryFileWrapper):
                # Case 1: Pre existing temporary-file in form.
                md5sum_field_value = value.instance.md5sum
                file_url = force_text(value.instance.file.url)
                file_path = force_text(value.instance.file.path)
            elif hasattr(value, "url") and value.name != 'False':
                # Case 2: Pre existing linked-file in form.
                file_url = force_text(value.url)
                file_path = force_text(value.path)
                md5sum_field_value = 'id:%s' % value.instance.id

        classes = ['file-uploader', self.widget_class, 'has-image' if file_url else '']

        if file_url and not self.get_is_image(value):
            classes.append('is-file')

        upload_url = reverse('thor-file-upload')
        delete_val = '' if file_url else 'checked="checked"'

        file_name = os.path.split(value.name)[-1] if value and hasattr(value, "name") else 'Uploaded.pdf'

        delete_field = self.render_delete_field(name, delete_val)

        output = self.render_template(
            name=name,
            file_url=self.get_file_upload_url_func(file_url),
            element_id=element_id,
            classes=' '.join(classes),
            upload_url=upload_url,
            FQ=self.get_fq(),
            md5sum_field_name=self.md5sum_field_name(name),
            fq_field_name=self.fq_field_name(name),
            md5sum_field_value=md5sum_field_value,
            delete_field=delete_field,
            file_name=file_name,
            max_size=get_max_file_size(),
            size_error=get_size_error(),
            value=value,
            file_path=file_path,
            file_upload_icon=self.get_file_upload_icon_func(file_path),
        )

        return mark_safe(force_text(output))
Ejemplo n.º 3
0
    def clean_file(self):
        uploaded_file = self.cleaned_data.get('file', False)
        if uploaded_file:
            if uploaded_file._size > get_max_file_size():
                raise forms.ValidationError(get_size_error())
        else:
            raise forms.ValidationError(force_text(_("Couldn't read uploaded file")))

        if not allowed_type(uploaded_file.content_type, self.allowed_types):
            from upthor.fields import ThorFormFileField
            ThorFormFileField.file_type_error(uploaded_file.content_type, self.allowed_types)

        if uploaded_file:
            self.content_type = uploaded_file.content_type

        return uploaded_file
Ejemplo n.º 4
0
    def test_settings_overwrite(self):
        with self.settings(THOR_UPLOAD_TO='other-path'):
            self.assertEquals(get_upload_path(), 'other-path')

        with self.settings(THOR_EXPIRE_TIME=500):
            self.assertEquals(get_expiry_time(), 500)

        with self.settings(THOR_LINKED_EXPIRE_TIME=666):
            self.assertEquals(get_linked_expiry_time(), 666)

        with self.settings(THOR_MAX_FILE_SIZE=666):
            self.assertEquals(get_max_file_size(), 666)

        with self.settings(THOR_DISABLE_FQ_ENCRYPT=True):
            self.assertEquals(fq_encrypt_disabled(), True)

        with self.settings(THOR_ENABLE_ADMIN=False):
            self.assertEquals(show_in_admin(), False)
Ejemplo n.º 5
0
    def clean_file(self):
        uploaded_file = self.cleaned_data.get('file', False)
        if uploaded_file:
            if uploaded_file.size > get_max_file_size():
                raise forms.ValidationError(get_size_error())
        else:
            raise forms.ValidationError(
                force_text(_("Couldn't read uploaded file")))

        if not allowed_type(uploaded_file.content_type, self.allowed_types):
            from upthor.fields import ThorFormFileField
            ThorFormFileField.file_type_error(uploaded_file.content_type,
                                              self.allowed_types)

        if uploaded_file:
            self.content_type = uploaded_file.content_type

        return uploaded_file
Ejemplo n.º 6
0
    def test_settings_overwrite(self):
        with self.settings(THOR_UPLOAD_TO='other-path'):
            self.assertEquals(get_upload_path(), 'other-path')

        with self.settings(THOR_EXPIRE_TIME=500):
            self.assertEquals(get_expiry_time(), 500)

        with self.settings(THOR_LINKED_EXPIRE_TIME=666):
            self.assertEquals(get_linked_expiry_time(), 666)

        with self.settings(THOR_MAX_FILE_SIZE=666):
            self.assertEquals(get_max_file_size(), 666)

        with self.settings(THOR_DISABLE_FQ_ENCRYPT=True):
            self.assertEquals(fq_encrypt_disabled(), True)

        with self.settings(THOR_ENABLE_ADMIN=False):
            self.assertEquals(show_in_admin(), False)