Generated: Wed 2013-03-13 10:33 CET
Source file: /media/Envs/Envs/filer-gallery/lib/python2.7/site-packages/cms/forms/fields.py
Stats: 0 executed, 28 missed, 6 excluded, 15 ignored
# -*- coding: utf-8 -*-from django.utils.translation import ugettext_lazy as _from django import formsfrom django.forms.fields import EMPTY_VALUESfrom cms.models.pagemodel import Pagefrom cms.forms.widgets import PageSelectWidgetfrom cms.forms.utils import get_site_choices, get_page_choicesclass SuperLazyIterator(object): def __init__(self, func): self.func = func def __iter__(self): return iter(self.func())class PageSelectFormField(forms.MultiValueField): widget = PageSelectWidget default_error_messages = { 'invalid_site': _(u'Select a valid site'), 'invalid_page': _(u'Select a valid page'), } def __init__(self, queryset, empty_label=u"---------", cache_choices=False, required=True, widget=None, to_field_name=None, *args, **kwargs): errors = self.default_error_messages.copy() if 'error_messages' in kwargs: errors.update(kwargs['error_messages']) site_choices = SuperLazyIterator(get_site_choices) page_choices = SuperLazyIterator(get_page_choices) kwargs['required']=required fields = ( forms.ChoiceField(choices=site_choices, required=False, error_messages={'invalid': errors['invalid_site']}), forms.ChoiceField(choices=page_choices, required=False, error_messages={'invalid': errors['invalid_page']}), ) super(PageSelectFormField, self).__init__(fields, *args, **kwargs) def compress(self, data_list): if data_list: page_id = data_list[1] if page_id in EMPTY_VALUES: if not self.required: return None raise forms.ValidationError(self.error_messages['invalid_page']) return Page.objects.get(pk=page_id) return Noneclass PlaceholderFormField(forms.Field): pass