djangocms_blog/djangocms_blog/cms_wizards.py

62 lines
2.4 KiB
Python
Raw Normal View History

2015-10-24 18:47:37 +02:00
# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals
2015-11-25 10:34:50 +01:00
from cms.utils.permissions import get_current_user
2015-10-24 18:47:37 +02:00
try:
from cms.wizards.wizard_base import Wizard
from cms.wizards.wizard_pool import wizard_pool
2015-10-25 17:02:42 +01:00
from django import forms
2015-10-24 18:47:37 +02:00
from django.utils.text import slugify
from django.utils.translation import ugettext_lazy as _
from parler.forms import TranslatableModelForm
from .cms_appconfig import BlogConfig
from .models import Post
class PostWizardForm(TranslatableModelForm):
default_appconfig = None
def __init__(self, *args, **kwargs):
2015-10-31 11:50:59 +01:00
if 'initial' not in kwargs or not kwargs.get('initial', False):
kwargs['initial'] = {}
kwargs['initial']['app_config'] = self.default_appconfig
if 'data' in kwargs and kwargs['data'] is not None:
2015-10-24 18:47:37 +02:00
kwargs['data']['1-app_config'] = self.default_appconfig
super(PostWizardForm, self).__init__(*args, **kwargs)
2015-10-25 17:02:42 +01:00
self.fields['app_config'].widget = forms.Select(
attrs=self.fields['app_config'].widget.attrs,
choices=self.fields['app_config'].widget.choices,
)
2015-10-24 18:47:37 +02:00
self.fields['app_config'].widget.attrs['disabled'] = True
class Meta:
model = Post
fields = ['app_config', 'title', 'abstract', 'categories']
2015-10-25 17:02:42 +01:00
class Media:
js = ('admin/js/jquery.js', 'admin/js/jquery.init.js',)
2015-11-25 10:34:50 +01:00
def save(self, commit=True):
2015-11-26 07:54:20 +01:00
self.instance._set_default_author(get_current_user())
2015-11-25 10:34:50 +01:00
return super(PostWizardForm, self).save(commit)
2015-10-24 18:47:37 +02:00
class PostWizard(Wizard):
2015-10-25 10:09:49 +01:00
pass
2015-10-24 18:47:37 +02:00
for config in BlogConfig.objects.all().order_by('namespace'):
2015-10-25 16:22:13 +01:00
new_wizard = type(str(slugify(config.app_title)), (PostWizard,), {})
new_form = type(str('{0}Form').format(slugify(config.app_title)), (PostWizardForm,), {
2015-10-24 18:47:37 +02:00
'default_appconfig': config.pk
})
post_wizard = new_wizard(
title=_('New {0}').format(config.object_name),
weight=200,
form=new_form,
2015-10-25 18:14:19 +01:00
model=Post,
2015-10-24 18:47:37 +02:00
description=_('Create a new {0} in {1}').format(config.object_name, config.app_title),
)
wizard_pool.register(post_wizard)
except ImportError:
# For django CMS version not supporting wizards just ignore this file
pass