mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
834 B
29 lines
834 B
# -*- coding: utf-8 -*-
|
|
#
|
|
from django.dispatch import receiver
|
|
from django.db.models.signals import post_save, m2m_changed
|
|
|
|
from common.decorator import on_transaction_commit
|
|
from common.utils import get_logger
|
|
from tickets.models import Ticket
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
@on_transaction_commit
|
|
def after_save_set_rel_snapshot(sender, instance, update_fields=None, **kwargs):
|
|
if update_fields and list(update_fields)[0] == 'rel_snapshot':
|
|
return
|
|
instance.set_rel_snapshot()
|
|
|
|
|
|
@on_transaction_commit
|
|
def on_m2m_change(sender, action, instance, reverse=False, **kwargs):
|
|
if action.startswith('post'):
|
|
instance.set_rel_snapshot()
|
|
|
|
|
|
for ticket_cls in Ticket.__subclasses__():
|
|
post_save.connect(after_save_set_rel_snapshot, sender=ticket_cls)
|
|
m2m_changed.connect(on_m2m_change, sender=ticket_cls)
|