forked from ungleich-public/dynamicweb
93 lines
3 KiB
Python
93 lines
3 KiB
Python
from django.apps import apps
|
|
from django.utils.translation import gettext as _
|
|
|
|
from cms.utils.compat.warnings import RemovedInDjangoCMS60Warning
|
|
from cms.wizards.wizard_base import Wizard, entry_choices, get_entries, get_entry # noqa: F401
|
|
|
|
|
|
class AlreadyRegisteredException(Exception):
|
|
pass
|
|
|
|
|
|
class WizardPool:
|
|
"""
|
|
.. deprecated:: 4.0
|
|
"""
|
|
|
|
def is_registered(self, entry, **kwargs):
|
|
"""
|
|
.. deprecated:: 4.0
|
|
|
|
Returns True if the provided entry is registered.
|
|
"""
|
|
# TODO: Add deprecation warning
|
|
return entry.id in apps.get_app_config('cms').cms_extension.wizards
|
|
|
|
def register(self, entry):
|
|
"""
|
|
.. deprecated:: 4.0
|
|
|
|
You may notice from the example above that the last line in the sample code is::
|
|
|
|
wizard_pool.register(my_app_wizard)
|
|
|
|
This sort of thing should look very familiar, as a similar approach is used for
|
|
cms_apps, template tags and even Django's admin.
|
|
|
|
Calling the wizard pool's ``register`` method will register the provided wizard
|
|
into the pool, unless there is already a wizard of the same module and class
|
|
name. In this case, the register method will raise a
|
|
``cms.wizards.wizard_pool.AlreadyRegisteredException``.
|
|
"""
|
|
import warnings
|
|
|
|
warnings.warn(
|
|
"Using wizard_pool is deprecated. Use the cms_config instead.",
|
|
RemovedInDjangoCMS60Warning,
|
|
stacklevel=2,
|
|
)
|
|
assert isinstance(entry, Wizard), "entry must be an instance of Wizard"
|
|
if self.is_registered(entry, passive=True):
|
|
model = entry.get_model()
|
|
raise AlreadyRegisteredException(
|
|
_("A wizard has already been registered for model: %s") %
|
|
model.__name__)
|
|
else:
|
|
apps.get_app_config('cms').cms_extension.wizards[entry.id] = entry
|
|
|
|
def unregister(self, entry):
|
|
"""
|
|
.. deprecated:: 4.0
|
|
|
|
If «entry» is registered into the pool, remove it.
|
|
|
|
Returns True if the entry was successfully registered, else False.
|
|
"""
|
|
# TODO: Add deprecation warning
|
|
assert isinstance(entry, Wizard), "entry must be an instance of Wizard"
|
|
if self.is_registered(entry):
|
|
del apps.get_app_config('cms').cms_extension.wizards[entry.id]
|
|
return True
|
|
return False
|
|
|
|
def get_entry(self, entry):
|
|
"""
|
|
.. deprecated:: 4.0 use :func:`cms.wizards.helpers.get_entry` instead
|
|
|
|
Returns the wizard from the pool identified by «entry», which may be a
|
|
Wizard instance or its "id" (which is the PK of its underlying
|
|
content-type).
|
|
"""
|
|
# TODO: Deprecated warning
|
|
return get_entry(entry)
|
|
|
|
|
|
wizard_pool = WizardPool()
|
|
"""
|
|
.. warning::
|
|
.. deprecated:: 4.0
|
|
|
|
Using wizard_pool is deprecated. Use `cms.wizards.helper` functions instead.
|
|
Since django CMS version 4 wizards are registered with the cms using
|
|
:class:`cms.app_base.CMSAppConfig` in ``cms_config.py``.
|
|
"""
|