Advertisement
Guest User

Untitled

a guest
May 9th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.31 KB | None | 0 0
  1. from django.contrib.contenttypes.models import ContentType
  2. from django.db import models
  3. from django.contrib.auth.models import PermissionsMixin, AbstractBaseUser, BaseUserManager, Permission, Group
  4.  
  5. class Realm(models.Model):
  6.     name = models.CharField(max_length=99)
  7.     alias = models.CharField(max_length=100)
  8.     company_name = models.CharField(max_length=500, blank=True, null=True)
  9.     email = models.CharField(max_length=100)
  10.     address = models.CharField(max_length=300, blank=True, null=True)
  11.     city = models.CharField(max_length=100, blank=True, null=True)
  12.     postalcode = models.CharField(max_length=50, blank=True, null=True)
  13.     phone = models.CharField(max_length=40, blank=True, null=True)
  14.     url = models.CharField(max_length=200, blank=True, null=True)
  15.     is_default = models.CharField(max_length=1, default='0')
  16.  
  17.     class Meta:
  18.         managed = False
  19.         db_table = 'realm'
  20.  
  21. class Realmgroup(models.Model):
  22.     realmgroup_name = models.CharField(max_length=100)
  23.  
  24.     class Meta:
  25.         managed = False
  26.         db_table = 'realmgroup'
  27.  
  28. class RealmgroupMembers(models.Model):
  29.     id_realmgroup = models.ForeignKey(Realmgroup, db_column='id_realmgroup')
  30.     id_realm = models.ForeignKey(Realm, db_column='id_realm')
  31.  
  32.     class Meta:
  33.         managed = False
  34.         db_table = 'realmgroup_members'
  35.  
  36. class Contact(models.Model):
  37.     name = models.CharField(max_length=100)
  38.     email = models.CharField(max_length=60)
  39.     id_realm = models.ForeignKey('Realm', db_column='id_realm')
  40.  
  41.     class Meta:
  42.         managed = False
  43.         db_table = 'contact'
  44.  
  45. class Contract(models.Model):
  46.     licensenumber = models.CharField(unique=True, max_length=20)
  47.     type = models.CharField(max_length=8)
  48.     version = models.CharField(max_length=10, blank=True, null=True)
  49.     helpdesk = models.IntegerField()
  50.     license = models.IntegerField()
  51.     buyingdate = models.DateField()
  52.     startdate = models.DateField()
  53.     enddate = models.DateField()
  54.     initialduration = models.CharField(max_length=100)
  55.     alertduration = models.CharField(max_length=100)
  56.     alertdate = models.DateField()
  57.     password = models.CharField(max_length=100)
  58.     is_active = models.IntegerField()
  59.     is_expired = models.IntegerField()
  60.     id_realm = models.IntegerField()
  61.  
  62.     class Meta:
  63.         managed = False
  64.         db_table = 'contract'
  65.  
  66.  
  67. class User(AbstractBaseUser, PermissionsMixin):
  68.     contact_name = models.CharField(max_length=100, unique=True)
  69.     alias = models.CharField(max_length=100, blank=True, unique=True)
  70.     email = models.CharField(max_length=100)
  71.     is_admin = models.BooleanField(default=False)
  72.     is_active = models.BooleanField(default=True)
  73.     pager = models.CharField(max_length=500)
  74.     from_ldap = models.IntegerField()
  75.     host_notifications_enabled = models.CharField(max_length=1, blank=True, null=True, default=1)
  76.     service_notifications_enabled = models.CharField(max_length=1, blank=True, null=True, default=1)
  77.     host_notification_options = models.CharField(max_length=11, blank=True, null=True)
  78.     service_notification_options = models.CharField(max_length=13, blank=True, null=True)
  79.     can_submit_commands = models.CharField(max_length=1, blank=True, null=True, default=1)
  80.     retain_status_information = models.CharField(max_length=1, blank=True, null=True)
  81.     retain_nonstatus_information = models.CharField(max_length=1, blank=True, null=True)
  82.     min_business_impact = models.CharField(max_length=1, blank=True, null=True)
  83.     register = models.CharField(max_length=1, default=1)
  84.     id_realm = models.ForeignKey(Realm, db_column='id_realm')
  85.  
  86.     USERNAME_FIELD = 'alias'
  87.     REQUIRED_FIELDS = ['contact_name']
  88.  
  89.     class Meta(AbstractBaseUser.Meta):
  90.         swappable = 'core.User'
  91.         managed = False
  92.         db_table = 'user'
  93.  
  94. class Setting(models.Model):
  95.     setting_key = models.CharField(max_length=100)
  96.     default_value = models.CharField(max_length=1000)
  97.  
  98.     class Meta:
  99.         managed = False
  100.         db_table = 'setting'
  101.  
  102. class UserSettings(models.Model):
  103.     value = models.CharField(max_length=1000)
  104.     id_user = models.ForeignKey(User, db_column='id_user')
  105.     id_setting = models.ForeignKey(Setting, db_column='id_setting')
  106.  
  107.     class Meta:
  108.         managed = False
  109.         db_table = 'user_settings'
  110.         unique_together = (('id_user', 'id_setting'),)
  111.  
  112. class CustomUserManager(BaseUserManager):
  113.     def create_user(self, alias, password=None):
  114.         pass
  115.  
  116.     def create_superuser(self, alias, password=None):
  117.         pass
  118.  
  119. class Usergroup(models.Model):
  120.     contactgroup_name = models.CharField(max_length=100)
  121.     alias = models.CharField(max_length=100)
  122.     from_ldap = models.IntegerField(default=0)
  123.  
  124.     def get_all_group_permissions(self):
  125.         roles = self.get_roles()
  126.         permissions = list()
  127.         for r in roles:
  128.             for p in r.get_all_permissions():
  129.                 if not p in permissions:
  130.                     permissions.append(p)
  131.         parents = list()
  132.         liens_avec_parents = UsergroupUsergroup.objects.filter(id_usergroupmember=self.id)
  133.         for lp in liens_avec_parents:
  134.             parents.append(Usergroup.objects.get(id=lp.id_usergroup.id))
  135.         for p in parents:
  136.             for perm in p.get_all_group_permissions():
  137.                 if not perm in permissions:
  138.                     permissions.append(perm)
  139.         return permissions
  140.  
  141.     def get_roles(self):
  142.         liens_role = RoleUserGroups.objects.filter(usergroup_id=self)
  143.         roles = list()
  144.         for lr in liens_role:
  145.             roles.append(Role.objects.get(id=lr.role_id.id))
  146.         return roles
  147.  
  148.     def add_role_to_group(self, role):
  149.         RoleUserGroups.objects.create(usergroup_id=self, role_id=role)
  150.  
  151.     def del_role_to_group(self, role):
  152.         RoleUserGroups.objects.get(usergroup_id=self.id, role_id=role.id).delete()
  153.  
  154.     def update_roles(self, role_list):
  155.         try:
  156.             for rin in self.get_roles():
  157.                 self.del_role_to_group(rin)
  158.             for rl in role_list:
  159.                 self.add_role_to_group(rl)
  160.             return True
  161.         except:
  162.             return False
  163.  
  164.     def has_perm (self, perm):
  165.         return perm in self.get_all_group_permissions()
  166.  
  167.     class Meta:
  168.         managed = False
  169.         db_table = 'usergroup'
  170.  
  171. class UsergroupMembers(models.Model):
  172.     id_usergroup = models.ForeignKey(Usergroup, db_column='id_usergroup')
  173.     id_user = models.ForeignKey(User, db_column='id_user')
  174.  
  175.     class Meta:
  176.         managed = False
  177.         db_table = 'usergroup_members'
  178.         unique_together = (('id_usergroup', 'id_user'),)
  179.  
  180. class Role(models.Model):
  181.     role_name = models.CharField(max_length=100, unique=True)
  182.     REQUIRED_FIELDS=['role_name']
  183.  
  184.     def has_perm(self, perm):
  185.         return perm in self.get_all_permissions()
  186.  
  187.     def get_all_permissions(self):
  188.         roleperm = RolePermissions.objects.filter(role_id=self.id)
  189.         permissions=[]
  190.         for rp in roleperm:
  191.             permissions.append(Permission.objects.get(id=rp.permission_id.id))
  192.         return permissions
  193.  
  194.     def add_permission_to_role(self, perm):
  195.         RolePermissions.objects.create(role_id=self, permission_id=perm)
  196.  
  197.     def del_permission_to_role(self, perm):
  198.         RolePermissions.objects.get(role_id=self, permission_id=perm).delete()
  199.  
  200.     def get_all_groups(self):
  201.         liens = RoleUserGroups.objects.filter(role_id=self)
  202.         groups = []
  203.         for l in liens:
  204.             groups.append(Usergroup.objects.get(id=l.usergroup_id))
  205.         return groups
  206.  
  207.     def add_group_to_role(self, group):
  208.         RoleUserGroups.objects.create(role_id=self, usergroup_id=group)
  209.  
  210.     def del_group_to_perm(self, group):
  211.         RoleUserGroups.objects.get(role_id=self, usergroup_id=group).delete()
  212.  
  213.     class Meta:
  214.         managed=False
  215.         db_table='role'
  216.  
  217. class RolePermissions(models.Model):
  218.     role_id = models.ForeignKey(Role, db_column='role_id')
  219.     permission_id = models.ForeignKey(Permission, db_column='permission_id')
  220.     class Meta:
  221.         managed=False
  222.         db_table='role_permission'
  223.  
  224. class RoleUserGroups(models.Model):
  225.     role_id = models.ForeignKey(Role, db_column='role_id')
  226.     usergroup_id = models.ForeignKey(Usergroup, db_column='usergroup_id')
  227.     class Meta:
  228.         managed=False
  229.         db_table='role_usergroup'
  230.  
  231.  
  232. class UsergroupUsergroup(models.Model):
  233.     id_usergroup = models.ForeignKey(Usergroup, db_column='id_usergroup', related_name='usergroup')
  234.     id_usergroupmember = models.ForeignKey(Usergroup, db_column='id_usergroupmember', related_name='usergroupmember')
  235.  
  236.     class Meta:
  237.         managed = False
  238.         db_table = 'usergroup_usergroup'
  239.         unique_together = (('id_usergroup', 'id_usergroupmember'),)
  240.  
  241.  
  242. class VersionComp(models.Model):
  243.     current_version = models.CharField(max_length=10)
  244.     following_version = models.CharField(max_length=10)
  245.     compatibility = models.CharField(max_length=1, default=1)
  246.     require_version = models.CharField(max_length=10, blank=True, null=True)
  247.  
  248.     class Meta:
  249.         managed = False
  250.         db_table = 'version_comp'
  251.         unique_together = (('current_version', 'following_version'),)
  252.  
  253. class LicensingRealm(models.Model):
  254.     name = models.CharField(max_length=100)
  255.     alias = models.CharField(max_length=100)
  256.     company_name = models.CharField(max_length=500, blank=True, null=True)
  257.     email = models.CharField(max_length=100)
  258.     address = models.CharField(max_length=300, blank=True, null=True)
  259.     city = models.CharField(max_length=100, blank=True, null=True)
  260.     postalcode = models.CharField(max_length=50, blank=True, null=True)
  261.     phone = models.CharField(max_length=40, blank=True, null=True)
  262.     url = models.CharField(max_length=200, blank=True, null=True)
  263.     is_default = models.CharField(max_length=1)
  264.  
  265.     class Meta:
  266.         managed = False
  267.         db_table = 'licensing_realm'
  268.  
  269. class LicensingContract(models.Model):
  270.     licensenumber = models.CharField(unique=True, max_length=20)
  271.     type = models.CharField(max_length=8)
  272.     version = models.CharField(max_length=10, blank=True, null=True)
  273.     helpdesk = models.IntegerField()
  274.     license = models.IntegerField()
  275.     buyingdate = models.DateField()
  276.     startdate = models.DateField()
  277.     enddate = models.DateField()
  278.     initialduration = models.CharField(max_length=100)
  279.     alertduration = models.CharField(max_length=100)
  280.     alertdate = models.DateField()
  281.     password = models.CharField(max_length=100)
  282.     is_active = models.IntegerField(default=0)
  283.     is_expired = models.IntegerField(default=0)
  284.     id_realm = models.ForeignKey(LicensingRealm, db_column='id_realm')
  285.  
  286.     class Meta:
  287.         managed = False
  288.         db_table = 'licensing_contract'
  289.  
  290.  
  291. class LicensingHistory(models.Model):
  292.     date = models.DateField()
  293.     event = models.CharField(max_length=100)
  294.     description = models.TextField()
  295.     id_contract = models.ForeignKey(LicensingContract, db_column='id_contract')
  296.  
  297.     class Meta:
  298.         managed = False
  299.         db_table = 'licensing_history'
  300.  
  301. class LicensingRenewal(models.Model):
  302.     date = models.DateField()
  303.     startdate = models.DateField(blank=True, null=True)
  304.     initialduration = models.CharField(max_length=100, blank=True, null=True)
  305.     enddate = models.DateField(blank=True, null=True)
  306.     alertduration = models.CharField(max_length=100, blank=True, null=True)
  307.     alertdate = models.DateField(blank=True, null=True)
  308.     id_license = models.ForeignKey(LicensingContract, db_column='id_license')
  309.  
  310.     class Meta:
  311.         managed = False
  312.         db_table = 'licensing_renewal'
  313.  
  314.  
  315. ########### CUSTOM GLOBAL PERMISSIONS ##########
  316.  
  317. class GlobalPermissionManager(models.Manager):
  318.     def get_query_set(self):
  319.         return super(GlobalPermissionManager, self).\
  320.             get_query_set().filter(content_type__name='global_permission')
  321.  
  322. class GlobalPermission(Permission):
  323.     """A global permission, not attached to a model"""
  324.  
  325.     objects = GlobalPermissionManager()
  326.  
  327.     class Meta:
  328.         proxy = True
  329.         verbose_name = "global_permission"
  330.  
  331.  
  332.     def save(self, *args, **kwargs):
  333.         ct, created = ContentType.objects.get_or_create(
  334.             model=self._meta.verbose_name, app_label=self._meta.app_label,
  335.         )
  336.         self.content_type = ct
  337.         super(GlobalPermission, self).save(*args)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement