def __call__(cls, *args, **kwargs): # split kwargs which django db are not aware of # to separete dict kwargs_for_params = {} defined_params = cls.get_defined_params() for param in defined_params: if param in kwargs: kwargs_for_params[param] = kwargs.pop(param) obj = super(ParamedModelType, cls).__call__(*args, **kwargs) # noinspection PyProtectedMember if obj._class: # we store actual class name in _class attribute # so use it to load required class # noinspection PyProtectedMember,PyPep8Naming Cls = loader.load_class(obj._class) # replace base class obj.__class__ = Cls # set param values for param in kwargs_for_params: setattr(obj, param, kwargs_for_params[param]) return obj
def ext(self): try: # noinspection PyPep8Naming ExtCls = loader.load_class( 'devops.models.node_ext.{ext_name}:NodeExtension' ''.format(ext_name=self.role or 'default')) return ExtCls(node=self) except ImportError: logger.debug('NodeExtension is not found for role: {!r}' ''.format(self.role)) return None
def ext(self): ExtCls = loader.load_class( 'devops.models.node_ext.{ext_name}:NodeExtension' ''.format(ext_name=self.role or 'default')) return ExtCls(node=self)
def get_model_class(self, class_name): return loader.load_class( '{driver_name}:{class_name}'.format(driver_name=self.name, class_name=class_name))
def driver_create(name, **params): DriverCls = loader.load_class( '{driver_name}:Driver'.format(driver_name=name)) return DriverCls.objects.create( name=name, **params)
def get_model_class(self, class_name): return loader.load_class('{driver_name}:{class_name}'.format( driver_name=self.name, class_name=class_name))
def driver_create(name, **params): DriverCls = loader.load_class( '{driver_name}:Driver'.format(driver_name=name)) return DriverCls.objects.create(name=name, **params)