mirror of https://github.com/jumpserver/jumpserver
				
				
				
			
		
			
				
	
	
		
			39 lines
		
	
	
		
			931 B
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			931 B
		
	
	
	
		
			Python
		
	
	
import os
 | 
						|
import shutil
 | 
						|
from functools import wraps
 | 
						|
 | 
						|
from django.conf import settings
 | 
						|
 | 
						|
__all__ = ["WorkPostRunCleaner", "cleanup_post_run"]
 | 
						|
 | 
						|
 | 
						|
class WorkPostRunCleaner:
 | 
						|
    @property
 | 
						|
    def clean_dir(self):
 | 
						|
        raise NotImplemented
 | 
						|
 | 
						|
    def clean_post_run(self):
 | 
						|
        if settings.DEBUG_DEV:
 | 
						|
            return
 | 
						|
        if self.clean_dir and os.path.exists(self.clean_dir):
 | 
						|
            shutil.rmtree(self.clean_dir)
 | 
						|
 | 
						|
 | 
						|
def cleanup_post_run(func):
 | 
						|
    def get_instance(*args):
 | 
						|
        if not len(args) > 0:
 | 
						|
            return
 | 
						|
        return args[0]
 | 
						|
 | 
						|
    @wraps(func)
 | 
						|
    def wrapper(*args, **kwargs):
 | 
						|
        instance = get_instance(*args)
 | 
						|
        if not instance or not issubclass(type(instance), WorkPostRunCleaner):
 | 
						|
            raise NotImplementedError("you should extend 'WorkPostRunCleaner'")
 | 
						|
        try:
 | 
						|
            return func(*args, **kwargs)
 | 
						|
        finally:
 | 
						|
            instance.clean_post_run()
 | 
						|
 | 
						|
    return wrapper
 |