34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| # Copyright 2020 ACSONE SA/NV
 | |
| # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
 | |
| 
 | |
| import logging
 | |
| 
 | |
| logger = logging.getLogger(__name__)
 | |
| 
 | |
| 
 | |
| def post_init_hook(cr, registry):
 | |
|     # this is the trigger that sends notifications when jobs change
 | |
|     logger.info("Create queue_job_notify trigger")
 | |
|     cr.execute(
 | |
|         """
 | |
|             DROP TRIGGER IF EXISTS queue_job_notify ON queue_job;
 | |
|             CREATE OR REPLACE
 | |
|                 FUNCTION queue_job_notify() RETURNS trigger AS $$
 | |
|             BEGIN
 | |
|                 IF TG_OP = 'DELETE' THEN
 | |
|                     IF OLD.state != 'done' THEN
 | |
|                         PERFORM pg_notify('queue_job', OLD.uuid);
 | |
|                     END IF;
 | |
|                 ELSE
 | |
|                     PERFORM pg_notify('queue_job', NEW.uuid);
 | |
|                 END IF;
 | |
|                 RETURN NULL;
 | |
|             END;
 | |
|             $$ LANGUAGE plpgsql;
 | |
|             CREATE TRIGGER queue_job_notify
 | |
|                 AFTER INSERT OR UPDATE OR DELETE
 | |
|                 ON queue_job
 | |
|                 FOR EACH ROW EXECUTE PROCEDURE queue_job_notify();
 | |
|         """
 | |
|     )
 |