From e3e77ea1666d2e7b240c33b0f1140dfdbcd28ead Mon Sep 17 00:00:00 2001 From: Daniel STAN Date: Mon, 6 Nov 2017 00:21:11 +0100 Subject: [PATCH] all_has_access filtre par service et filter_active_interfaces aussi --- re2o/utils.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/re2o/utils.py b/re2o/utils.py index a6e5c851..dc8ea907 100644 --- a/re2o/utils.py +++ b/re2o/utils.py @@ -85,12 +85,18 @@ def all_whitelisted(search_time=DT_NOW): ).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 - : 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( 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(facture__in=Facture.objects.filter( vente__in=Vente.objects.filter( @@ -106,11 +112,12 @@ def all_has_access(search_time=DT_NOW): ).distinct() -def filter_active_interfaces(interface_set): - """Filtre les machines autorisées à sortir sur internet dans une requête""" +def filter_active_interfaces(interface_set, service=None): + """Filtre les machines autorisées à sortir sur internet (ou juste pour + un service donné, si fourni) dans une requête""" return interface_set.filter( machine__in=Machine.objects.filter( - user__in=all_has_access() + user__in=all_has_access(service=service) ).filter(active=True) ).select_related('domain').select_related('machine')\ .select_related('type').select_related('ipv4')\