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('tgm-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=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 tgmfiles.fields import TgmFormFileField TgmFormFileField.file_type_error(uploaded_file.content_type, self.allowed_types) if uploaded_file: self.content_type = uploaded_file.content_type return uploaded_file