from django.template import loader, loader_tags, TemplateDoesNotExist, Context, Template as DjangoTemplate
from django.utils.datastructures import SortedDict
from philo.admin.widgets import ModelLookupWidget
-from philo.models import Entity, Template, Contentlet, ContentReference, Attribute, Node, NodeNavigationOverride
+from philo.models import Entity, Template, Contentlet, ContentReference, Attribute
from philo.utils import fattr
name, content_type = self.extra_containers[i - self.initial_form_count() - 1]
kwargs['instance'] = self.model(name=name, content_type=content_type)
- return super(ContentReferenceInlineFormSet, self)._construct_form(i, **kwargs)
-
-
-class NodeWithOverrideForm(forms.ModelForm):
- title = NodeNavigationOverride._meta.get_field('title').formfield()
- url = NodeNavigationOverride._meta.get_field('url').formfield()
- child_navigation = NodeNavigationOverride._meta.get_field('child_navigation').formfield(required=False)
-
- def __init__(self, *args, **kwargs):
- super(NodeWithOverrideForm, self).__init__(*args, **kwargs)
- if self.instance.pk:
- self._override = override = self.get_override(self.instance)
- self.initial.update({
- 'title': override.title,
- 'url': override.url,
- 'child_navigation': override.child_navigation_json
- })
-
- def get_override(self, instance):
- try:
- return NodeNavigationOverride.objects.get(parent=self.instance.parent, child=self.instance)
- except NodeNavigationOverride.DoesNotExist:
- override = NodeNavigationOverride(parent=self.instance.parent, child=self.instance)
- override.child_navigation = None
- return override
-
- def save(self, commit=True):
- obj = super(NodeWithOverrideForm, self).save(commit)
- cleaned_data = self.cleaned_data
- override = self.get_override(obj)
-
- # Override information should only be set if there was no previous override or if the
- # information was just manually set - i.e. was not equal to the data on the cached override.
- if not override.pk or cleaned_data['title'] != self._override.title or cleaned_data['url'] != self._override.url or cleaned_data['child_navigation'] != self._override.child_navigation:
- override.title = self.cleaned_data['title']
- override.url = self.cleaned_data['url']
- override.child_navigation = self.cleaned_data['child_navigation']
- override.save()
- return obj
-
- class Meta:
- model = Node
-
-
-class NodeOverrideInlineFormSet(BaseInlineFormSet):
- def __init__(self, data=None, files=None, instance=None, save_as_new=False, prefix=None, queryset=None):
- if queryset is None:
- queryset = self.model._default_manager
- queryset = queryset.filter(parent=instance, child__parent=instance)
- super(NodeOverrideInlineFormSet, self).__init__(data, files, instance, save_as_new, prefix, queryset)
-
- def add_fields(self, form, index):
- super(NodeOverrideInlineFormSet, self).add_fields(form, index)
- form.fields['child'].queryset = self.instance.children.all()
\ No newline at end of file
+ return super(ContentReferenceInlineFormSet, self)._construct_form(i, **kwargs)
\ No newline at end of file