Package zinnia :: Package admin :: Module forms
[hide private]

Source Code for Module zinnia.admin.forms

 1  """Forms for Zinnia admin""" 
 2  from django import forms 
 3  from django.db.models import ManyToOneRel 
 4  from django.db.models import ManyToManyRel 
 5  from django.contrib.sites.models import Site 
 6  from django.utils.translation import ugettext_lazy as _ 
 7  from django.contrib.admin.widgets import RelatedFieldWidgetWrapper 
 8   
 9  from zinnia.models import Entry 
10  from zinnia.models import Category 
11  from zinnia.admin.widgets import TreeNodeChoiceField 
12  from zinnia.admin.widgets import MPTTFilteredSelectMultiple 
13  from zinnia.admin.widgets import MPTTModelMultipleChoiceField 
14   
15   
16 -class CategoryAdminForm(forms.ModelForm):
17 """Form for Category's Admin""" 18 parent = TreeNodeChoiceField(label=_('parent category').capitalize(), 19 required=False, 20 empty_label=_('No parent category'), 21 queryset=Category.tree.all(), 22 level_indicator=u'|--') 23
24 - def __init__(self, *args, **kwargs):
25 super(CategoryAdminForm, self).__init__(*args, **kwargs) 26 rel = ManyToOneRel(Category, 'id') 27 self.fields['parent'].widget = RelatedFieldWidgetWrapper( 28 self.fields['parent'].widget, rel, self.admin_site)
29
30 - def clean_parent(self):
31 """Check if category parent is not selfish""" 32 data = self.cleaned_data['parent'] 33 if data == self.instance: 34 raise forms.ValidationError( 35 _('A category cannot be parent of itself.')) 36 return data
37
38 - class Meta:
39 """CategoryAdminForm's Meta""" 40 model = Category
41 42
43 -class EntryAdminForm(forms.ModelForm):
44 """Form for Entry's Admin""" 45 categories = MPTTModelMultipleChoiceField( 46 Category.objects.all(), required=False, label=_('Categories'), 47 widget=MPTTFilteredSelectMultiple(_('categories'), False, 48 attrs={'rows': '10'})) 49
50 - def __init__(self, *args, **kwargs):
51 super(EntryAdminForm, self).__init__(*args, **kwargs) 52 rel = ManyToManyRel(Category, 'id') 53 self.fields['categories'].widget = RelatedFieldWidgetWrapper( 54 self.fields['categories'].widget, rel, self.admin_site) 55 self.fields['sites'].initial = [Site.objects.get_current()]
56
57 - class Meta:
58 """EntryAdminForm's Meta""" 59 model = Entry
60