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))
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))
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
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)
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