Browse Source

Fix issue with duplicate blank fields

On hardware_provisionning.serial and hardware_provisionning.mac_address
Jocelyn Delalande 8 years ago
parent
commit
ca5bd00506

+ 1 - 1
hardware_provisioning/migrations/0013_auto_20161110_2246.py

@@ -14,7 +14,7 @@ class Migration(migrations.Migration):
         migrations.AlterField(
         migrations.AlterField(
             model_name='item',
             model_name='item',
             name='serial',
             name='serial',
-            field=models.CharField(help_text='ou toute autre r\xe9f\xe9rence unique)', unique=True, max_length=250, verbose_name='N\xb0 de s\xe9rie', blank=True),
+            field=models.CharField(help_text='ou toute autre r\xe9f\xe9rence unique)', unique=True, max_length=250, verbose_name='N\xb0 de s\xe9rie', blank=True, null=True),
             preserve_default=True,
             preserve_default=True,
         ),
         ),
     ]
     ]

+ 10 - 2
hardware_provisioning/models.py

@@ -45,7 +45,7 @@ class Item(models.Model):
         help_text="préférable au n° de série si possible")
         help_text="préférable au n° de série si possible")
     serial = models.CharField(
     serial = models.CharField(
         verbose_name='N° de série',
         verbose_name='N° de série',
-        max_length=250, blank=True, unique=True,
+        max_length=250, blank=True, null=True, unique=True,
         help_text='ou toute autre référence unique)')
         help_text='ou toute autre référence unique)')
     buy_date = models.DateField(verbose_name='date d’achat')
     buy_date = models.DateField(verbose_name='date d’achat')
     owner = models.ForeignKey(
     owner = models.ForeignKey(
@@ -56,12 +56,20 @@ class Item(models.Model):
         help_text="dans le cas de matériel n'appartenant pas à l'association")
         help_text="dans le cas de matériel n'appartenant pas à l'association")
     comment = models.TextField(verbose_name='commentaire', blank=True,
     comment = models.TextField(verbose_name='commentaire', blank=True,
                                null=True)
                                null=True)
-                               
+
     objects = ItemQuerySet().as_manager()
     objects = ItemQuerySet().as_manager()
 
 
     def __unicode__(self):
     def __unicode__(self):
         return self.designation
         return self.designation
 
 
+    def save(self, *args, **kwargs):
+        # workaround for unique=True, null=True
+        # see https://code.djangoproject.com/ticket/4136#comment:33
+        self.mac_address = self.mac_address or None
+        self.serial = self.serial or None
+
+        return super(Item, self).save(*args, **kwargs)
+
     def get_current_loan(self):
     def get_current_loan(self):
         """
         """
         Returns the current Loan for this Item, if exists, or None.
         Returns the current Loan for this Item, if exists, or None.