def __new__(cls, name, bases, attrs): module = attrs.pop('__module__') parents = [b for b in bases if isinstance(b, ProfilePermissonBase)] if parents: fields = [] for obj_name, obj in attrs.items(): if isinstance(obj, models.Field): fields.append(obj_name) Permission.add_to_class(obj_name, obj) return super(ProfilePermissonBase, cls).__new__(cls, name, bases, attrs)
return True def create_admin_role(content_object, user): content_type = ContentType.objects.get_for_model(content_object) object_id = content_object.id try: generic_member = GenericMember.objects.get( user=user, content_type= content_type, object_id= object_id) except GenericMember.DoesNotExist: generic_member = GenericMember.objects.create( user= user, content_type= content_type, object_id= object_id, ) try: role = Role.objects.get( content_type= content_type, object_id=object_id, name= "admin") except Role.DoesNotExist: role = Role.objects.create( content_type= content_type, object_id= object_id, name = "admin" ) generic_member.role = role generic_member.save() BulkInvitation.add_to_class('send_invitations', send_invitations) Permission.add_to_class('__str__', permission_str_method)
null=True)) Group.add_to_class('updated_at', models.DateTimeField(auto_now=True, blank=True, null=True)) Group.add_to_class('guard_name', models.CharField(blank=True, null=True, max_length=191)) # class AbPermissions(models.Model): # name = models.CharField(max_length=191) # guard_name = models.CharField(max_length=191) # created_at = models.DateTimeField(blank=True, null=True) # updated_at = models.DateTimeField(blank=True, null=True) # class Meta: # managed = True # db_table = 'ab_permissions' Permission.add_to_class( 'guard_name', models.CharField(blank=True, null=True, max_length=191)) Permission.add_to_class( 'created_at', models.DateTimeField(auto_now_add=True, blank=True, null=True)) Permission.add_to_class( 'updated_at', models.DateTimeField(auto_now=True, blank=True, null=True)) # class AbRoleHasPermissions(models.Model): # permission = models.ForeignKey(AbPermissions, models.DO_NOTHING) # role = models.ForeignKey('AbRoles', models.DO_NOTHING) # class Meta: # managed = True # db_table = 'ab_role_has_permissions' # unique_together = (('permission', 'role'),)
from django.contrib.contenttypes.models import ContentType from django.contrib.auth.models import Permission, Group from django.db import models from constants.global_constant import PERMISSION_CODENAME_FORMAT from django.contrib.auth import get_user_model ContentType._meta.get_field("app_label").max_length = 1000 Permission._meta.get_field("codename").max_length = 1000 def custom(self): def __get_permission_name(perm, curr_instance): return perm.content_type.model + ' | ' + str(curr_instance) if self.uuid_codename: __Class = PERMISSION_CODENAME_FORMAT.get(self.content_type.model, None) if __Class: instance = __Class.objects.get(pk=str(self.uuid_codename)) return __get_permission_name(self, instance) else: return self.content_type.model + ' | ' + self.name Permission.add_to_class('uuid_codename', models.CharField(max_length=1000)) Permission._meta.get_field("codename")._unique = True Permission._meta.get_field("name").max_length = 1000 Permission.__str__ = custom Group.add_to_class('owner', models.ForeignKey(get_user_model()))
# -*- coding: utf-8 -*- from django.contrib.auth.models import Permission def __str__(self): return self.name Permission.add_to_class('__str__', __str__)