model COSI
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 17 Jan 2011 17:04:13 +0000 (12:04 -0500)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Mon, 17 Jan 2011 17:04:13 +0000 (12:04 -0500)
project/cosi/admin.py [new file with mode: 0644]
project/cosi/migrations/0002_auto__add_equipe__add_ficheprojet.py [new file with mode: 0644]
project/cosi/models.py
project/settings.py

diff --git a/project/cosi/admin.py b/project/cosi/admin.py
new file mode 100644 (file)
index 0000000..4c4de8d
--- /dev/null
@@ -0,0 +1,32 @@
+# -*- encoding: utf-8 -*-
+
+from django.contrib import admin
+from models import Equipe, FicheProjet
+
+class EquipeAdmin(admin.TabularInline):
+    verbose_name_plural = "Équipe"
+    model = Equipe
+    extra = 1
+
+class FicheProjetAdmin(admin.ModelAdmin):
+    inlines = (EquipeAdmin, )
+    fieldsets = (
+            ('Données institutionnelles', {
+                'classes': ('collapse',),
+                'fields': ('nom', 'date_debut', 'date_fin', 'responsable_projet')
+            }),
+            ('Description du projet', {
+                'classes': ('collapse',),
+                'fields': ('contexte', 'objectifs', 'resultats', 'activites', 'publics', 'calendrier',)
+            }),
+            ('Gestion de projet', {
+                'classes': ('collapse',),
+                'fields': ('partenaires', 'financement', 'precisions',)
+            }),
+            ('Avis', {
+                'classes': (),
+                'fields': ('avis_ari', 'avis_cosi', 'priorite_cosi', 'planification_cosi', )
+            }),
+    )
+admin.site.register(FicheProjet, FicheProjetAdmin)
+
diff --git a/project/cosi/migrations/0002_auto__add_equipe__add_ficheprojet.py b/project/cosi/migrations/0002_auto__add_equipe__add_ficheprojet.py
new file mode 100644 (file)
index 0000000..488fb3c
--- /dev/null
@@ -0,0 +1,204 @@
+# encoding: 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 'Equipe'
+        db.create_table('cosi_equipe', (
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('fiche', self.gf('django.db.models.fields.related.ForeignKey')(related_name='fiche', to=orm['cosi.FicheProjet'])),
+            ('membre', self.gf('django.db.models.fields.related.ForeignKey')(related_name='membre', to=orm['datamaster_modeles.Employe'])),
+            ('role', self.gf('django.db.models.fields.CharField')(max_length=255)),
+        ))
+        db.send_create_signal('cosi', ['Equipe'])
+
+        # Adding model 'FicheProjet'
+        db.create_table('cosi_ficheprojet', (
+            ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+            ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
+            ('date_debut', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('date_fin', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
+            ('responsable_projet', self.gf('django.db.models.fields.related.ForeignKey')(related_name='responsable_projet', blank=True, null=True, to=orm['datamaster_modeles.Employe'])),
+            ('contexte', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('objectifs', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('resultats', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('activites', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('publics', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('calendrier', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('partenaires', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('financement', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('precisions', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('avis_ari', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('avis_cosi', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+            ('priorite_cosi', self.gf('django.db.models.fields.CharField')(max_length=255)),
+            ('planification_cosi', self.gf('django.db.models.fields.CharField')(max_length=255)),
+        ))
+        db.send_create_signal('cosi', ['FicheProjet'])
+
+
+    def backwards(self, orm):
+        
+        # Deleting model 'Equipe'
+        db.delete_table('cosi_equipe')
+
+        # Deleting model 'FicheProjet'
+        db.delete_table('cosi_ficheprojet')
+
+
+    models = {
+        'cosi.equipe': {
+            'Meta': {'object_name': 'Equipe'},
+            'fiche': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'fiche'", 'to': "orm['cosi.FicheProjet']"}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'membre': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'membre'", 'to': "orm['datamaster_modeles.Employe']"}),
+            'role': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'cosi.ficheprojet': {
+            'Meta': {'object_name': 'FicheProjet'},
+            'activites': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'avis_ari': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'avis_cosi': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'calendrier': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'contexte': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'date_debut': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'equipe': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['datamaster_modeles.Employe']", 'null': 'True', 'symmetrical': 'False', 'through': "orm['cosi.Equipe']", 'blank': 'True'}),
+            'financement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'objectifs': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'partenaires': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'planification_cosi': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'precisions': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'priorite_cosi': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'publics': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+            'responsable_projet': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'responsable_projet'", 'blank': 'True', 'null': 'True', 'to': "orm['datamaster_modeles.Employe']"}),
+            'resultats': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'})
+        },
+        'datamaster_modeles.bureau': {
+            'Meta': {'object_name': 'Bureau', 'db_table': "u'ref_bureau'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
+        },
+        'datamaster_modeles.employe': {
+            'Meta': {'ordering': "['nom']", 'object_name': 'Employe', 'db_table': "u'ref_employe'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'courriel': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'date_entree': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'fonction': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'genre': ('django.db.models.fields.CharField', [], {'max_length': '3'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lieu_travail_theorique_de'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            'implantation_physique': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'lieu_travail_reel_de'", 'db_column': "'implantation_physique'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            'mandat_debut': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'mandat_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'poste_type_1': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'poste_type_1'", 'blank': 'True', 'null': 'True', 'db_column': "'poste_type_1'", 'to': "orm['datamaster_modeles.PosteType']"}),
+            'poste_type_2': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'poste_type_2'", 'blank': 'True', 'null': 'True', 'db_column': "'poste_type_2'", 'to': "orm['datamaster_modeles.PosteType']"}),
+            'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'responsable': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'responsable_de'", 'blank': 'True', 'null': 'True', 'db_column': "'responsable'", 'to': "orm['datamaster_modeles.Employe']"}),
+            'service': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Service']", 'db_column': "'service'"}),
+            'telephone_ip': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'telephone_poste': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
+        },
+        'datamaster_modeles.implantation': {
+            'Meta': {'ordering': "('nom',)", 'object_name': 'Implantation', 'db_table': "u'ref_implantation'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'adresse_physique_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'adresse_physique_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'adresse_physique_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+            'adresse_physique_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'adresse_physique_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_physique'", 'db_column': "'adresse_physique_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
+            'adresse_physique_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'adresse_physique_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'adresse_physique_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'adresse_physique_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'adresse_physique_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'adresse_postale_boite_postale': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'adresse_postale_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'adresse_postale_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
+            'adresse_postale_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+            'adresse_postale_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
+            'adresse_postale_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_postale'", 'db_column': "'adresse_postale_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
+            'adresse_postale_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'adresse_postale_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'adresse_postale_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'adresse_postale_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'adresse_postale_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'bureau_rattachement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'bureau_rattachement'"}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
+            'code_meteo': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'commentaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'courriel': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'courriel_interne': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
+            'date_extension': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_fermeture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_inauguration': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'date_ouverture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'fax': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'fax_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'fuseau_horaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'hebergement_convention': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
+            'hebergement_convention_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
+            'hebergement_etablissement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'modif_date': ('django.db.models.fields.DateField', [], {}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"}),
+            'remarque': ('django.db.models.fields.TextField', [], {}),
+            'responsable_implantation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
+            'statut': ('django.db.models.fields.IntegerField', [], {}),
+            'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'telephone_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
+            'type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'url': ('django.db.models.fields.URLField', [], {'max_length': '255', 'blank': 'True'})
+        },
+        'datamaster_modeles.pays': {
+            'Meta': {'ordering': "('nom',)", 'object_name': 'Pays', 'db_table': "u'ref_pays'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
+            'code_bureau': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Bureau']", 'to_field': "'code'", 'db_column': "'code_bureau'"}),
+            'code_iso3': ('django.db.models.fields.CharField', [], {'max_length': '3', 'unique': 'True', 'blank': 'True'}),
+            'developpement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {}),
+            'monnaie': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
+            'nord_sud': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
+            'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
+        },
+        'datamaster_modeles.postetype': {
+            'Meta': {'object_name': 'PosteType', 'db_table': "u'ref_poste_type'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'datamaster_modeles.region': {
+            'Meta': {'object_name': 'Region', 'db_table': "u'ref_region'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'code': ('django.db.models.fields.CharField', [], {'max_length': '255', 'unique': 'True'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'implantation_bureau': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'gere_region'", 'db_column': "'implantation_bureau'", 'to': "orm['datamaster_modeles.Implantation']"}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        },
+        'datamaster_modeles.service': {
+            'Meta': {'object_name': 'Service', 'db_table': "u'ref_service'"},
+            'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+            'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
+            'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
+        }
+    }
+
+    complete_apps = ['cosi']
index 71a8362..e9e5447 100644 (file)
@@ -1,3 +1,65 @@
+# -*- encoding: utf-8 -*-
+
 from django.db import models
 
-# Create your models here.
+PRIORITES = (
+    (0, 'Basse'),
+    (50, 'Moyenne'),
+    (100, 'Élevée'),
+)
+
+PLANIFICATIONS = (
+    (0, 'Court terme'),
+    (50, 'Moyen terme'),
+    (100, 'Long terme'),
+)
+
+ROLES = (
+    ('RESP_INFO', 'Responsable informatique'),
+    ('RESP_METIER', 'Responsable métier'),                                                                                       
+    ('DEVELOPPEUR', 'Développeur'),
+    ('UTILISATEUR', 'Utilisateur'),
+    ('TESTEUR', 'Testeur'),
+    )
+
+HELP_DATE = "format : jj/mm/aaaa"
+
+class Equipe(models.Model):
+    fiche = models.ForeignKey("FicheProjet", related_name="fiche")
+    membre = models.ForeignKey("datamaster_modeles.Employe", related_name="membre")
+    role = models.CharField(max_length=255, choices=ROLES, verbose_name="Rôle")
+
+class FicheProjet(models.Model):
+    id = models.AutoField(primary_key=True)
+    
+    # Données institutionnelles
+    nom = models.CharField(max_length=255, verbose_name="Nom")
+    date_debut = models.DateField(verbose_name="Date de début", blank = True, null = True, help_text=HELP_DATE)
+    date_fin = models.DateField(verbose_name="Date de fin", blank = True, null = True, help_text=HELP_DATE)
+    responsable_projet = models.ForeignKey("datamaster_modeles.Employe", related_name="responsable_projet", blank = True, null = True)
+    
+    # Description
+    contexte = models.TextField(verbose_name="Contexte et justification", blank = True, null = True)
+    objectifs = models.TextField(verbose_name="Objectifs", blank = True, null = True)
+    resultats = models.TextField(verbose_name="Résultats attendus", blank = True, null = True)
+    activites = models.TextField(verbose_name="Principales activités proposées", blank = True, null = True)
+    publics = models.TextField(verbose_name="Publics cibles", blank = True, null = True)
+    calendrier = models.TextField(verbose_name="Calendrier et phases de réalisation", blank = True, null = True)
+
+    # Gestion de projet
+    equipe = models.ManyToManyField("datamaster_modeles.Employe", through="Equipe", blank = True, null = True)
+    partenaires = models.TextField(verbose_name="Partenaires associés au projet", blank = True, null = True)
+    financement = models.TextField(verbose_name="Financement", blank = True, null = True)
+    precisions = models.TextField(verbose_name="Précisions complémentaires", blank = True, null = True)
+
+    # Avis
+    avis_ari = models.TextField(verbose_name="Avis ARI", blank = True, null = True)
+    avis_cosi = models.TextField(verbose_name="Avis COSI", blank = True, null = True)
+    priorite_cosi = models.CharField(max_length=255, choices=PRIORITES, verbose_name=u"Priorité COSI")
+    planification_cosi = models.CharField(max_length=255, choices=PLANIFICATIONS, verbose_name=u"Planification COSI")
+
+    class Meta:
+        verbose_name = "Fiche projet"
+
+    def __unicode__(self,):
+        return "%s" % (self.nom, )
index 3942932..b44ee3d 100644 (file)
@@ -53,6 +53,7 @@ INSTALLED_APPS = (
     'django.contrib.sessions',
     'django.contrib.admin',
     'south',
+    'datamaster_modeles',
     'cosi',
 )