Beispiel #1
0
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)
Beispiel #2
0
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())