class PageCopyForm(PageMassChangeForm): """Copy content TODO: now works only for page content """ depth = forms.IntegerField( label=_('Depth'), initial=0, help_text=_("Zero means only this page will be copied.")) from_root = forms.BooleanField(label=_('From Root ?'), initial=True, help_text=_("Start from root ?")) def handle(self, request, data): root_page = Page.objects.get(pk=data['page_id']) new_page = copy_model_instance(root_page, exclude=('id', 'parent')) if data.get("depth", 0): Page.copy_content_from(root_page)
class PageMassChangeForm(SelfHandlingForm, PageColorSchemeSwitchableFormMixin): """Page Mass Update Form for mass update of page theme, color scheme, layout and language """ page_id = forms.IntegerField( label=_('Page ID'), widget=forms.widgets.HiddenInput) language = LanguageSelectField( required=False ) theme = PageThemeSelectField( label=_('Theme'), required=False ) layout = forms.ChoiceField( label=_('Layout'), choices=BLANK_CHOICE_DASH + list(PAGE_LAYOUT_CHOICES), required=False) depth = forms.IntegerField(label=_('Depth'), initial=1) from_root = forms.BooleanField(label=_('From Root ?'), initial=True) def __init__(self, *args, **kwargs): super(PageMassChangeForm, self).__init__(*args, **kwargs) color_scheme_fields = self.init_color_scheme_switch( color_scheme=kwargs['initial'].get('color_scheme', None), field_kwargs={'widget': Select2Widget}) self.helper.layout = Layout( TabHolder( Tab(_('Options'), 'depth', 'page_id', 'from_root', 'language', ), Tab(_('Styles'), 'layout', Fieldset( 'Themes', 'theme', *color_scheme_fields), ), ), ) def handle(self, request, data): root_page = Page.objects.get(pk=data['page_id']) if data['from_root']: root_page = root_page.get_root() color_scheme = data.get('color_scheme', None) theme = data.get('theme', None) layout = data.get('layout', None) if color_scheme: root_page.color_scheme = data['color_scheme'] if layout: root_page.layout = data['layout'] if theme: root_page.theme = data['theme'] for page in root_page.get_descendants(): if page.level <= data['depth']: if data.get('language', None): page.language = data['language'] if color_scheme: page.color_scheme = data['color_scheme'] if layout: page.layout = data['layout'] if theme: page.theme = data['theme'] page.save() root_page.save() return HttpResponseRedirect(root_page.get_absolute_url()) def clean(self): cleaned = super(PageMassChangeForm, self).clean() theme = cleaned['theme'] if theme: cleaned['color_scheme'] = self.cleaned_data['theme__%s' % theme.id] return cleaned
class PageMassChangeForm(SelfHandlingForm): """Page Mass Update Form for mass update of page theme, color scheme and layout """ page_id = forms.IntegerField( label=_('Page ID'), widget=forms.widgets.HiddenInput) color_scheme = PageColorSchemeSelectField( label=_('Color Scheme'), required=False ) theme = PageThemeSelectField( label=_('Theme'), required=False ) layout = forms.ChoiceField( label=_('Layout'), choices=BLANK_CHOICE_DASH + list(PAGE_LAYOUT_CHOICES), required=False) depth = forms.IntegerField(label=_('Depth'), initial=1) from_root = forms.BooleanField(label=_('From Root ?'), initial=True) def __init__(self, *args, **kwargs): super(PageMassChangeForm, self).__init__(*args, **kwargs) self.helper.layout = Layout( TabHolder( Tab(_('Options'), 'depth', 'page_id', 'from_root', ), Tab(_('Styles'), 'layout', 'theme', 'color_scheme', ), ), ) def handle(self, request, data): root_page = Page.objects.get(pk=data['page_id']) if data['from_root']: root_page = root_page.get_root() color_scheme = data.get('color_scheme', None) theme = data.get('theme', None) layout = data.get('layout', None) if color_scheme: root_page.color_scheme = data['color_scheme'] if layout: root_page.layout = data['layout'] if theme: root_page.theme = data['theme'] for page in root_page.get_descendants(): if page.level <= data['depth']: if color_scheme: page.color_scheme = data['color_scheme'] if layout: page.layout = data['layout'] if theme: page.theme = data['theme'] page.save() root_page.save() return HttpResponseRedirect(root_page.get_absolute_url())