mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-12-23 07:23:46 +00:00
all_has_access filtre par service
et filter_active_interfaces aussi
This commit is contained in:
parent
7b1e994634
commit
e3e77ea166
1 changed files with 13 additions and 6 deletions
|
@ -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')\
|
||||||
|
|
Loading…
Reference in a new issue