Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.contrib.contenttypes.models import ContentType
- from django.db import models
- from django.contrib.auth.models import PermissionsMixin, AbstractBaseUser, BaseUserManager, Permission, Group
- class Realm(models.Model):
- name = models.CharField(max_length=99)
- alias = models.CharField(max_length=100)
- company_name = models.CharField(max_length=500, blank=True, null=True)
- email = models.CharField(max_length=100)
- address = models.CharField(max_length=300, blank=True, null=True)
- city = models.CharField(max_length=100, blank=True, null=True)
- postalcode = models.CharField(max_length=50, blank=True, null=True)
- phone = models.CharField(max_length=40, blank=True, null=True)
- url = models.CharField(max_length=200, blank=True, null=True)
- is_default = models.CharField(max_length=1, default='0')
- class Meta:
- managed = False
- db_table = 'realm'
- class Realmgroup(models.Model):
- realmgroup_name = models.CharField(max_length=100)
- class Meta:
- managed = False
- db_table = 'realmgroup'
- class RealmgroupMembers(models.Model):
- id_realmgroup = models.ForeignKey(Realmgroup, db_column='id_realmgroup')
- id_realm = models.ForeignKey(Realm, db_column='id_realm')
- class Meta:
- managed = False
- db_table = 'realmgroup_members'
- class Contact(models.Model):
- name = models.CharField(max_length=100)
- email = models.CharField(max_length=60)
- id_realm = models.ForeignKey('Realm', db_column='id_realm')
- class Meta:
- managed = False
- db_table = 'contact'
- class Contract(models.Model):
- licensenumber = models.CharField(unique=True, max_length=20)
- type = models.CharField(max_length=8)
- version = models.CharField(max_length=10, blank=True, null=True)
- helpdesk = models.IntegerField()
- license = models.IntegerField()
- buyingdate = models.DateField()
- startdate = models.DateField()
- enddate = models.DateField()
- initialduration = models.CharField(max_length=100)
- alertduration = models.CharField(max_length=100)
- alertdate = models.DateField()
- password = models.CharField(max_length=100)
- is_active = models.IntegerField()
- is_expired = models.IntegerField()
- id_realm = models.IntegerField()
- class Meta:
- managed = False
- db_table = 'contract'
- class User(AbstractBaseUser, PermissionsMixin):
- contact_name = models.CharField(max_length=100, unique=True)
- alias = models.CharField(max_length=100, blank=True, unique=True)
- email = models.CharField(max_length=100)
- is_admin = models.BooleanField(default=False)
- is_active = models.BooleanField(default=True)
- pager = models.CharField(max_length=500)
- from_ldap = models.IntegerField()
- host_notifications_enabled = models.CharField(max_length=1, blank=True, null=True, default=1)
- service_notifications_enabled = models.CharField(max_length=1, blank=True, null=True, default=1)
- host_notification_options = models.CharField(max_length=11, blank=True, null=True)
- service_notification_options = models.CharField(max_length=13, blank=True, null=True)
- can_submit_commands = models.CharField(max_length=1, blank=True, null=True, default=1)
- retain_status_information = models.CharField(max_length=1, blank=True, null=True)
- retain_nonstatus_information = models.CharField(max_length=1, blank=True, null=True)
- min_business_impact = models.CharField(max_length=1, blank=True, null=True)
- register = models.CharField(max_length=1, default=1)
- id_realm = models.ForeignKey(Realm, db_column='id_realm')
- USERNAME_FIELD = 'alias'
- REQUIRED_FIELDS = ['contact_name']
- class Meta(AbstractBaseUser.Meta):
- swappable = 'core.User'
- managed = False
- db_table = 'user'
- class Setting(models.Model):
- setting_key = models.CharField(max_length=100)
- default_value = models.CharField(max_length=1000)
- class Meta:
- managed = False
- db_table = 'setting'
- class UserSettings(models.Model):
- value = models.CharField(max_length=1000)
- id_user = models.ForeignKey(User, db_column='id_user')
- id_setting = models.ForeignKey(Setting, db_column='id_setting')
- class Meta:
- managed = False
- db_table = 'user_settings'
- unique_together = (('id_user', 'id_setting'),)
- class CustomUserManager(BaseUserManager):
- def create_user(self, alias, password=None):
- pass
- def create_superuser(self, alias, password=None):
- pass
- class Usergroup(models.Model):
- contactgroup_name = models.CharField(max_length=100)
- alias = models.CharField(max_length=100)
- from_ldap = models.IntegerField(default=0)
- def get_all_group_permissions(self):
- roles = self.get_roles()
- permissions = list()
- for r in roles:
- for p in r.get_all_permissions():
- if not p in permissions:
- permissions.append(p)
- parents = list()
- liens_avec_parents = UsergroupUsergroup.objects.filter(id_usergroupmember=self.id)
- for lp in liens_avec_parents:
- parents.append(Usergroup.objects.get(id=lp.id_usergroup.id))
- for p in parents:
- for perm in p.get_all_group_permissions():
- if not perm in permissions:
- permissions.append(perm)
- return permissions
- def get_roles(self):
- liens_role = RoleUserGroups.objects.filter(usergroup_id=self)
- roles = list()
- for lr in liens_role:
- roles.append(Role.objects.get(id=lr.role_id.id))
- return roles
- def add_role_to_group(self, role):
- RoleUserGroups.objects.create(usergroup_id=self, role_id=role)
- def del_role_to_group(self, role):
- RoleUserGroups.objects.get(usergroup_id=self.id, role_id=role.id).delete()
- def update_roles(self, role_list):
- try:
- for rin in self.get_roles():
- self.del_role_to_group(rin)
- for rl in role_list:
- self.add_role_to_group(rl)
- return True
- except:
- return False
- def has_perm (self, perm):
- return perm in self.get_all_group_permissions()
- class Meta:
- managed = False
- db_table = 'usergroup'
- class UsergroupMembers(models.Model):
- id_usergroup = models.ForeignKey(Usergroup, db_column='id_usergroup')
- id_user = models.ForeignKey(User, db_column='id_user')
- class Meta:
- managed = False
- db_table = 'usergroup_members'
- unique_together = (('id_usergroup', 'id_user'),)
- class Role(models.Model):
- role_name = models.CharField(max_length=100, unique=True)
- REQUIRED_FIELDS=['role_name']
- def has_perm(self, perm):
- return perm in self.get_all_permissions()
- def get_all_permissions(self):
- roleperm = RolePermissions.objects.filter(role_id=self.id)
- permissions=[]
- for rp in roleperm:
- permissions.append(Permission.objects.get(id=rp.permission_id.id))
- return permissions
- def add_permission_to_role(self, perm):
- RolePermissions.objects.create(role_id=self, permission_id=perm)
- def del_permission_to_role(self, perm):
- RolePermissions.objects.get(role_id=self, permission_id=perm).delete()
- def get_all_groups(self):
- liens = RoleUserGroups.objects.filter(role_id=self)
- groups = []
- for l in liens:
- groups.append(Usergroup.objects.get(id=l.usergroup_id))
- return groups
- def add_group_to_role(self, group):
- RoleUserGroups.objects.create(role_id=self, usergroup_id=group)
- def del_group_to_perm(self, group):
- RoleUserGroups.objects.get(role_id=self, usergroup_id=group).delete()
- class Meta:
- managed=False
- db_table='role'
- class RolePermissions(models.Model):
- role_id = models.ForeignKey(Role, db_column='role_id')
- permission_id = models.ForeignKey(Permission, db_column='permission_id')
- class Meta:
- managed=False
- db_table='role_permission'
- class RoleUserGroups(models.Model):
- role_id = models.ForeignKey(Role, db_column='role_id')
- usergroup_id = models.ForeignKey(Usergroup, db_column='usergroup_id')
- class Meta:
- managed=False
- db_table='role_usergroup'
- class UsergroupUsergroup(models.Model):
- id_usergroup = models.ForeignKey(Usergroup, db_column='id_usergroup', related_name='usergroup')
- id_usergroupmember = models.ForeignKey(Usergroup, db_column='id_usergroupmember', related_name='usergroupmember')
- class Meta:
- managed = False
- db_table = 'usergroup_usergroup'
- unique_together = (('id_usergroup', 'id_usergroupmember'),)
- class VersionComp(models.Model):
- current_version = models.CharField(max_length=10)
- following_version = models.CharField(max_length=10)
- compatibility = models.CharField(max_length=1, default=1)
- require_version = models.CharField(max_length=10, blank=True, null=True)
- class Meta:
- managed = False
- db_table = 'version_comp'
- unique_together = (('current_version', 'following_version'),)
- class LicensingRealm(models.Model):
- name = models.CharField(max_length=100)
- alias = models.CharField(max_length=100)
- company_name = models.CharField(max_length=500, blank=True, null=True)
- email = models.CharField(max_length=100)
- address = models.CharField(max_length=300, blank=True, null=True)
- city = models.CharField(max_length=100, blank=True, null=True)
- postalcode = models.CharField(max_length=50, blank=True, null=True)
- phone = models.CharField(max_length=40, blank=True, null=True)
- url = models.CharField(max_length=200, blank=True, null=True)
- is_default = models.CharField(max_length=1)
- class Meta:
- managed = False
- db_table = 'licensing_realm'
- class LicensingContract(models.Model):
- licensenumber = models.CharField(unique=True, max_length=20)
- type = models.CharField(max_length=8)
- version = models.CharField(max_length=10, blank=True, null=True)
- helpdesk = models.IntegerField()
- license = models.IntegerField()
- buyingdate = models.DateField()
- startdate = models.DateField()
- enddate = models.DateField()
- initialduration = models.CharField(max_length=100)
- alertduration = models.CharField(max_length=100)
- alertdate = models.DateField()
- password = models.CharField(max_length=100)
- is_active = models.IntegerField(default=0)
- is_expired = models.IntegerField(default=0)
- id_realm = models.ForeignKey(LicensingRealm, db_column='id_realm')
- class Meta:
- managed = False
- db_table = 'licensing_contract'
- class LicensingHistory(models.Model):
- date = models.DateField()
- event = models.CharField(max_length=100)
- description = models.TextField()
- id_contract = models.ForeignKey(LicensingContract, db_column='id_contract')
- class Meta:
- managed = False
- db_table = 'licensing_history'
- class LicensingRenewal(models.Model):
- date = models.DateField()
- startdate = models.DateField(blank=True, null=True)
- initialduration = models.CharField(max_length=100, blank=True, null=True)
- enddate = models.DateField(blank=True, null=True)
- alertduration = models.CharField(max_length=100, blank=True, null=True)
- alertdate = models.DateField(blank=True, null=True)
- id_license = models.ForeignKey(LicensingContract, db_column='id_license')
- class Meta:
- managed = False
- db_table = 'licensing_renewal'
- ########### CUSTOM GLOBAL PERMISSIONS ##########
- class GlobalPermissionManager(models.Manager):
- def get_query_set(self):
- return super(GlobalPermissionManager, self).\
- get_query_set().filter(content_type__name='global_permission')
- class GlobalPermission(Permission):
- """A global permission, not attached to a model"""
- objects = GlobalPermissionManager()
- class Meta:
- proxy = True
- verbose_name = "global_permission"
- def save(self, *args, **kwargs):
- ct, created = ContentType.objects.get_or_create(
- model=self._meta.verbose_name, app_label=self._meta.app_label,
- )
- self.content_type = ct
- super(GlobalPermission, self).save(*args)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement