-class TreeForm(forms.ModelForm):
- def __init__(self, *args, **kwargs):
- super(TreeForm, self).__init__(*args, **kwargs)
- instance = self.instance
- instance_class=self.get_instance_class()
- try:
- self.fields['parent'].queryset = instance_class.objects.exclude(id=instance.id)
- except ObjectDoesNotExist:
- pass
- self.fields['parent'].validators = [TreeParentValidator(*self.get_validator_args())]
-
- def get_instance_class(self):
- return self.instance.__class__
-
- def get_validator_args(self):
- return [self.instance]
-
- def clean(self):
- cleaned_data = self.cleaned_data
-
- try:
- parent = cleaned_data['parent']
- slug = cleaned_data['slug']
- obj_class = self.get_instance_class()
- tpv = TreePositionValidator(parent, slug, obj_class)
- tpv(self.instance)
- except KeyError:
- pass
-
- return cleaned_data
-
-
-class TemplateAdmin(admin.ModelAdmin):
- prepopulated_fields = {'slug': ('name',)}
- fieldsets = (
- (None, {
- 'fields': ('parent', 'name', 'slug')
- }),
- ('Documentation', {
- 'classes': ('collapse', 'collapse-closed'),
- 'fields': ('documentation',)
- }),
- (None, {
- 'fields': ('code',)
- }),
- ('Advanced', {
- 'classes': ('collapse','collapse-closed'),
- 'fields': ('mimetype',)
- }),
- )
- save_on_top = True
- save_as = True
- list_display = ('__unicode__', 'slug', 'get_path',)
- form = TreeForm