Gestion des consommables: quelques changements
authorOngolaboy <willy.manga@auf.org>
Sat, 21 Mar 2015 18:21:51 +0000 (19:21 +0100)
committerOngolaboy <willy.manga@auf.org>
Sat, 21 Mar 2015 18:21:51 +0000 (19:21 +0100)
    Améliorations pour la bureautique

 * oui, je l'avoue j'ai écrasé la précédente migration
 * plus de précisions sur les valeurs par défaut de certains
 * attributs
 * on entre manuellement le nom et la catégorie du consommable
 * quelques attributs en plus pour le consommable
 * on sauvegarde la date de retrait au niveau même du consommable
 * on commence à jouer avec les vues
 * meilleure visualisation de l'interface d'admin

projets_django/bacgl_utils/bureautique/admin.py
projets_django/bacgl_utils/bureautique/migrations/0001_initial.py
projets_django/bacgl_utils/bureautique/migrations/0002_auto__add_equipement__del_field_imprimante_marque__del_field_imprimant.py [new file with mode: 0644]
projets_django/bacgl_utils/bureautique/migrations/0003_auto__add_field_consommable_date_retrait.py [new file with mode: 0644]
projets_django/bacgl_utils/bureautique/migrations/0004_auto__del_field_consommable_date_retrait.py [new file with mode: 0644]
projets_django/bacgl_utils/bureautique/migrations/0005_auto__add_field_consommable_date_retrait.py [new file with mode: 0644]
projets_django/bacgl_utils/bureautique/migrations/0006_auto__chg_field_consommable_date_retrait.py [new file with mode: 0644]
projets_django/bacgl_utils/bureautique/models.py
projets_django/bacgl_utils/bureautique/views.py

index 7241d2b..48ad5ba 100644 (file)
@@ -4,18 +4,29 @@ from django.contrib import admin
 from bureautique.models import Personnel, Imprimante, Consommable
 from bureautique.models import RetraitConsommable
 
+class RetraitConsommableInline(admin.TabularInline):
+    model = RetraitConsommable
+    extra = 2
+
+class PersonnelAdmin(admin.ModelAdmin):
+    fieldsets = [
+            (None, {'fields': ['nom']}),
+            ]
+    inlines = [RetraitConsommableInline]
+
 class ConsommableAdmin(admin.ModelAdmin):
-    list_display = ('categorie','__unicode__',
-            'date_acquisition','disponible')
-    list_filter = ['categorie','disponible']
-    ordering = ['categorie','-disponible','date_acquisition']
+    list_display = ('__unicode__',
+            'date_acquisition','disponible','date_retrait')
+    list_filter = ['disponible']
+    ordering = ['-disponible','date_acquisition']
 
 class RetraitConsommableAdmin(admin.ModelAdmin):
-    list_display = ('date_retrait','demandeur','imprimante_utilisee')
+    list_display = ('date_retrait','demandeur','imprimante_utilisee',
+            'code_consommable')
     list_filter = ['demandeur']
     ordering = ['-date_retrait']
 
-admin.site.register(Personnel)
+admin.site.register(Personnel,PersonnelAdmin)
 admin.site.register(Imprimante)
 admin.site.register(Consommable,ConsommableAdmin)
 admin.site.register(RetraitConsommable,RetraitConsommableAdmin)
index 3499cb2..3ab0274 100644 (file)
@@ -14,19 +14,13 @@ class Migration(SchemaMigration):
         ))
         db.send_create_signal('bureautique', ['Personnel'])
 
-        # Adding model 'Equipement'
-        db.create_table('bureautique_equipement', (
+        # Adding model 'Imprimante'
+        db.create_table('bureautique_imprimante', (
             ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
             ('marque', self.gf('django.db.models.fields.CharField')(default='HP', max_length=200)),
-            ('modele', self.gf('django.db.models.fields.CharField')(max_length=200)),
+            ('modele', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
             ('num_serie', self.gf('django.db.models.fields.CharField')(unique=True, max_length=200)),
             ('date_acquisition', self.gf('django.db.models.fields.DateField')()),
-        ))
-        db.send_create_signal('bureautique', ['Equipement'])
-
-        # Adding model 'Imprimante'
-        db.create_table('bureautique_imprimante', (
-            ('equipement_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['bureautique.Equipement'], unique=True, primary_key=True)),
             ('emplacement', self.gf('django.db.models.fields.CharField')(max_length=200)),
             ('fqdn', self.gf('django.db.models.fields.CharField')(max_length=200)),
             ('categorie', self.gf('django.db.models.fields.CharField')(max_length=20)),
@@ -35,7 +29,11 @@ class Migration(SchemaMigration):
 
         # Adding model 'Consommable'
         db.create_table('bureautique_consommable', (
-            ('equipement_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['bureautique.Equipement'], unique=True, primary_key=True)),
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('marque', self.gf('django.db.models.fields.CharField')(default='HP', max_length=200)),
+            ('modele', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
+            ('num_serie', self.gf('django.db.models.fields.CharField')(unique=True, max_length=200)),
+            ('date_acquisition', self.gf('django.db.models.fields.DateField')()),
             ('nom', self.gf('django.db.models.fields.CharField')(max_length=20)),
             ('couleur', self.gf('django.db.models.fields.CharField')(max_length=20)),
             ('categorie', self.gf('django.db.models.fields.CharField')(max_length=20)),
@@ -59,9 +57,6 @@ class Migration(SchemaMigration):
         # Deleting model 'Personnel'
         db.delete_table('bureautique_personnel')
 
-        # Deleting model 'Equipement'
-        db.delete_table('bureautique_equipement')
-
         # Deleting model 'Imprimante'
         db.delete_table('bureautique_imprimante')
 
@@ -74,28 +69,28 @@ class Migration(SchemaMigration):
 
     models = {
         'bureautique.consommable': {
-            'Meta': {'object_name': 'Consommable', '_ormbases': ['bureautique.Equipement']},
+            'Meta': {'object_name': 'Consommable'},
             'categorie': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
             'couleur': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
+            'date_acquisition': ('django.db.models.fields.DateField', [], {}),
             'date_expiration': ('django.db.models.fields.DateField', [], {}),
             'disponible': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
-            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
-            'nom': ('django.db.models.fields.CharField', [], {'max_length': '20'})
-        },
-        'bureautique.equipement': {
-            'Meta': {'object_name': 'Equipement'},
-            'date_acquisition': ('django.db.models.fields.DateField', [], {}),
             'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
             'marque': ('django.db.models.fields.CharField', [], {'default': "'HP'", 'max_length': '200'}),
-            'modele': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+            'modele': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
             'num_serie': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'})
         },
         'bureautique.imprimante': {
-            'Meta': {'object_name': 'Imprimante', '_ormbases': ['bureautique.Equipement']},
+            'Meta': {'object_name': 'Imprimante'},
             'categorie': ('django.db.models.fields.CharField', [], {'max_length': '20'}),
+            'date_acquisition': ('django.db.models.fields.DateField', [], {}),
             'emplacement': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
-            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
-            'fqdn': ('django.db.models.fields.CharField', [], {'max_length': '200'})
+            'fqdn': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'marque': ('django.db.models.fields.CharField', [], {'default': "'HP'", 'max_length': '200'}),
+            'modele': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'num_serie': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '200'})
         },
         'bureautique.personnel': {
             'Meta': {'object_name': 'Personnel'},
diff --git a/projets_django/bacgl_utils/bureautique/migrations/0002_auto__add_equipement__del_field_imprimante_marque__del_field_imprimant.py b/projets_django/bacgl_utils/bureautique/migrations/0002_auto__add_equipement__del_field_imprimante_marque__del_field_imprimant.py
new file mode 100644 (file)
index 0000000..7e2321d
--- /dev/null
@@ -0,0 +1,188 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Adding model 'Equipement'
+        db.create_table('bureautique_equipement', (
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('marque', self.gf('django.db.models.fields.CharField')(default='HP', max_length=200)),
+            ('modele', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
+            ('num_serie', self.gf('django.db.models.fields.CharField')(default='x', unique=True, max_length=200)),
+            ('date_acquisition', self.gf('django.db.models.fields.DateField')()),
+        ))
+        db.send_create_signal('bureautique', ['Equipement'])
+
+        # Deleting field 'Imprimante.marque'
+        db.delete_column('bureautique_imprimante', 'marque')
+
+        # Deleting field 'Imprimante.num_serie'
+        db.delete_column('bureautique_imprimante', 'num_serie')
+
+        # Deleting field 'Imprimante.date_acquisition'
+        db.delete_column('bureautique_imprimante', 'date_acquisition')
+
+        # Deleting field 'Imprimante.modele'
+        db.delete_column('bureautique_imprimante', 'modele')
+
+        # Deleting field 'Imprimante.id'
+        db.delete_column('bureautique_imprimante', 'id')
+
+        # Adding field 'Imprimante.equipement_ptr'
+        db.add_column('bureautique_imprimante', 'equipement_ptr',
+                      self.gf('django.db.models.fields.related.OneToOneField')(default=0, to=orm['bureautique.Equipement'], unique=True, primary_key=True),
+                      keep_default=False)
+
+        # Deleting field 'Consommable.num_serie'
+        db.delete_column('bureautique_consommable', 'num_serie')
+
+        # Deleting field 'Consommable.nom'
+        db.delete_column('bureautique_consommable', 'nom')
+
+        # Deleting field 'Consommable.categorie'
+        db.delete_column('bureautique_consommable', 'categorie')
+
+        # Deleting field 'Consommable.marque'
+        db.delete_column('bureautique_consommable', 'marque')
+
+        # Deleting field 'Consommable.date_acquisition'
+        db.delete_column('bureautique_consommable', 'date_acquisition')
+
+        # Deleting field 'Consommable.id'
+        db.delete_column('bureautique_consommable', 'id')
+
+        # Deleting field 'Consommable.modele'
+        db.delete_column('bureautique_consommable', 'modele')
+
+        # Adding field 'Consommable.equipement_ptr'
+        db.add_column('bureautique_consommable', 'equipement_ptr',
+                      self.gf('django.db.models.fields.related.OneToOneField')(default=0, to=orm['bureautique.Equipement'], unique=True, primary_key=True),
+                      keep_default=False)
+
+        # Adding M2M table for field imprimante_compatible on 'Consommable'
+        db.create_table('bureautique_consommable_imprimante_compatible', (
+            ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+            ('consommable', models.ForeignKey(orm['bureautique.consommable'], null=False)),
+            ('imprimante', models.ForeignKey(orm['bureautique.imprimante'], null=False))
+        ))
+        db.create_unique('bureautique_consommable_imprimante_compatible', ['consommable_id', 'imprimante_id'])
+
+
+    def backwards(self, orm):
+        # Deleting model 'Equipement'
+        db.delete_table('bureautique_equipement')
+
+        # Adding field 'Imprimante.marque'
+        db.add_column('bureautique_imprimante', 'marque',
+                      self.gf('django.db.models.fields.CharField')(default='HP', max_length=200),
+                      keep_default=False)
+
+        # Adding field 'Imprimante.num_serie'
+        db.add_column('bureautique_imprimante', 'num_serie',
+                      self.gf('django.db.models.fields.CharField')(default='n', max_length=200, unique=True),
+                      keep_default=False)
+
+        # Adding field 'Imprimante.date_acquisition'
+        db.add_column('bureautique_imprimante', 'date_acquisition',
+                      self.gf('django.db.models.fields.DateField')(default=datetime.datetime(2015, 3, 8, 0, 0)),
+                      keep_default=False)
+
+        # Adding field 'Imprimante.modele'
+        db.add_column('bureautique_imprimante', 'modele',
+                      self.gf('django.db.models.fields.CharField')(default='', max_length=200, blank=True),
+                      keep_default=False)
+
+        # Adding field 'Imprimante.id'
+        db.add_column('bureautique_imprimante', 'id',
+                      self.gf('django.db.models.fields.AutoField')(default=0, primary_key=True),
+                      keep_default=False)
+
+        # Deleting field 'Imprimante.equipement_ptr'
+        db.delete_column('bureautique_imprimante', 'equipement_ptr_id')
+
+        # Adding field 'Consommable.num_serie'
+        db.add_column('bureautique_consommable', 'num_serie',
+                      self.gf('django.db.models.fields.CharField')(default=0, max_length=200, unique=True),
+                      keep_default=False)
+
+        # Adding field 'Consommable.nom'
+        db.add_column('bureautique_consommable', 'nom',
+                      self.gf('django.db.models.fields.CharField')(default=0, max_length=20),
+                      keep_default=False)
+
+        # Adding field 'Consommable.categorie'
+        db.add_column('bureautique_consommable', 'categorie',
+                      self.gf('django.db.models.fields.CharField')(default=0, max_length=20),
+                      keep_default=False)
+
+        # Adding field 'Consommable.marque'
+        db.add_column('bureautique_consommable', 'marque',
+                      self.gf('django.db.models.fields.CharField')(default='HP', max_length=200),
+                      keep_default=False)
+
+        # Adding field 'Consommable.date_acquisition'
+        db.add_column('bureautique_consommable', 'date_acquisition',
+                      self.gf('django.db.models.fields.DateField')(default=0),
+                      keep_default=False)
+
+        # Adding field 'Consommable.id'
+        db.add_column('bureautique_consommable', 'id',
+                      self.gf('django.db.models.fields.AutoField')(default=0, primary_key=True),
+                      keep_default=False)
+
+        # Adding field 'Consommable.modele'
+        db.add_column('bureautique_consommable', 'modele',
+                      self.gf('django.db.models.fields.CharField')(default='', max_length=200, blank=True),
+                      keep_default=False)
+
+        # Deleting field 'Consommable.equipement_ptr'
+        db.delete_column('bureautique_consommable', 'equipement_ptr_id')
+
+        # Removing M2M table for field imprimante_compatible on 'Consommable'
+        db.delete_table('bureautique_consommable_imprimante_compatible')
+
+
+    models = {
+        'bureautique.consommable': {
+            'Meta': {'object_name': 'Consommable', '_ormbases': ['bureautique.Equipement']},
+            'couleur': ('django.db.models.fields.CharField', [], {'default': "'noir'", 'max_length': '20'}),
+            'date_expiration': ('django.db.models.fields.DateField', [], {}),
+            'disponible': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
+            'imprimante_compatible': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['bureautique.Imprimante']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'bureautique.equipement': {
+            'Meta': {'object_name': 'Equipement'},
+            'date_acquisition': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'marque': ('django.db.models.fields.CharField', [], {'default': "'HP'", 'max_length': '200'}),
+            'modele': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'num_serie': ('django.db.models.fields.CharField', [], {'default': "'x'", 'unique': 'True', 'max_length': '200'})
+        },
+        'bureautique.imprimante': {
+            'Meta': {'object_name': 'Imprimante', '_ormbases': ['bureautique.Equipement']},
+            'categorie': ('django.db.models.fields.CharField', [], {'default': "'encre'", 'max_length': '20'}),
+            'emplacement': ('django.db.models.fields.CharField', [], {'default': "'Bureau'", 'max_length': '200'}),
+            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
+            'fqdn': ('django.db.models.fields.CharField', [], {'default': "'imprimante'", 'max_length': '200'})
+        },
+        'bureautique.personnel': {
+            'Meta': {'object_name': 'Personnel'},
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '200', 'primary_key': 'True'})
+        },
+        'bureautique.retraitconsommable': {
+            'Meta': {'object_name': 'RetraitConsommable'},
+            'code_consommable': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Consommable']", 'unique': 'True'}),
+            'date_retrait': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'demandeur': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['bureautique.Personnel']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'imprimante_utilisee': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['bureautique.Imprimante']"})
+        }
+    }
+
+    complete_apps = ['bureautique']
\ No newline at end of file
diff --git a/projets_django/bacgl_utils/bureautique/migrations/0003_auto__add_field_consommable_date_retrait.py b/projets_django/bacgl_utils/bureautique/migrations/0003_auto__add_field_consommable_date_retrait.py
new file mode 100644 (file)
index 0000000..568e0a5
--- /dev/null
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Adding field 'Consommable.date_retrait'
+        db.add_column('bureautique_consommable', 'date_retrait',
+                      self.gf('django.db.models.fields.DateField')(default=datetime.datetime(2015, 3, 21, 0, 0)),
+                      keep_default=False)
+
+
+    def backwards(self, orm):
+        # Deleting field 'Consommable.date_retrait'
+        db.delete_column('bureautique_consommable', 'date_retrait')
+
+
+    models = {
+        'bureautique.consommable': {
+            'Meta': {'object_name': 'Consommable', '_ormbases': ['bureautique.Equipement']},
+            'couleur': ('django.db.models.fields.CharField', [], {'default': "'noir'", 'max_length': '20'}),
+            'date_expiration': ('django.db.models.fields.DateField', [], {}),
+            'date_retrait': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2015, 3, 21, 0, 0)'}),
+            'disponible': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
+            'imprimante_compatible': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['bureautique.Imprimante']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'bureautique.equipement': {
+            'Meta': {'object_name': 'Equipement'},
+            'date_acquisition': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'marque': ('django.db.models.fields.CharField', [], {'default': "'HP'", 'max_length': '200'}),
+            'modele': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'num_serie': ('django.db.models.fields.CharField', [], {'default': "'x'", 'unique': 'True', 'max_length': '200'})
+        },
+        'bureautique.imprimante': {
+            'Meta': {'object_name': 'Imprimante', '_ormbases': ['bureautique.Equipement']},
+            'categorie': ('django.db.models.fields.CharField', [], {'default': "'encre'", 'max_length': '20'}),
+            'emplacement': ('django.db.models.fields.CharField', [], {'default': "'Bureau'", 'max_length': '200'}),
+            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
+            'fqdn': ('django.db.models.fields.CharField', [], {'default': "'imprimante'", 'max_length': '200'})
+        },
+        'bureautique.personnel': {
+            'Meta': {'object_name': 'Personnel'},
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '200', 'primary_key': 'True'})
+        },
+        'bureautique.retraitconsommable': {
+            'Meta': {'object_name': 'RetraitConsommable'},
+            'code_consommable': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Consommable']", 'unique': 'True'}),
+            'date_retrait': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'demandeur': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['bureautique.Personnel']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'imprimante_utilisee': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['bureautique.Imprimante']"})
+        }
+    }
+
+    complete_apps = ['bureautique']
\ No newline at end of file
diff --git a/projets_django/bacgl_utils/bureautique/migrations/0004_auto__del_field_consommable_date_retrait.py b/projets_django/bacgl_utils/bureautique/migrations/0004_auto__del_field_consommable_date_retrait.py
new file mode 100644 (file)
index 0000000..e03c0e6
--- /dev/null
@@ -0,0 +1,60 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Deleting field 'Consommable.date_retrait'
+        db.delete_column('bureautique_consommable', 'date_retrait')
+
+
+    def backwards(self, orm):
+        # Adding field 'Consommable.date_retrait'
+        db.add_column('bureautique_consommable', 'date_retrait',
+                      self.gf('django.db.models.fields.DateField')(default=datetime.datetime(2015, 3, 21, 0, 0)),
+                      keep_default=False)
+
+
+    models = {
+        'bureautique.consommable': {
+            'Meta': {'object_name': 'Consommable', '_ormbases': ['bureautique.Equipement']},
+            'couleur': ('django.db.models.fields.CharField', [], {'default': "'noir'", 'max_length': '20'}),
+            'date_expiration': ('django.db.models.fields.DateField', [], {}),
+            'disponible': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
+            'imprimante_compatible': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['bureautique.Imprimante']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'bureautique.equipement': {
+            'Meta': {'object_name': 'Equipement'},
+            'date_acquisition': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'marque': ('django.db.models.fields.CharField', [], {'default': "'HP'", 'max_length': '200'}),
+            'modele': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'num_serie': ('django.db.models.fields.CharField', [], {'default': "'x'", 'unique': 'True', 'max_length': '200'})
+        },
+        'bureautique.imprimante': {
+            'Meta': {'object_name': 'Imprimante', '_ormbases': ['bureautique.Equipement']},
+            'categorie': ('django.db.models.fields.CharField', [], {'default': "'encre'", 'max_length': '20'}),
+            'emplacement': ('django.db.models.fields.CharField', [], {'default': "'Bureau'", 'max_length': '200'}),
+            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
+            'fqdn': ('django.db.models.fields.CharField', [], {'default': "'imprimante'", 'max_length': '200'})
+        },
+        'bureautique.personnel': {
+            'Meta': {'object_name': 'Personnel'},
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '200', 'primary_key': 'True'})
+        },
+        'bureautique.retraitconsommable': {
+            'Meta': {'object_name': 'RetraitConsommable'},
+            'code_consommable': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Consommable']", 'unique': 'True'}),
+            'date_retrait': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'demandeur': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['bureautique.Personnel']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'imprimante_utilisee': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['bureautique.Imprimante']"})
+        }
+    }
+
+    complete_apps = ['bureautique']
\ No newline at end of file
diff --git a/projets_django/bacgl_utils/bureautique/migrations/0005_auto__add_field_consommable_date_retrait.py b/projets_django/bacgl_utils/bureautique/migrations/0005_auto__add_field_consommable_date_retrait.py
new file mode 100644 (file)
index 0000000..a454100
--- /dev/null
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+        # Adding field 'Consommable.date_retrait'
+        db.add_column('bureautique_consommable', 'date_retrait',
+                      self.gf('django.db.models.fields.DateField')(default=datetime.datetime(2015, 3, 21, 0, 0), blank=True),
+                      keep_default=False)
+
+
+    def backwards(self, orm):
+        # Deleting field 'Consommable.date_retrait'
+        db.delete_column('bureautique_consommable', 'date_retrait')
+
+
+    models = {
+        'bureautique.consommable': {
+            'Meta': {'object_name': 'Consommable', '_ormbases': ['bureautique.Equipement']},
+            'couleur': ('django.db.models.fields.CharField', [], {'default': "'noir'", 'max_length': '20'}),
+            'date_expiration': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2015, 3, 21, 0, 0)'}),
+            'date_retrait': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2015, 3, 21, 0, 0)', 'blank': 'True'}),
+            'disponible': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
+            'imprimante_compatible': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['bureautique.Imprimante']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'bureautique.equipement': {
+            'Meta': {'object_name': 'Equipement'},
+            'date_acquisition': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'marque': ('django.db.models.fields.CharField', [], {'default': "'HP'", 'max_length': '200'}),
+            'modele': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'num_serie': ('django.db.models.fields.CharField', [], {'default': "'x'", 'unique': 'True', 'max_length': '200'})
+        },
+        'bureautique.imprimante': {
+            'Meta': {'object_name': 'Imprimante', '_ormbases': ['bureautique.Equipement']},
+            'categorie': ('django.db.models.fields.CharField', [], {'default': "'encre'", 'max_length': '20'}),
+            'emplacement': ('django.db.models.fields.CharField', [], {'default': "'Bureau'", 'max_length': '200'}),
+            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
+            'fqdn': ('django.db.models.fields.CharField', [], {'default': "'imprimante'", 'max_length': '200'})
+        },
+        'bureautique.personnel': {
+            'Meta': {'object_name': 'Personnel'},
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '200', 'primary_key': 'True'})
+        },
+        'bureautique.retraitconsommable': {
+            'Meta': {'object_name': 'RetraitConsommable'},
+            'code_consommable': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Consommable']", 'unique': 'True'}),
+            'date_retrait': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'demandeur': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['bureautique.Personnel']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'imprimante_utilisee': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['bureautique.Imprimante']"})
+        }
+    }
+
+    complete_apps = ['bureautique']
\ No newline at end of file
diff --git a/projets_django/bacgl_utils/bureautique/migrations/0006_auto__chg_field_consommable_date_retrait.py b/projets_django/bacgl_utils/bureautique/migrations/0006_auto__chg_field_consommable_date_retrait.py
new file mode 100644 (file)
index 0000000..3becb25
--- /dev/null
@@ -0,0 +1,59 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+
+
+class Migration(SchemaMigration):
+
+    def forwards(self, orm):
+
+        # Changing field 'Consommable.date_retrait'
+        db.alter_column('bureautique_consommable', 'date_retrait', self.gf('django.db.models.fields.DateField')(null=True))
+
+    def backwards(self, orm):
+
+        # Changing field 'Consommable.date_retrait'
+        db.alter_column('bureautique_consommable', 'date_retrait', self.gf('django.db.models.fields.DateField')())
+
+    models = {
+        'bureautique.consommable': {
+            'Meta': {'object_name': 'Consommable', '_ormbases': ['bureautique.Equipement']},
+            'couleur': ('django.db.models.fields.CharField', [], {'default': "'noir'", 'max_length': '20'}),
+            'date_expiration': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2015, 3, 21, 0, 0)'}),
+            'date_retrait': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2015, 3, 21, 0, 0)', 'null': 'True'}),
+            'disponible': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
+            'imprimante_compatible': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['bureautique.Imprimante']", 'symmetrical': 'False', 'blank': 'True'})
+        },
+        'bureautique.equipement': {
+            'Meta': {'object_name': 'Equipement'},
+            'date_acquisition': ('django.db.models.fields.DateField', [], {}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'marque': ('django.db.models.fields.CharField', [], {'default': "'HP'", 'max_length': '200'}),
+            'modele': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
+            'num_serie': ('django.db.models.fields.CharField', [], {'default': "'x'", 'unique': 'True', 'max_length': '200'})
+        },
+        'bureautique.imprimante': {
+            'Meta': {'object_name': 'Imprimante', '_ormbases': ['bureautique.Equipement']},
+            'categorie': ('django.db.models.fields.CharField', [], {'default': "'encre'", 'max_length': '20'}),
+            'emplacement': ('django.db.models.fields.CharField', [], {'default': "'Bureau'", 'max_length': '200'}),
+            'equipement_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Equipement']", 'unique': 'True', 'primary_key': 'True'}),
+            'fqdn': ('django.db.models.fields.CharField', [], {'default': "'imprimante'", 'max_length': '200'})
+        },
+        'bureautique.personnel': {
+            'Meta': {'object_name': 'Personnel'},
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '200', 'primary_key': 'True'})
+        },
+        'bureautique.retraitconsommable': {
+            'Meta': {'object_name': 'RetraitConsommable'},
+            'code_consommable': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['bureautique.Consommable']", 'unique': 'True'}),
+            'date_retrait': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
+            'demandeur': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['bureautique.Personnel']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'imprimante_utilisee': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['bureautique.Imprimante']"})
+        }
+    }
+
+    complete_apps = ['bureautique']
\ No newline at end of file
index 4a41c2b..13ccb01 100644 (file)
@@ -1,6 +1,6 @@
 # -*-coding:utf-8 -*-
 
-import datetime
+from datetime import date
 from django.db import models
 
 
@@ -18,7 +18,7 @@ class Equipement(models.Model):
     marque = models.CharField(max_length=200,default="HP")
     modele = models.CharField(max_length=200,blank=True)
     num_serie = models.CharField("Numéro de série",
-            max_length=200,unique=True,default='x1')
+            max_length=200,unique=True,default='x')
     date_acquisition = models.DateField("Date d'acquisition")
 
 
@@ -31,8 +31,8 @@ class Imprimante(Equipement):
             ("multifonction","Multifonction"),
             )
 
-    emplacement = models.CharField(max_length=200,default='Bureau')
-    fqdn = models.CharField("Nom DNS",max_length=200,default='Imprimante')
+    emplacement = models.CharField(max_length=200,default="Bureau")
+    fqdn = models.CharField("Nom DNS",max_length=200,default="imprimante")
     categorie = \
             models.CharField(\
             "Type d'imprimante",
@@ -42,7 +42,8 @@ class Imprimante(Equipement):
             )
 
     def __unicode__(self):
-        return "%s (%s)" % (self.modele,self.emplacement)
+        return " %s (%s)" %\
+            (self.modele,self.emplacement)
 
 
 class Consommable(Equipement):
@@ -58,12 +59,15 @@ class Consommable(Equipement):
 
     couleur = models.CharField(max_length=20,choices=NOM_COULEUR,
             default='noir')
-    date_expiration = models.DateField()
+    date_expiration=models.DateField(
+            default=date.today().replace(year=date.today().year+1))
     disponible = models.BooleanField(default=True)
+    date_retrait = models.DateField("date du retrait",\
+            null=True,blank=True)
     imprimante_compatible = models.ManyToManyField(Imprimante,blank=True)
 
     class Meta:
-        ordering = ['-disponible','date_expiration']
+        ordering = ['-disponible','modele','date_acquisition']
 
     def __unicode__(self):
         return "%s %s (%s)" %(self.modele,self.couleur,self.num_serie)
@@ -71,12 +75,9 @@ class Consommable(Equipement):
 class RetraitConsommable(models.Model):
     demandeur = models.ForeignKey(Personnel)
     date_retrait = models.DateField("date du retrait",auto_now_add=True)
-    code_consommable = models.OneToOneField(Consommable)
+    code_consommable = models.OneToOneField(Consommable,)
     imprimante_utilisee = models.ForeignKey(Imprimante)
 
-    class Meta:
-        verbose_name = verbose_name_plural = "Retrait des consommables"
-
     def __unicode__(self):
         annee_date_retrait = self.date_retrait.year
         mois_date_retrait = self.date_retrait.month
@@ -87,11 +88,30 @@ class RetraitConsommable(models.Model):
 
     def save(self,*args,**kwargs):
         """
-        Lorsqu'on effectue un retrait, il faut absolument changer
-        le statut du consommable afin qu'il soit vu comme
+        Lorsqu'on effectue un retrait, il faut absolument changer:
+
+        1. le statut du consommable afin qu'il soit vu comme
         non disponible
+
+        2. la date de retrait
+
         """
         c = Consommable.objects.get(pk=self.code_consommable)
         c.disponible = False
+        c.date_retrait= date.today()
         c.save()
         super(RetraitConsommable,self).save(*args,**kwargs)
+
+def quantite_disponible(modele):
+    nombre = 0
+    c = Consommable.objects.filter(modele__exact=modele)
+    nombre = c.filter(disponible__exact=True).count()
+    return nombre
+
+#jdef maj_consommable(sender,**kwargs):
+#    c = Consommable.objects.get(sender.code_consommable)
+#    rc = sender.objects.get(pk=c.id)
+#    c.date_retrait = rc.date_retrait
+#    c.save()
+
+#models.signals.post_save.connect(maj_consommable,sender=RetraitConsommable)
index 8329350..deb6751 100644 (file)
@@ -1,37 +1,26 @@
-# -*- coding:utf-8 -*-
-
 from django.shortcuts import render_to_response
-from bureautique.models import Consommable,Imprimante,RetraitConsommable
+from django.http import HttpResponse
+from django.template import Context, loader
+from bureautique.models import Imprimante,Consommable
 
 def home(request):
-#    req = Consommable.objects.filter(modele__exact=self.modele).filter(disponible__exact=True).count()
-    imprimantes = Imprimante.objects.order_by(\
-            'modele','emplacement').all()
-    
-    return render_to_response('bureautique/index.html',
-            {'imprimantes':imprimantes},
+    imprimantes = Imprimante.objects.all()
+    consomm_list = Consommable.objects.all()
+    listing_complet = {'imprimantes':imprimantes,
+            'consomm_list':consomm_list,
+            }
+    t = loader.get_template('bureautique/index.html')
+    c = Context(
+            listing_complet,
             )
+    return HttpResponse(t.render(c))
+#    return render_to_response('bureautique/index.html',
+#            {'imprimantes':imprimantes})
 
-def consommable(request):
-    consommable_dispo = Consommable.objects.filter(disponible__exact=True)
-    return render_to_response('bureautique/consommable.html',
-            {'consommable_dispo':consommable_dispo},
+def detail(request):
+    consomm_list = Consommable.objects.all()
+    t = loader.get_template('bureautique/detail.html')
+    c = Context(
+            {'consomm_list':consomm_list},
             )
-
-def consommable_detail(request,consommable_modele):
-    """
-    Il s'agit des consommables d'un modèle précis ET
-    qui sont disponibles
-    """
-
-    consommable_dispo = Consommable.objects.filter(disponible__exact=True)
-    consommable_dispo = consommable_dispo.filter(\
-            modele__exact=consommable_modele)
-    return render_to_response('bureautique/consommable_detail.html',
-            {'consommable_dispo':consommable_dispo},
-            )
-
-def retrait(request):
-    retrait_list = RetraitConsommable.objects.all()
-    return render_to_response('bureautique/retrait.html',
-            {'retrait_list':retrait_list})
+    return HttpResponse(t.render(c))