class OrganizationGroup(models.Model): name = models.CharField(_t('name'), max_length=80, unique=False) organization = models.ForeignKey(Organization) permissions = models.ManyToManyField( 'HuePermission', verbose_name=_t('permissions'), blank=True, ) # Could also have a set of Roles at some point. objects = OrganizationGroupManager() def __init__(self, *args, **kwargs): if not kwargs.get('organization'): kwargs['organization'] = get_user_request_organization() super(OrganizationGroup, self).__init__(*args, **kwargs) class Meta: verbose_name = _t('organization group') verbose_name_plural = _t('organization groups') unique_together = ( 'name', 'organization', ) def __str__(self): return '%s @ %s' % (self.name, self.organization)
class OrganizationUser(AbstractUser): """User model in a multi tenant setup.""" username = None email = models.EmailField(_t('Email address'), unique=True) token = models.CharField(_t('Token'), max_length=128, default=None, null=True) customer_id = models.CharField(_t('Customer id'), max_length=128, default=None, null=True) organization = models.ForeignKey(Organization, on_delete=models.CASCADE) is_admin = models.BooleanField(default=False) # settings are in UserProfile groups = models.ManyToManyField( OrganizationGroup, verbose_name=_t('groups'), blank=True, help_text=_t( 'The groups this user belongs to. A user will get all permissions ' 'granted to each of their groups.' ), related_name="user_set", related_query_name="user", ) USERNAME_FIELD = 'email' REQUIRED_FIELDS = [] objects = UserManager() @property def username(self): return self.email @username.setter def username(self, value): pass
class FriendsGroup(models.Model): name = models.CharField(max_length=255, blank=True, null=True) host = models.ForeignKey(User, related_name='hosts', on_delete=models.CASCADE) users = models.ManyToManyField(User, null=True, blank=True) def __str__(self): return self.name
class OrganizationGroup(models.Model): name = models.CharField(_t('name'), max_length=80, unique=False) organization = models.ForeignKey(Organization) permissions = models.ManyToManyField( 'HuePermission', verbose_name=_t('permissions'), blank=True, ) objects = OrganizationGroupManager() class Meta: verbose_name = _t('organization group') verbose_name_plural = _t('organization groups') unique_together = ('name', 'organization',) def __str__(self): return '%s %s' % (self.organization, self.name)