From 19d984f85e6b3b70f3a1aef03772ce3b7582063a Mon Sep 17 00:00:00 2001 From: Gabriel Detraz Date: Wed, 14 Dec 2016 03:08:57 +0100 Subject: [PATCH] A partir de django 1.9 les filter__in ne sont plus implicites --- cotisations/models.py | 6 +++--- cotisations/views.py | 7 +++++-- machines/forms.py | 8 ++++---- machines/views.py | 10 +++++----- users/models.py | 10 +++++----- 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/cotisations/models.py b/cotisations/models.py index 59421649..ca342c16 100644 --- a/cotisations/models.py +++ b/cotisations/models.py @@ -17,14 +17,14 @@ class Facture(models.Model): control = models.BooleanField(default=False) def prix(self): - prix = Vente.objects.all().filter(facture=self).aggregate(models.Sum('prix'))['prix__sum'] + prix = Vente.objects.filter(facture=self).aggregate(models.Sum('prix'))['prix__sum'] return prix def prix_total(self): - return Vente.objects.all().filter(facture=self).aggregate(total=models.Sum(models.F('prix')*models.F('number'), output_field=models.FloatField()))['total'] + return Vente.objects.filter(facture=self).aggregate(total=models.Sum(models.F('prix')*models.F('number'), output_field=models.FloatField()))['total'] def name(self): - name = ' - '.join(vente.name for vente in Vente.objects.all().filter(facture=self)) + name = ' - '.join(vente.name for vente in Vente.objects.filter(facture=self)) return name def __str__(self): diff --git a/cotisations/views.py b/cotisations/views.py index fcff76b7..79ccabca 100644 --- a/cotisations/views.py +++ b/cotisations/views.py @@ -34,7 +34,7 @@ def create_cotis(vente, user, duration, date_start=False): """ Update et crée l'objet cotisation associé à une facture, prend en argument l'user, la facture pour la quantitéi, et l'article pour la durée""" cotisation=Cotisation(vente=vente) if date_start: - end_adhesion = Cotisation.objects.filter(vente=Vente.objects.filter(facture=Facture.objects.filter(user=user).exclude(valid=False))).filter(date_start__lt=date_start).aggregate(Max('date_end'))['date_end__max'] + end_adhesion = Cotisation.objects.filter(vente__in=Vente.objects.filter(facture__in=Facture.objects.filter(user=user).exclude(valid=False))).filter(date_start__lt=date_start).aggregate(Max('date_end'))['date_end__max'] else: end_adhesion = user.end_adhesion() date_start = date_start or timezone.now() @@ -330,7 +330,10 @@ def control(request): page_query = Facture.objects.order_by('date').reverse().filter(id__in=[facture.id for facture in facture_list]) controlform = controlform_set(request.POST or None, queryset=page_query) if controlform.is_valid(): - controlform.save() + with transaction.atomic(), reversion.create_revision(): + controlform.save() + reversion.set_user(request.user) + reversion.set_comment("Controle trésorier") return redirect("/cotisations/control/") return render(request, 'cotisations/control.html', {'facture_list': facture_list, 'controlform': controlform}) diff --git a/machines/forms.py b/machines/forms.py index 14ebd884..140eacfd 100644 --- a/machines/forms.py +++ b/machines/forms.py @@ -41,8 +41,8 @@ class AddInterfaceForm(EditInterfaceForm): super(AddInterfaceForm, self).__init__(*args, **kwargs) self.fields['ipv4'].empty_label = "Assignation automatique de l'ipv4" if not infra: - self.fields['type'].queryset = MachineType.objects.filter(ip_type=IpType.objects.filter(need_infra=False)) - self.fields['ipv4'].queryset = IpList.objects.filter(interface__isnull=True).filter(ip_type=IpType.objects.filter(need_infra=False)).filter(need_infra=False) + self.fields['type'].queryset = MachineType.objects.filter(ip_type__in=IpType.objects.filter(need_infra=False)) + self.fields['ipv4'].queryset = IpList.objects.filter(interface__isnull=True).filter(ip_type__in=IpType.objects.filter(need_infra=False)).filter(need_infra=False) else: self.fields['ipv4'].queryset = IpList.objects.filter(interface__isnull=True) @@ -59,8 +59,8 @@ class BaseEditInterfaceForm(EditInterfaceForm): super(BaseEditInterfaceForm, self).__init__(*args, **kwargs) self.fields['ipv4'].empty_label = "Assignation automatique de l'ipv4" if not infra: - self.fields['type'].queryset = MachineType.objects.filter(ip_type=IpType.objects.filter(need_infra=False)) - self.fields['ipv4'].queryset = IpList.objects.filter(interface__isnull=True).filter(ip_type=IpType.objects.filter(need_infra=False)).filter(need_infra=False) + self.fields['type'].queryset = MachineType.objects.filter(ip_type__in=IpType.objects.filter(need_infra=False)) + self.fields['ipv4'].queryset = IpList.objects.filter(interface__isnull=True).filter(ip_type__in=IpType.objects.filter(need_infra=False)).filter(need_infra=False) else: self.fields['ipv4'].queryset = IpList.objects.filter(interface__isnull=True) diff --git a/machines/views.py b/machines/views.py index 71d9ff42..724168a7 100644 --- a/machines/views.py +++ b/machines/views.py @@ -42,14 +42,14 @@ def full_domain_validator(request, interface): return True def unassign_ips(user): - machines = Interface.objects.filter(machine=Machine.objects.filter(user=user)) + machines = user.user_interfaces() for machine in machines: unassign_ipv4(machine) return def assign_ips(user): """ Assign une ipv4 aux machines d'un user """ - machines = Interface.objects.filter(machine=Machine.objects.filter(user=user)) + machines = user.user_interfaces() for machine in machines: if not machine.ipv4: interface = assign_ipv4(machine) @@ -475,7 +475,7 @@ def add_alias(request, interfaceid): if interface.machine.user != request.user: messages.error(request, "Vous ne pouvez pas ajouter un alias à une machine d'un autre user que vous sans droit") return redirect("/users/profil/" + str(request.user.id)) - if Alias.objects.filter(interface_parent=interface.machine.user.user_interfaces()).count() >= MAX_ALIAS: + if Alias.objects.filter(interface_parent__in=interface.machine.user.user_interfaces()).count() >= MAX_ALIAS: messages.error(request, "Vous avez atteint le maximum d'alias autorisées que vous pouvez créer vous même (%s) " % MAX_ALIAS) return redirect("/users/profil/" + str(request.user.id)) alias = AliasForm(request.POST or None, infra=request.user.has_perms(('infra',))) @@ -683,7 +683,7 @@ def interface_list(request): @login_required @permission_required('serveur') def alias(request): - alias = Alias.objects.filter(interface_parent=Interface.objects.exclude(ipv4=None)) + alias = Alias.objects.filter(interface_parent__in=Interface.objects.exclude(ipv4=None)) seria = AliasSerializer(alias, many=True) return JSONResponse(seria.data) @@ -707,7 +707,7 @@ def mx(request): @login_required @permission_required('serveur') def ns(request): - ns = Ns.objects.filter(interface=Interface.objects.exclude(ipv4=None)) + ns = Ns.objects.filter(interface__in=Interface.objects.exclude(ipv4=None)) seria = NsSerializer(ns, many=True) return JSONResponse(seria.data) diff --git a/users/models.py b/users/models.py index e4522194..1cd19787 100644 --- a/users/models.py +++ b/users/models.py @@ -180,7 +180,7 @@ class User(AbstractBaseUser): return True def end_adhesion(self): - date_max = Cotisation.objects.all().filter(vente=Vente.objects.all().filter(facture=Facture.objects.all().filter(user=self).exclude(valid=False))).aggregate(models.Max('date_end'))['date_end__max'] + date_max = Cotisation.objects.filter(vente__in=Vente.objects.filter(facture__in=Facture.objects.filter(user=self).exclude(valid=False))).aggregate(models.Max('date_end'))['date_end__max'] return date_max def is_adherent(self): @@ -194,12 +194,12 @@ class User(AbstractBaseUser): def end_ban(self): """ Renvoie la date de fin de ban d'un user, False sinon """ - date_max = Ban.objects.all().filter(user=self).aggregate(models.Max('date_end'))['date_end__max'] + date_max = Ban.objects.filter(user=self).aggregate(models.Max('date_end'))['date_end__max'] return date_max def end_whitelist(self): """ Renvoie la date de fin de ban d'un user, False sinon """ - date_max = Whitelist.objects.all().filter(user=self).aggregate(models.Max('date_end'))['date_end__max'] + date_max = Whitelist.objects.filter(user=self).aggregate(models.Max('date_end'))['date_end__max'] return date_max def is_ban(self): @@ -228,7 +228,7 @@ class User(AbstractBaseUser): and not self.is_ban() and (self.is_adherent() or self.is_whitelisted()) def user_interfaces(self): - return Interface.objects.filter(machine=Machine.objects.filter(user=self)) + return Interface.objects.filter(machine__in=Machine.objects.filter(user=self)) def has_module_perms(self, app_label): # Simplest version again @@ -267,7 +267,7 @@ class User(AbstractBaseUser): if access_refresh: user_ldap.dialupAccess = str(self.has_access()) if mac_refresh: - user_ldap.macs = [inter.mac_bare() for inter in Interface.objects.filter(machine=Machine.objects.filter(user=self))] + user_ldap.macs = [inter.mac_bare() for inter in Interface.objects.filter(machine__in=Machine.objects.filter(user=self))] user_ldap.save() def ldap_del(self):