mirror of https://github.com/jumpserver/jumpserver
				
				
				
			
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
# -*- coding: utf-8 -*-
 | 
						|
#
 | 
						|
from django.dispatch import receiver
 | 
						|
from django.db.models.signals import m2m_changed, post_save, pre_save
 | 
						|
 | 
						|
from common.utils import get_logger
 | 
						|
from .models import Ticket, Comment
 | 
						|
from .utils import (
 | 
						|
    send_new_ticket_mail_to_assignees,
 | 
						|
    send_ticket_action_mail_to_user
 | 
						|
)
 | 
						|
 | 
						|
 | 
						|
logger = get_logger(__name__)
 | 
						|
 | 
						|
 | 
						|
@receiver(m2m_changed, sender=Ticket.assignees.through)
 | 
						|
def on_ticket_assignees_set(sender, instance=None, action=None,
 | 
						|
                            reverse=False, model=None,
 | 
						|
                            pk_set=None, **kwargs):
 | 
						|
    if action == 'post_add':
 | 
						|
        logger.debug('New ticket create, send mail: {}'.format(instance.id))
 | 
						|
        assignees = model.objects.filter(pk__in=pk_set)
 | 
						|
        send_new_ticket_mail_to_assignees(instance, assignees)
 | 
						|
    if action.startswith('post') and not reverse:
 | 
						|
        instance.assignees_display = ', '.join([
 | 
						|
            str(u) for u in instance.assignees.all()
 | 
						|
        ])
 | 
						|
        instance.save()
 | 
						|
 | 
						|
 | 
						|
@receiver(post_save, sender=Ticket)
 | 
						|
def on_ticket_status_change(sender, instance=None, created=False, **kwargs):
 | 
						|
    if created or instance.status == "open":
 | 
						|
        return
 | 
						|
    logger.debug('Ticket changed, send mail: {}'.format(instance.id))
 | 
						|
    send_ticket_action_mail_to_user(instance)
 | 
						|
 | 
						|
 | 
						|
@receiver(pre_save, sender=Ticket)
 | 
						|
def on_ticket_create(sender, instance=None, **kwargs):
 | 
						|
    instance.user_display = str(instance.user)
 | 
						|
    if instance.assignee:
 | 
						|
        instance.assignee_display = str(instance.assignee)
 | 
						|
 | 
						|
 | 
						|
@receiver(pre_save, sender=Comment)
 | 
						|
def on_comment_create(sender, instance=None, **kwargs):
 | 
						|
    instance.user_display = str(instance.user)
 |