8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-10-05 18:42:12 +00:00

all_has_access filtre par service

et filter_active_interfaces aussi
This commit is contained in:
Daniel STAN 2017-11-06 00:21:11 +01:00
parent 7b1e994634
commit e3e77ea166

View file

@ -85,12 +85,18 @@ def all_whitelisted(search_time=DT_NOW):
).distinct() ).distinct()
def all_has_access(search_time=DT_NOW): def all_has_access(search_time=DT_NOW, service=None):
""" Renvoie tous les users beneficiant d'une connexion """ Renvoie tous les users beneficiant d'une connexion
: user adherent ou whiteliste et non banni """ : user adherent ou whiteliste et non banni.
Si service est fourni, ne considère (exclu) que les gens bannis pour
ce service.
"""
ban_set = Ban.objects.filter(date_end__gt=search_time)
if service:
ban_set = ban_set.filter(ban_type__inhibited_services=service)
return User.objects.filter( return User.objects.filter(
Q(state=User.STATE_ACTIVE) & Q(state=User.STATE_ACTIVE) &
~Q(ban__in=Ban.objects.filter(date_end__gt=search_time)) & ~Q(ban__in=ban_set) &
(Q(whitelist__in=Whitelist.objects.filter(date_end__gt=search_time)) | (Q(whitelist__in=Whitelist.objects.filter(date_end__gt=search_time)) |
Q(facture__in=Facture.objects.filter( Q(facture__in=Facture.objects.filter(
vente__in=Vente.objects.filter( vente__in=Vente.objects.filter(
@ -106,11 +112,12 @@ def all_has_access(search_time=DT_NOW):
).distinct() ).distinct()
def filter_active_interfaces(interface_set): def filter_active_interfaces(interface_set, service=None):
"""Filtre les machines autorisées à sortir sur internet dans une requête""" """Filtre les machines autorisées à sortir sur internet (ou juste pour
un service donné, si fourni) dans une requête"""
return interface_set.filter( return interface_set.filter(
machine__in=Machine.objects.filter( machine__in=Machine.objects.filter(
user__in=all_has_access() user__in=all_has_access(service=service)
).filter(active=True) ).filter(active=True)
).select_related('domain').select_related('machine')\ ).select_related('domain').select_related('machine')\
.select_related('type').select_related('ipv4')\ .select_related('type').select_related('ipv4')\