Browse Source

Merge branch 'master' of https://gitlab.rezometz.org/rezo/re2o

test_david
chirac 9 years ago
parent
commit
e5eb84882d
  1. 11
      cotisations/views.py
  2. 9
      machines/forms.py
  3. 19
      machines/migrations/0034_iplist_need_infra.py
  4. 1
      machines/models.py
  5. 9
      machines/views.py
  6. 2
      users/views.py

11
cotisations/views.py

@ -32,11 +32,14 @@ def form(ctx, template, request):
def create_cotis(vente, user, duration, date_start=False): 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""" """ 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) 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']
else:
end_adhesion = user.end_adhesion()
date_start = date_start or timezone.now() date_start = date_start or timezone.now()
date_max = user.end_adhesion() or date_start end_adhesion = end_adhesion or date_start
if date_max < date_start: date_max = max(end_adhesion, date_start)
date_max = date_start cotisation.date_start = date_max
cotisation.date_start=date_max
cotisation.date_end = cotisation.date_start + relativedelta(months=duration) cotisation.date_end = cotisation.date_start + relativedelta(months=duration)
cotisation.save() cotisation.save()
return return

9
machines/forms.py

@ -1,6 +1,7 @@
from django.forms import ModelForm, Form, ValidationError from django.forms import ModelForm, Form, ValidationError
from django import forms from django import forms
from .models import Alias, Machine, Interface, IpList, MachineType, Extension, Mx, Ns, IpType from .models import Alias, Machine, Interface, IpList, MachineType, Extension, Mx, Ns, IpType
from django.db.models import Q
class EditMachineForm(ModelForm): class EditMachineForm(ModelForm):
class Meta: class Meta:
@ -41,7 +42,9 @@ class AddInterfaceForm(EditInterfaceForm):
self.fields['ipv4'].empty_label = "Assignation automatique de l'ipv4" self.fields['ipv4'].empty_label = "Assignation automatique de l'ipv4"
if not infra: if not infra:
self.fields['type'].queryset = MachineType.objects.filter(ip_type=IpType.objects.filter(need_infra=False)) self.fields['type'].queryset = MachineType.objects.filter(ip_type=IpType.objects.filter(need_infra=False))
self.fields['ipv4'].queryset = IpList.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)
else:
self.fields['ipv4'].queryset = IpList.objects.filter(interface__isnull=True)
class NewInterfaceForm(EditInterfaceForm): class NewInterfaceForm(EditInterfaceForm):
class Meta(EditInterfaceForm.Meta): class Meta(EditInterfaceForm.Meta):
@ -57,7 +60,9 @@ class BaseEditInterfaceForm(EditInterfaceForm):
self.fields['ipv4'].empty_label = "Assignation automatique de l'ipv4" self.fields['ipv4'].empty_label = "Assignation automatique de l'ipv4"
if not infra: if not infra:
self.fields['type'].queryset = MachineType.objects.filter(ip_type=IpType.objects.filter(need_infra=False)) self.fields['type'].queryset = MachineType.objects.filter(ip_type=IpType.objects.filter(need_infra=False))
self.fields['ipv4'].queryset = IpList.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)
else:
self.fields['ipv4'].queryset = IpList.objects.filter(interface__isnull=True)
class AliasForm(ModelForm): class AliasForm(ModelForm):
class Meta: class Meta:

19
machines/migrations/0034_iplist_need_infra.py

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('machines', '0033_extension_need_infra'),
]
operations = [
migrations.AddField(
model_name='iplist',
name='need_infra',
field=models.BooleanField(default=False),
),
]

1
machines/models.py

@ -124,6 +124,7 @@ class IpList(models.Model):
ipv4 = models.GenericIPAddressField(protocol='IPv4', unique=True) ipv4 = models.GenericIPAddressField(protocol='IPv4', unique=True)
ip_type = models.ForeignKey('IpType', on_delete=models.PROTECT) ip_type = models.ForeignKey('IpType', on_delete=models.PROTECT)
need_infra = models.BooleanField(default=False)
def __str__(self): def __str__(self):
return self.ipv4 return self.ipv4

9
machines/views.py

@ -60,7 +60,10 @@ def assign_ips(user):
def free_ip(type): def free_ip(type):
""" Renvoie la liste des ip disponibles """ """ Renvoie la liste des ip disponibles """
return IpList.objects.filter(interface__isnull=True).filter(ip_type=type) if not type.need_infra:
return IpList.objects.filter(interface__isnull=True).filter(ip_type=type).filter(need_infra=False)
else:
return IpList.objects.filter(interface__isnull=True).filter(ip_type=type)
def assign_ipv4(interface): def assign_ipv4(interface):
""" Assigne une ip à l'interface """ """ Assigne une ip à l'interface """
@ -142,6 +145,8 @@ def edit_interface(request, interfaceid):
new_machine.save() new_machine.save()
reversion.set_user(request.user) reversion.set_user(request.user)
reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in machine_form.changed_data)) reversion.set_comment("Champs modifié(s) : %s" % ', '.join(field for field in machine_form.changed_data))
if free_ip(new_interface.type.ip_type) and not new_interface.ipv4:
new_interface = assign_ipv4(new_interface)
with transaction.atomic(), reversion.create_revision(): with transaction.atomic(), reversion.create_revision():
new_interface.save() new_interface.save()
reversion.set_user(request.user) reversion.set_user(request.user)
@ -197,7 +202,7 @@ def new_interface(request, machineid):
reversion.set_user(request.user) reversion.set_user(request.user)
reversion.set_comment("Création") reversion.set_comment("Création")
messages.success(request, "L'interface a été ajoutée") messages.success(request, "L'interface a été ajoutée")
return redirect("/users/profil/" + str(request.user.id)) return redirect("/users/profil/" + str(machine.user.id))
return form({'interfaceform': interface_form}, 'machines/machine.html', request) return form({'interfaceform': interface_form}, 'machines/machine.html', request)
@login_required @login_required

2
users/views.py

@ -125,7 +125,7 @@ def edit_info(request, userid):
if not request.user.has_perms(('cableur',)): if not request.user.has_perms(('cableur',)):
user = BaseInfoForm(request.POST or None, instance=user) user = BaseInfoForm(request.POST or None, instance=user)
else: else:
user = EditInfoForm(request.POST or None, instance=user) user = InfoForm(request.POST or None, instance=user)
if user.is_valid(): if user.is_valid():
with transaction.atomic(), reversion.create_revision(): with transaction.atomic(), reversion.create_revision():
user.save() user.save()

Loading…
Cancel
Save