h
Size: a a a
h
h
e
Н
Н
Н
)
@user_permission
def has_service(user):
return models.Q(id__in=user.services_ids)
@user_permission
def object_has_service(user):
return models.Q(service__in=user.services_ids)
class Serviceable(PermissionsForObjectMixin):
service = models.ForeignKey('assets.Service', blank=True, null=True)
class Meta:
abstract = True
class Permissions:
has_access = object_has_service
class User():
service = models.ManyToManyField('assets.Service', related_name='services', blank=True)
@property
def services_ids(self):
"""
Get service ids without additional SQL joins.
"""
return self.service.through.objects.filter(
ralphuser=self
).values_list(
'service_id', flat=True
Н
class DataCenterAsset(Serviceable):
class Meta:
verbose_name = _('data center asset')
verbose_name_plural = _('data center assets')
permissions = [("has_right", "Can view service"),]
class Permissions:
has_access = has_right
Y
Н
Н
Н
Н
AO
tn
VT
PZ
tn
VT