mirror of https://github.com/jumpserver/jumpserver
				
				
				
			
		
			
				
	
	
		
			41 lines
		
	
	
		
			816 B
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			816 B
		
	
	
	
		
			Python
		
	
	
# -*- coding: utf-8 -*-
 | 
						|
#
 | 
						|
from jumpserver.const import DYNAMIC
 | 
						|
from werkzeug.local import Local, LocalProxy
 | 
						|
 | 
						|
thread_local = Local()
 | 
						|
 | 
						|
 | 
						|
def _find(attr):
 | 
						|
    return getattr(thread_local, attr, None)
 | 
						|
 | 
						|
 | 
						|
class _Settings:
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
def get_dynamic_cfg_from_thread_local():
 | 
						|
    KEY = 'dynamic_config'
 | 
						|
 | 
						|
    try:
 | 
						|
        cfg = getattr(thread_local, KEY)
 | 
						|
    except AttributeError:
 | 
						|
        cfg = _Settings()
 | 
						|
        setattr(thread_local, KEY, cfg)
 | 
						|
 | 
						|
    return cfg
 | 
						|
 | 
						|
 | 
						|
class DynamicDefaultLocalProxy(LocalProxy):
 | 
						|
    def __getattr__(self, item):
 | 
						|
        try:
 | 
						|
            value = super().__getattr__(item)
 | 
						|
        except AttributeError:
 | 
						|
            value = getattr(DYNAMIC, item)()
 | 
						|
            setattr(self, item, value)
 | 
						|
 | 
						|
        return value
 | 
						|
 | 
						|
 | 
						|
LOCAL_DYNAMIC_SETTINGS = DynamicDefaultLocalProxy(get_dynamic_cfg_from_thread_local)
 |