forked from ungleich-public/dynamicweb
128 lines
4.4 KiB
Python
128 lines
4.4 KiB
Python
import warnings
|
|
|
|
from django.conf import settings
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth.models import Group
|
|
from django.db.models import signals
|
|
from django.dispatch import Signal
|
|
|
|
from cms.models import (
|
|
GlobalPagePermission,
|
|
PagePermission,
|
|
PageUser,
|
|
PageUserGroup,
|
|
)
|
|
|
|
# Import pagecontent signal handlers to ensure they are connected
|
|
from cms.signals import pagecontent # noqa: F401
|
|
from cms.signals.apphook import debug_server_restart, trigger_server_restart
|
|
from cms.signals.log_entries import (
|
|
log_page_operations,
|
|
log_placeholder_operations,
|
|
)
|
|
from cms.signals.permissions import (
|
|
post_save_user,
|
|
post_save_user_group,
|
|
pre_delete_globalpagepermission,
|
|
pre_delete_group,
|
|
pre_delete_pagepermission,
|
|
pre_delete_user,
|
|
pre_save_globalpagepermission,
|
|
pre_save_group,
|
|
pre_save_pagepermission,
|
|
pre_save_user,
|
|
user_m2m_changed,
|
|
)
|
|
from cms.utils.compat.warnings import RemovedInDjangoCMS60Warning
|
|
from cms.utils.conf import get_cms_setting
|
|
|
|
# ################### Our own signals ###################
|
|
|
|
|
|
class DeprecatedSignal(Signal):
|
|
def __init__(self, name, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
self._deprecation_name = name
|
|
|
|
def connect(self, receiver, sender=None, weak=True, dispatch_uid=None):
|
|
warnings.warn(
|
|
f"The '{self._deprecation_name}' signal is deprecated and will be removed in django CMS 6.0.",
|
|
RemovedInDjangoCMS60Warning,
|
|
stacklevel=2,
|
|
)
|
|
return super().connect(
|
|
receiver,
|
|
sender=sender,
|
|
weak=weak,
|
|
dispatch_uid=dispatch_uid,
|
|
)
|
|
|
|
|
|
# fired if a public page with an apphook is added or changed
|
|
urls_need_reloading = Signal()
|
|
|
|
# Deprecated: use operations hooks or other signals instead.
|
|
move_page = DeprecatedSignal("move_page")
|
|
|
|
# *disclaimer*
|
|
# The generic object operation signals are very likely to change
|
|
# as their usage evolves.
|
|
# As a result, rely on these at your own risk
|
|
pre_obj_operation = Signal()
|
|
|
|
post_obj_operation = Signal()
|
|
|
|
pre_placeholder_operation = Signal()
|
|
|
|
post_placeholder_operation = Signal()
|
|
|
|
|
|
# ################## apphook reloading ###################
|
|
|
|
if settings.DEBUG:
|
|
urls_need_reloading.connect(debug_server_restart)
|
|
|
|
|
|
urls_need_reloading.connect(trigger_server_restart, dispatch_uid="aldryn-apphook-reload-handle-urls-need-reloading")
|
|
|
|
|
|
# ##################### log entries #######################
|
|
|
|
post_obj_operation.connect(log_page_operations)
|
|
post_placeholder_operation.connect(log_placeholder_operations)
|
|
|
|
# ##################### permissions #######################
|
|
|
|
if get_cms_setting("PERMISSION"):
|
|
# only if permissions are in use
|
|
User = get_user_model()
|
|
signals.pre_save.connect(pre_save_user, sender=User, dispatch_uid="cms_pre_save_user")
|
|
signals.post_save.connect(post_save_user, sender=User, dispatch_uid="cms_post_save_user")
|
|
signals.pre_delete.connect(pre_delete_user, sender=User, dispatch_uid="cms_pre_delete_user")
|
|
signals.m2m_changed.connect(user_m2m_changed, sender=User.groups.through, dispatch_uid="cms_user_m2m_changed")
|
|
|
|
signals.pre_save.connect(pre_save_user, sender=PageUser, dispatch_uid="cms_pre_save_pageuser")
|
|
signals.pre_delete.connect(pre_delete_user, sender=PageUser, dispatch_uid="cms_pre_delete_pageuser")
|
|
|
|
signals.pre_save.connect(pre_save_group, sender=Group, dispatch_uid="cms_pre_save_group")
|
|
signals.post_save.connect(post_save_user_group, sender=Group, dispatch_uid="cms_post_save_group")
|
|
signals.pre_delete.connect(pre_delete_group, sender=Group, dispatch_uid="cms_pre_delete_group")
|
|
|
|
signals.pre_save.connect(pre_save_group, sender=PageUserGroup, dispatch_uid="cms_pre_save_pageusergroup")
|
|
signals.pre_delete.connect(pre_delete_group, sender=PageUserGroup, dispatch_uid="cms_pre_delete_pageusergroup")
|
|
|
|
signals.pre_save.connect(
|
|
pre_save_pagepermission, sender=PagePermission, dispatch_uid="cms_pre_save_pagepermission"
|
|
)
|
|
signals.pre_delete.connect(
|
|
pre_delete_pagepermission, sender=PagePermission, dispatch_uid="cms_pre_delete_pagepermission"
|
|
)
|
|
|
|
signals.pre_save.connect(
|
|
pre_save_globalpagepermission, sender=GlobalPagePermission, dispatch_uid="cms_pre_save_globalpagepermission"
|
|
)
|
|
signals.pre_delete.connect(
|
|
pre_delete_globalpagepermission,
|
|
sender=GlobalPagePermission,
|
|
dispatch_uid="cms_pre_delete_globalpagepermission",
|
|
)
|