You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

66 lines
2.5 KiB

from django import forms
from django.utils.translation import gettext_lazy as _
from . import models
class MediaCategoryAdminForm(forms.ModelForm):
class Meta:
model = models.MediaCategory
fields = '__all__'
def clean_parent(self):
data = self.cleaned_data['parent']
if data is not None and self.instance in data.path_list():
raise forms.ValidationError(
_("This would create a loop in the hierarchy"))
return data
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['parent'].queryset =\
self.fields['parent'].queryset.exclude(pk=self.instance.pk)
# TODO
# class MediaFileAdminForm(forms.ModelForm):
# class Meta:
# model = MediaFile
# widgets = {'file': AdminFileWithPreviewWidget}
# fields = '__all__'
# def __init__(self, *args, **kwargs):
# super(MediaFileAdminForm, self).__init__(*args, **kwargs)
# if settings.FEINCMS_MEDIAFILE_OVERWRITE and self.instance.id:
# field = self.instance.file.field
# if not hasattr(field, '_feincms_generate_filename_patched'):
# original_generate = field.generate_filename
# def _gen_fname(instance, filename):
# if instance.id and hasattr(instance, 'original_name'):
# logger.info("Overwriting file %s with new data" % (
# instance.original_name))
# instance.file.storage.delete(instance.original_name)
# return instance.original_name
# return original_generate(instance, filename)
# field.generate_filename = _gen_fname
# field._feincms_generate_filename_patched = True
# def clean_file(self):
# if settings.FEINCMS_MEDIAFILE_OVERWRITE and self.instance.id:
# new_base, new_ext = os.path.splitext(
# self.cleaned_data['file'].name)
# old_base, old_ext = os.path.splitext(self.instance.file.name)
# if new_ext.lower() != old_ext.lower():
# raise forms.ValidationError(_(
# "Cannot overwrite with different file type (attempt to"
# " overwrite a %(old_ext)s with a %(new_ext)s)"
# ) % {'old_ext': old_ext, 'new_ext': new_ext})
# self.instance.original_name = self.instance.file.name
# return self.cleaned_data['file']