Chercheurs: ajout d'attributs dans modele
authorAli Jetha <ali@U-AJ.(none)>
Thu, 30 Sep 2010 13:55:41 +0000 (09:55 -0400)
committerAli Jetha <ali@U-AJ.(none)>
Thu, 30 Sep 2010 13:55:41 +0000 (09:55 -0400)
auf_savoirs_en_partage/chercheurs/forms.py
auf_savoirs_en_partage/chercheurs/models.py
auf_savoirs_en_partage/chercheurs/views.py
auf_savoirs_en_partage/media/css/global.css
auf_savoirs_en_partage/media/js/sep.js [new file with mode: 0644]
auf_savoirs_en_partage/sitotheque/models.py
auf_savoirs_en_partage/templates/chercheurs/inscription.html
auf_savoirs_en_partage/templates/container_base.html

index 6e6ecba..9eab15c 100644 (file)
@@ -11,18 +11,26 @@ class PersonneForm(forms.ModelForm):
 class ChercheurForm(forms.ModelForm):
     class Meta:
         model = Chercheur
-        fields = ('pays', 'groupes')
+        fields = ('nationalite', 'groupes')
         
+class PublicationForm(forms.ModelForm):
+    class Meta:
+        model = Publication
 
 class EtablissementForm(forms.ModelForm):
     class Meta:
         model = Chercheur
         fields = ('etablissement',)
 
+class EtablissementAutreForm(forms.ModelForm):
+    class Meta:
+        model = Chercheur
+        fields = ('etablissement_autre_nom', 'etablissement_autre_pays', )
+
 class DisciplineForm(forms.ModelForm):
     class Meta:
         model = Chercheur
-        fields = ('discipline', 'expertise', 'mots_cles', 'url', 'publication1', 'publication2', 'publication3')
+        fields = ('discipline', 'expertise', 'mots_cles', 'url')
         
 class PersonneEditForm(forms.ModelForm):
     class Meta:
index 7f2c9b4..46d0dc5 100644 (file)
@@ -31,45 +31,85 @@ class Personne(models.Model):
 class Utilisateur(Personne):
     password = models.CharField (max_length=35, verbose_name = 'Mot de passe')
 
-FONCTION_CHOICES = (('Professeur', 'Professeur'), ('Chercheur', 'Chercheur'), ('Doctorant', 'Doctorant'), ('Autre', 'Autre'))
+FONCTION_CHOICES = (('Professeur', 'Professeur'), ('Chercheur', 'Chercheur'), ('Chercheur_independant', 'Chercheur indépendant'), ('Doctorant', 'Doctorant'))
 class Chercheur(models.Model):
     id = models.AutoField(primary_key=True, db_column='id')
     personne = models.ForeignKey('Personne', db_column='personne')
-    pays = models.ForeignKey(Pays, null = True, db_column='pays', to_field='code', verbose_name = 'Nationalité')
+    nationalite = models.ForeignKey(Pays, null = True, db_column='nationalite', to_field='code', 
+                                    verbose_name = 'Nationalité', related_name='nationalite')
     fonction = models.CharField(max_length=36, choices=FONCTION_CHOICES)
-    scolarite = models.CharField(max_length=255, null=True,
+    diplome = models.CharField(max_length=255, null=True,
                                  verbose_name = 'Diplôme le plus élevé')
     etablissement = models.ForeignKey(Etablissement, db_column='etablissement', null=True, blank=True)
+    etablissement_autre_nom = models.CharField(max_length=255, null=True, blank=True,
+                                 verbose_name = 'Autre établissement')
+    etablissement_autre_pays = models.ForeignKey(Pays, null = True, blank=True, db_column='etablissement_autre_pays', 
+                                                to_field='code', related_name='etablissement_autre_pays',
+                                                 verbose_name = 'Pays de l\'établissement')
     #Domaine
-    thematique = models.ForeignKey(Thematique, db_column='thematique', null=True)
+    thematique = models.ForeignKey(Thematique, db_column='thematique', null=True, verbose_name='Thematique')
 
     mots_cles = models.CharField(max_length=255, null=True, blank=True,
-                                    verbose_name='Mots-clés')
-    these = models.CharField(max_length=255, null=True, blank=True,
-                                    verbose_name='Thèse')                          
+                                    verbose_name='Mots-clés')                    
     discipline = models.ForeignKey(Discipline, db_column='discipline', null=True, blank=True,
                                         verbose_name='Champ disciplinaire')
     expertise = models.TextField(null=True, blank=True, verbose_name='Domaine d\'expertise et thèmes de recherche')                                    
-    url = models.URLField(max_length=255, null=True, blank=True,
+    url_site_web = models.URLField(max_length=255, null=True, blank=True,
                                     verbose_name='Adresse site Internet personnel')
-    publication1 = models.CharField(max_length=255, null=True, blank=True,
-                                 verbose_name = 'Publication 1')
-    publication2 = models.CharField(max_length=255, null=True, blank=True,
-                                 verbose_name = 'Publication 2')
-    publication3 = models.CharField(max_length=255, null=True, blank=True,
-                                 verbose_name = 'Publication 3')
-    publication4 = models.CharField(max_length=255, null=True, blank=True, 
-                                 verbose_name = 'Publication 4')
+    url_blog = models.URLField(max_length=255, null=True, blank=True,
+                                    verbose_name='Blog')
+    url_facebook = models.URLField(max_length=255, null=True, blank=True,
+                                    verbose_name='Facebook')
+    url_linkedin = models.URLField(max_length=255, null=True, blank=True,
+                                    verbose_name='Linkedin')                                                                 
+                                    
     groupes = models.ManyToManyField('Groupe', through='ChercheurGroupe', blank=True, verbose_name = 'Domaines de recherche')
     actif = models.BooleanField(editable = False)
     
+    #Refactoring, mettre les publications comme etant des many2many;
+    publication1 = models.ForeignKey('Publication', db_column='publication1', null=True, blank=True, related_name='publication1', verbose_name = 'Publication 1')
+    publication2 = models.ForeignKey('Publication', db_column='publication2', null=True, blank=True, related_name='publication2', verbose_name = 'Publication 2')
+    publication3 = models.ForeignKey('Publication', db_column='publication3', null=True, blank=True, related_name='publication3', verbose_name = 'Publication 3')
+    publication4 = models.ForeignKey('Publication', db_column='publication4', null=True, blank=True, related_name='publication4', verbose_name = 'Publication 4')
+    
+    these = models.ForeignKey('Publication', db_column='these', null=True, blank=True, related_name='These')
+    #communication_annee
+    #communication_titre
+    #communication_nom_manifestation_scientifique
+    #communication_lieu
+    #communication_date
+    
+    #laboratoire_nom =
+    #laboratoire_etablissement =
+    #laboratoire_pays =
+    #laboratoire_url=
+    
+    #meta
+    date_creation = models.DateField(auto_now_add=True, db_column='date_creation')
+    date_modification = models.DateField(auto_now=True, db_column='date_modification')
+    
     def __unicode__(self):
         return u"%s %s" % (self.personne.nom.upper(), self.personne.prenom.title())
     
+class Publication(models.Model):
+    id = models.AutoField(primary_key=True, db_column='id')
+    titre = models.CharField(max_length=255, db_column='titre', null=True, blank=True, verbose_name = 'Titre')
+    annee = models.IntegerField(db_column='annee', null=True, blank=True, verbose_name='Année de publication')
+    revue = models.CharField(max_length=255, db_column='revue', null=True, blank=True, verbose_name = 'Revue')
+    editeur = models.CharField(max_length=255, db_column='editeur', null=True, blank=True, verbose_name = 'Éditeur')
+    lieu_edition = models.CharField(max_length=255, db_column='lieu_edition', null=True, blank=True, verbose_name = 'Lieu d\'édition')
+    nb_pages = models.CharField(max_length=255, db_column='nb_pages', null=True, blank=True, verbose_name = 'Nombre de pages')
+    url = models.CharField(max_length=255, db_column='url', null=True, blank=True, verbose_name = 'Lien vers la publication')
 
 class Groupe(models.Model):
     id = models.AutoField(primary_key=True, db_column='id')
     nom = models.CharField(max_length=255, db_column='nom')
+    url = models.URLField(max_length=255, null=True, blank=True,
+                                    verbose_name='Site web')
+    liste_diffusion = models.URLField(max_length=255, null=True, blank=True,
+                                    verbose_name='Liste de diffusion')
+    bulletin = models.URLField(max_length=255, null=True, blank=True,
+                                    verbose_name='Bulletin')
     actif = models.BooleanField(editable = False, db_column='actif')
 
     def __unicode__(self):
@@ -79,4 +119,5 @@ class ChercheurGroupe(models.Model):
     id = models.AutoField(primary_key=True, db_column='id')
     chercheur = models.ForeignKey('Chercheur', db_column='chercheur')
     groupe = models.ForeignKey('Groupe', db_column='groupe')
-    date_inscription = models.DateField(auto_now=True)
+    date_inscription = models.DateField(auto_now_add=True)
+    date_modification = models.DateField(auto_now=True)
index 616c8f2..15a06dd 100644 (file)
@@ -51,7 +51,12 @@ def inscription(request):
         personne_form = PersonneForm (request.POST, prefix="personne")
         chercheur_form = ChercheurForm (request.POST, prefix="chercheur")
         etablissement_form = EtablissementForm (request.POST, prefix="etablissement")
+        etablissement_autre_form = EtablissementAutreForm(request.POST, prefix="etablissement_autre")
         discipline_form = DisciplineForm (request.POST, prefix="discipline")  
+        publication1_form = PublicationForm (request.POST, prefix="publication1")
+        publication2_form = PublicationForm (request.POST, prefix="publication2") 
+        publication3_form = PublicationForm (request.POST, prefix="publication3") 
+        publication4_form = PublicationForm (request.POST, prefix="publication4") 
         
         if personne_form.is_valid():
             if chercheur_form.is_valid():
@@ -60,8 +65,21 @@ def inscription(request):
                 etablissement_form = EtablissementForm (request.POST, prefix="etablissement", instance=c)
                 discipline_form = DisciplineForm (request.POST, prefix="discipline", instance=c)
                 
-                if etablissement_form.is_valid() and discipline_form.is_valid():          
-                    etablissement_form.save(commit=False)         
+                if etablissement_form.is_valid() and discipline_form.is_valid():       
+                    if publication1_form.is_valid():
+                       pub = publication1_form.save()
+                       c.publication1 = pub
+                    if publication2_form.is_valid():
+                       pub = publication2_form.save()
+                       c.publication2 = pub   
+                    if publication3_form.is_valid():
+                       pub = publication3_form.save()
+                       c.publication3 = pub    
+                    if publication4_form.is_valid():
+                       pub = publication4_form.save()
+                       c.publication4 = pub    
+                    etablissement_form.save(commit=False)
+                    etablissement_autre_form.save(commit=False)
                     discipline_form.save(commit=False)
                     p = personne_form.save()
                     c.personne = p
@@ -70,12 +88,22 @@ def inscription(request):
         personne_form = PersonneForm(prefix="personne")
         chercheur_form = ChercheurForm(prefix="chercheur")
         etablissement_form = EtablissementForm(prefix="etablissement")
+        etablissement_autre_form = EtablissementAutreForm(prefix="etablissement_autre")
         discipline_form = DisciplineForm(prefix="discipline")
+        publication1_form = PublicationForm(prefix="publication1")
+        publication2_form = PublicationForm(prefix="publication2") 
+        publication3_form = PublicationForm(prefix="publication3") 
+        publication4_form = PublicationForm(prefix="publication4") 
     
     variables = { 'personne_form': personne_form,
                   'chercheur_form': chercheur_form,
                   'etablissement_form': etablissement_form,
                   'discipline_form': discipline_form,
+                  'etablissement_autre_form': etablissement_autre_form,
+                  'publication1_form': publication1_form,
+                  'publication2_form': publication2_form,
+                  'publication3_form': publication3_form,
+                  'publication4_form': publication4_form,
                 }
     
     return render_to_response ("chercheurs/inscription.html", \
index 16a6675..4b002d8 100644 (file)
@@ -166,3 +166,8 @@ ul.sous-menu li { display:inline; padding:0px 10px 0px 0px; font-size: 1.1em; }
 
 #repertoire { border:1px solid #bbb; padding:20px; margin: 10px; width:95% }
 #repertoire th, td { padding:5px }
+
+.errorlist {color:red}
+select     { width:100%; overflow:hidden }
+
+.publications_autre {border:1px solid #CCC; background:#FAFAFA; margin:10px; padding:10px; display:none;}
diff --git a/auf_savoirs_en_partage/media/js/sep.js b/auf_savoirs_en_partage/media/js/sep.js
new file mode 100644 (file)
index 0000000..a4f48bf
--- /dev/null
@@ -0,0 +1,14 @@
+$(document).ready(function() {
+
+   //Register review form submition function
+    $("#show_publications").click(
+    function() 
+    { 
+      if($(".publications_autre").css('display') == 'none')
+        $(".publications_autre").show();
+      else
+        $(".publications_autre").hide();
+    
+    });
+
+});
index d20a9a9..e7b0231 100644 (file)
@@ -6,9 +6,13 @@ from savoirs.models import Discipline
 TYPE_SITE_CHOICES = (
     ('RV', 'Revue en ligne'), 
     ('BB', 'Bibliothèque en ligne'),
-    ('FD', 'Fonds patrimonial'),
+    ('FD', 'Fonds documentaire'),
     ('AR', 'Archive ouverte'),
     ('CO', 'Cours en ligne'),
+    ('RE', 'Repertoire de ressource'),
+    ('SA', 'Site associatif'),
+    ('SC', 'Site culturel'),
+    ('SI', 'Site d\'information'),
     ('AU', 'Autre type de site'),
     )
 
index 8a12da4..87c6b39 100644 (file)
@@ -4,9 +4,6 @@
 <h4>Inscription</h4>
 
 <div class="contenu-wrapper">
-<p>
-Pour vous inscrire au répertoire de chercheurs, vous devez avoir un compte AUF...
-</p>
 
 <form method="post">
     <h5>Informations personnelles</h5>
@@ -23,13 +20,37 @@ Pour vous inscrire au répertoire de chercheurs, vous devez avoir un compte AUF.
     {% with etablissement_form as form %}
         {% include "table_form.html" %}
     {% endwith %}
+    <p>Si l'établissement n'existe pas ci-dessus</p>
+    {% with etablissement_autre_form as form %}
+        {% include "table_form.html" %}
+    {% endwith %}
     
-    <h5>Champ disciplinaire, thèmes de recherche & publications</h5>
+    <h5>Champ disciplinaire, thèmes de recherche</h5>
     {% with discipline_form as form %}
         {% include "table_form.html" %}
+    {% endwith %}
+
+    <h5>Publications</h5>
+    {% with publication1_form as form %}
+        {% include "table_form.html" %}
     {% endwith %}    
     
+    <p id="show_publications">Autres publications</p>
     
+    <div class="publications_autre">
+        <h6>Publication 2</h6>
+        {% with publication2_form as form %}
+            {% include "table_form.html" %}
+        {% endwith %} 
+        <h6>Publication 3</h6>
+        {% with publication3_form as form %}
+            {% include "table_form.html" %}
+        {% endwith %}     
+        <h6>Publication 4</h6>
+        {% with publication4_form as form %}
+            {% include "table_form.html" %}
+        {% endwith %}
+    </div>
     <br />
     <input type="submit" name="Submit" value="Inscription" class="bouton" />
 </form>
index 6668a46..5541f2a 100644 (file)
@@ -7,6 +7,7 @@
         <script type="text/javascript" src="{{ MEDIA_URL }}js/jquery/jquery-ui.js"></script>
         <script type="text/javascript" src="{{ MEDIA_URL }}js/tabber.js"></script>
         <script type="text/javascript" src="{{ MEDIA_URL }}js/pagination.js"></script>
+        <script type="text/javascript" src="{{ MEDIA_URL }}js/sep.js"></script>
         <script type="text/javascript" src="{{ MEDIA_URL }}js/jquery/jquery.datepicker.js"></script>
         <script type="text/javascript" src="{{ MEDIA_URL }}js/jquery/jquery.timepicker.js"></script>
         <link href="{{ MEDIA_URL }}css/jquery/jquery.datepicker.css" rel="stylesheet" type="text/css" />