Browse Source

Ajout du status 'deployed' pour un objet. Fix #72 Inventaire : pouvoir indiquer un matos déployé mais pas chez un adhérent

SimonBoulier 7 years ago
parent
commit
570303b770

+ 1 - 1
hardware_provisioning/admin.py

@@ -55,7 +55,7 @@ class AvailabilityFilter(admin.SimpleListFilter):
 class ItemAdmin(admin.ModelAdmin):
 class ItemAdmin(admin.ModelAdmin):
     list_display = (
     list_display = (
         'designation', 'type', 'mac_address', 'serial', 'owner',
         'designation', 'type', 'mac_address', 'serial', 'owner',
-        'buy_date', 'is_available')
+        'buy_date', 'deployed', 'is_available')
     list_filter = (
     list_filter = (
         AvailabilityFilter, 'type__name', 'storage',
         AvailabilityFilter, 'type__name', 'storage',
         'buy_date', OwnerFilter)
         'buy_date', OwnerFilter)

+ 31 - 0
hardware_provisioning/migrations/0015_auto_20170802_1701.py

@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+from django.conf import settings
+import hardware_provisioning.fields
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('hardware_provisioning', '0014_auto_20170422_1847'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='item',
+            name='deployed',
+            field=models.BooleanField(default=False, help_text='Cocher si le mat\xe9riel est en production', verbose_name='d\xe9ploy\xe9'),
+        ),
+        migrations.AlterField(
+            model_name='item',
+            name='mac_address',
+            field=hardware_provisioning.fields.MACAddressField(null=True, max_length=17, blank=True, help_text='Pr\xe9f\xe9rable au n\xb0 de s\xe9rie si possible', unique=True, verbose_name='addresse MAC'),
+        ),
+        migrations.AlterField(
+            model_name='item',
+            name='owner',
+            field=models.ForeignKey(related_name='items', blank=True, to=settings.AUTH_USER_MODEL, help_text="Dans le cas de mat\xe9riel n'appartenant pas \xe0 l'association", null=True, verbose_name='Propri\xe9taire'),
+        ),
+    ]

+ 7 - 7
hardware_provisioning/models.py

@@ -42,7 +42,7 @@ class Item(models.Model):
     mac_address = MACAddressField(
     mac_address = MACAddressField(
         verbose_name='addresse MAC',
         verbose_name='addresse MAC',
         blank=True, null=True, unique=True,
         blank=True, null=True, unique=True,
-        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, null=True, unique=True,
         max_length=250, blank=True, null=True, unique=True,
@@ -53,7 +53,9 @@ class Item(models.Model):
         verbose_name='Propriétaire',
         verbose_name='Propriétaire',
         related_name='items',
         related_name='items',
         null=True, blank=True,
         null=True, blank=True,
-        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")
+    deployed = models.BooleanField(verbose_name='déployé', default=False,
+                                   help_text='Cocher si le matériel est en production')
     comment = models.TextField(verbose_name='commentaire', blank=True,
     comment = models.TextField(verbose_name='commentaire', blank=True,
                                null=True)
                                null=True)
 
 
@@ -81,12 +83,10 @@ class Item(models.Model):
 
 
     def is_available(self):
     def is_available(self):
         """
         """
-        Returns the status of the Item. If a Loan without an end date exists,
-        returns False (else True).
+        Returns the status of the Item. If a running loan exists,
+        or if the item is deployed, returns False (else True).
         """
         """
-        if self.loans.running().exists():
-            return False
-        return True
+        return (not self.deployed) and (not self.loans.running().exists())
     is_available.boolean = True
     is_available.boolean = True
     is_available.short_description = 'disponible'
     is_available.short_description = 'disponible'