Skip to content

Instantly share code, notes, and snippets.

@Dimitrionian
Last active February 16, 2018 20:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Dimitrionian/ec6836b540f170447834228c69f5b2fc to your computer and use it in GitHub Desktop.
Save Dimitrionian/ec6836b540f170447834228c69f5b2fc to your computer and use it in GitHub Desktop.
Filter Alerts by roles
from django.db import models
from django.db.models import Q
from wirelesstag.models import TagManager
from guardian.shortcuts import get_objects_for_user
class AlertQuerySet(models.QuerySet):
def for_user(self, user):
if user.groups.filter(name='Company administrators').exists():
alerts = self.filter(
sensor_log__tag__manager__company__administrator=user,
energy_log__tag__manager__company__administrator=user
)
else:
alerts = self.filter(
Q(sensor_log__tag__manager__in=get_objects_for_user(
user,
(
'view_tagmanager',
'change_tagmanager',
'delete_tagmanager'
),
TagManager,
any_perm=True
)
) | Q(
energy_log__tag__manager__in=get_objects_for_user(
user,
(
'view_tagmanager',
'change_tagmanager',
'delete_tagmanager'
),
TagManager,
any_perm=True
)
))
return alerts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment