def contribute_to_class(self, cls, name): # Override module_name and class_name of all registered settings for attr in self.__class__.__dict__.values(): if isinstance(attr, Value): unregister_setting(attr) attr.module_name = cls.__module__ attr.class_name = cls.__name__ attr._app = cls._meta.app_label register_setting(attr) # Create permission for editing settings on the model permission = ( 'can_edit_%s_settings' % cls.__name__.lower(), 'Can edit %s settings' % cls._meta.verbose_name_raw, ) if permission not in cls._meta.permissions: # Add a permission for the setting editor try: cls._meta.permissions.append(permission) except AttributeError: # Permissions were supplied as a tuple, so preserve that cls._meta.permissions = tuple(cls._meta.permissions + (permission, )) # Django migrations runner cache properties if hasattr(cls._meta, 'original_attrs'): cls._meta.original_attrs['permissions'] = cls._meta.permissions # Finally, place the attribute on the class setattr(cls, name, GroupDescriptor(self, name))
def contribute_to_class(self, cls, name): # Override module_name and class_name of all registered settings for attr in self.__class__.__dict__.values(): if isinstance(attr, Value): unregister_setting(attr) attr.module_name = cls.__module__ attr.class_name = cls.__name__ attr._app = cls._meta.app_label register_setting(attr) # Create permission for editing settings on the model permission = ( 'can_edit_%s_settings' % cls.__name__.lower(), 'Can edit %s settings' % cls._meta.verbose_name_raw, ) if permission not in cls._meta.permissions: # Add a permission for the setting editor try: cls._meta.permissions.append(permission) except AttributeError: # Permissions were supplied as a tuple, so preserve that cls._meta.permissions = tuple(cls._meta.permissions + (permission,)) # Django migrations runner cache properties if hasattr(cls._meta, 'original_attrs'): cls._meta.original_attrs['permissions'] = cls._meta.permissions # Finally, place the attribute on the class setattr(cls, name, GroupDescriptor(self, name))