diff --git a/machines/models.py b/machines/models.py index 0153e569..a54fdc32 100644 --- a/machines/models.py +++ b/machines/models.py @@ -93,7 +93,13 @@ class IpType(models.Model): for net in self.ip_range.cidrs(): networks += net.iter_hosts() ip_obj = [IpList(ip_type=self, ipv4=str(ip)) for ip in networks] - IpList.objects.bulk_create(ip_obj) + listes_ip = IpList.objects.filter(ipv4__in=[str(ip) for ip in networks]) + # Si il n'y a pas d'ip, on les crée + if not listes_ip: + IpList.objects.bulk_create(ip_obj) + # Sinon on update l'ip_type + else: + listes_ip.update(ip_type=self) return def del_ip_range(self): @@ -373,8 +379,7 @@ def interface_post_delete(sender, **kwargs): @receiver(post_save, sender=IpType) def iptype_post_save(sender, **kwargs): iptype = kwargs['instance'] - if not iptype.ip_objects(): - iptype.gen_ip_range() + iptype.gen_ip_range() @receiver(post_save, sender=MachineType) def machine_post_save(sender, **kwargs):