Merge branch 'master' of ssh://git.auf/auf_savoirs_en_partage_django
authorEric Mc Sween <eric.mcsween@gmail.com>
Fri, 29 Oct 2010 20:08:36 +0000 (16:08 -0400)
committerEric Mc Sween <eric.mcsween@gmail.com>
Fri, 29 Oct 2010 20:08:36 +0000 (16:08 -0400)
.gitignore
auf_savoirs_en_partage/backend_config.py [new file with mode: 0644]
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/templates/accounts/send_password.html
auf_savoirs_en_partage/templates/chercheurs/chercheur_form.html
auf_savoirs_en_partage/templates/chercheurs/retrieve.html
auf_savoirs_en_partage/templates/savoirs/evenement_utilisation.html

index 675560e..a604a1f 100644 (file)
@@ -17,7 +17,6 @@
 
 # Configuration du projet - par environnement
 conf.py
-backend_config.py
 django.wsgi
 
 # buildout
diff --git a/auf_savoirs_en_partage/backend_config.py b/auf_savoirs_en_partage/backend_config.py
new file mode 100644 (file)
index 0000000..ee1083d
--- /dev/null
@@ -0,0 +1,116 @@
+# -*- encoding: utf-8 -*-
+
+### Configuration de SEP
+
+# Sources de données
+RESOURCES = {
+
+    #OAI
+    
+    u'aide-en-ligne': {
+        'type': 'oai',
+        'acces': 'generic',
+        'url': 'http://eprints.aidenligne-francais-universite.auf.org/',
+    },
+    u'Centredoc-Org': {
+        'type': 'oai',
+        'acces': 'generic',
+        'url': 'http://doc.refer.org/',
+    },
+    u'Bibliothèque Numérique de Ouagadougou': {
+        'type': 'oai',
+        'acces': 'generic',
+        'url': 'http://greenstone.bf.refer.org/'
+    },
+    u'Centredoc-Fr': {
+        'type': 'oai',
+        'acces': 'generic',
+        'url': 'http://auf.centredoc.fr/ws/PMBOAI_1/'
+    },
+    u'CRITAOI': {
+        'type': 'oai',
+        'acces': 'generic',
+        'url': 'http://biblio.critaoi.auf.org/'
+    },
+    u'Archives ouvertes du Moyen-Orient': {
+        'type': 'oai',
+        'acces': 'generic',
+        'url': 'http://hal-confremo.archives-ouvertes.fr/'
+    },
+    u'CECA': {
+        'type': 'oai',
+        'acces': 'generic',
+        'url': 'http://ceca.auf.org/',
+    },
+
+    #LODEL
+    u'Revue-signes': {
+        'type': 'lodel',
+        'acces': 'html',
+        'url': 'http://www.revue-signes.info/',
+    },
+    u'ERGI': {
+        'type': 'lodel',
+        'acces': 'html',
+        'url': 'http://www.revue-genie-industriel.info/',
+    },
+    u'e-Santé': {
+        'type': 'lodel',
+        'acces': 'html',
+        'url': 'http://www.revue-esante.info/',
+    },
+    u'Radisma': {
+        'type': 'lodel',
+        'acces': 'html',
+        'url': 'http://www.radisma.info/',
+    },
+    u'RMNSci.net': {
+        'type': 'lodel',
+        'acces': 'html',
+        'url': 'http://www.rmnsci.net/',
+    },
+    u'Urbamag': {
+        'type': 'lodel',
+        'acces': 'html',
+        'url': 'http://www.urbamag.net/',
+    },
+    u'Afrique Science': {
+        'type': 'lodel',
+        'acces': 'html',
+        'url': 'http://www.afriquescience.info/',
+    },
+    u'e-Ti': {
+        'type': 'lodel',
+        'acces': 'html',
+        'url': 'http://www.revue-eti.net/',
+    },
+    u'Taloha': {
+        'type': 'lodel',
+        'acces': 'html',
+        'url': 'http://www.taloha.info/',
+    },
+    u'TDR': {
+        'type': 'lodel',
+        'acces': 'html',
+        'url': 'http://www.revue-tice.info/',
+    },
+    #'Exchorésis': {
+    #    'type': 'lodel',
+    #    'acces': 'html',
+    #    'url': 'http://exchoresis.refer.ga/',
+    #},
+
+    # SPIP
+    #'Annales des sciences agronomiques du Bénin': {
+    #    'type': 'lodel', 
+    #    'acces': 'html',
+    #    'url': 'http://www.annales-fsa.bj.refer.org/',
+    #},
+
+    # SPIP
+    #'Bulletin des OSCB': {
+    #    'type': 'lodel',
+    #    'acces': 'html',
+    #    'url': 'http://www.osc.bj.refer.org/',
+    #},
+}
index d4e702b..6ab49e4 100644 (file)
@@ -18,7 +18,7 @@ class GroupeForm(forms.ModelForm):
 class ChercheurForm(forms.ModelForm):
     class Meta:
         model = Chercheur
-        fields = ('diplome',)
+        fields = ('statut', 'diplome', )
         
 class PublicationForm(forms.ModelForm):
     class Meta:
@@ -27,14 +27,25 @@ class PublicationForm(forms.ModelForm):
         
 class TheseForm(PublicationForm):
     titre = forms.CharField(required=True, label="Titre de la thèse ou du mémoire")
-    annee = forms.IntegerField(required=False, label="Année de soutenance (réalisée ou prévue)")
+    annee = forms.IntegerField(required=True, label="Année de soutenance (réalisée ou prévue)")
     editeur = forms.CharField(required=False, label="Directeur de thèse")
     lieu_edition = forms.CharField(required=False, label="Établissement de soutenance")
     class Meta:
         model = Publication
         fields = ('titre', 'annee', 'editeur', 'lieu_edition', 'nb_pages', 'url')
+    
+    #def clean(self):
+    #    statut = self.data.get('chercheur-statut')
+    #    titre = self.cleaned_data.get("titre")
+    #    annee = self.cleaned_data.get("annee")
+    #    editeur = self.cleaned_data.get("editeur")
+    #    
+    #    if (statut == "enseignant" or statut == "etudiant") \
+    #        and (not titre or not annee or not editeur):
+    #        raise forms.ValidationError("Vous devez renseigner la rubrique thèse.")
         
 class ExpertiseForm(forms.ModelForm):
+    date = forms.DateInput(attrs={'class': 'date'}, format='%d/%m/%Y')
     class Meta:
         model = Expertise
         fields = ('nom', 'date', 'organisme_demandeur', 'organisme_demandeur_visible')        
@@ -43,16 +54,25 @@ class EtablissementForm(forms.ModelForm):
     class Meta:
         model = Chercheur
         fields = ('etablissement',)
+    def clean(self):
+        statut = self.data.get('chercheur-statut')
+        etablissement = self.cleaned_data.get("etablissement")
+        etablissement_autre_nom = self.data.get("etablissement_autre-etablissement_autre_nom")
+        
+        if statut == "enseignant":
+            if not etablissement or not etablissement_autre_nom:
+                raise forms.ValidationError("")
+        
 
 class EtablissementAutreForm(forms.ModelForm):
     class Meta:
         model = Chercheur
-        fields = ('etablissement_autre_nom', 'etablissement_autre_pays', 'enseignant' )
+        fields = ('etablissement_autre_nom', 'etablissement_autre_pays' )
 
 class DisciplineForm(forms.ModelForm):
     class Meta:
         model = Chercheur
-        fields = ('discipline', 'theme_recherche', 'mots_cles', 'url_site_web', 'url_blog', 'url_facebook', 'url_linkedin')
+        fields = ('discipline', 'theme_recherche', 'mots_cles', 'url_site_web', 'url_blog',)
         
 class PersonneEditForm(forms.ModelForm):
     class Meta:
index f3351d8..193515a 100644 (file)
@@ -12,7 +12,7 @@ class Personne(models.Model):
     salutation = models.CharField(max_length=128, null = True, blank = True)
     nom = models.CharField(max_length=255)
     prenom = models.CharField(max_length=128, verbose_name = 'Prénom')
-    courriel = models.EmailField(max_length=128, unique=True)
+    courriel = models.EmailField(max_length=128, unique=True, verbose_name="Adresse électronique")
     fonction = models.CharField(max_length=128, null = True, blank = True)
     date_naissance = models.DateField(null=True, blank=True)
     sousfonction = models.CharField(max_length=128, null = True, blank = True,
@@ -64,13 +64,14 @@ class ChercheurQuerySet(models.query.QuerySet):
                 q = q & part
         return self.filter(q).distinct() if q is not None else self
 
-FONCTION_CHOICES = (('Professeur', 'Professeur'), ('Chercheur', 'Chercheur'), ('Chercheur_independant', 'Chercheur indépendant'), ('Doctorant', 'Doctorant'))
+STATUT_CHOICES = (('enseignant', 'Enseignant-chercheur dans un établissement'), ('etudiant', 'Étudiant-chercheur doctorant'), ('independant', 'Chercheur indépendant docteur'))
 class Chercheur(models.Model):
     id = models.AutoField(primary_key=True, db_column='id')
     personne = models.ForeignKey('Personne', db_column='personne')
     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)
+    statut = models.CharField(max_length=36, choices=STATUT_CHOICES)
     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)
@@ -79,14 +80,13 @@ class Chercheur(models.Model):
     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')
-    enseignant = models.BooleanField(verbose_name="Êtes-vous aussi enseignant dans cet établissement?")
     #Domaine
     thematique = models.ForeignKey(Thematique, db_column='thematique', null=True, verbose_name='Thematique')
 
-    mots_cles = models.CharField(max_length=255, null=True, blank=True,
+    mots_cles = models.CharField(max_length=255, null=True,
                                     verbose_name='Mots-clés')                    
-    discipline = models.ForeignKey(Discipline, db_column='discipline', null=True, blank=True,
-                                        verbose_name='Champ disciplinaire')
+    discipline = models.ForeignKey(Discipline, db_column='discipline', null=True,
+                                        verbose_name='Discipline')
     theme_recherche = models.TextField(null=True, blank=True, verbose_name='Thème de recherche')                                    
     expertise = models.ForeignKey('Expertise', db_column='expertise', null=True, blank=True, related_name='expertise')
     url_site_web = models.URLField(max_length=255, null=True, blank=True,
@@ -119,10 +119,10 @@ class Chercheur(models.Model):
     def __unicode__(self):
         return u"%s %s" % (self.personne.nom.upper(), self.personne.prenom.title())
         
-    def fonction_display(self):
-        for f in FONCTION_CHOICES:
-            if self.fonction == f[0]:
-                return f[1]
+    def statut_display(self):
+        for s in STATUT_CHOICES:
+            if self.statut == s[0]:
+                return s[1]
         return "-"
     
 class Publication(models.Model):
@@ -144,10 +144,11 @@ class Publication(models.Model):
         
 class Expertise(models.Model):
     id = models.AutoField(primary_key=True, db_column='id')
-    nom = models.CharField(max_length=255, null=True, blank=True, verbose_name = 'Titre de l\'expertise')
+    nom = models.CharField(max_length=255, null=True, blank=True, verbose_name = 'Objet de la dernière expertise')
     date = models.DateField(db_column='date_expertise', null=True, blank=True)
-    organisme_demandeur = models.CharField(max_length=255, null=True, blank=True, verbose_name = 'Organisme demandeur')
-    organisme_demandeur_visible = models.BooleanField(verbose_name="Afficher l'organisme demandeur")
+    lieu = models.CharField(max_length=255, null=True, blank=True, verbose_name = 'Lieu de la dernière expertise')
+    organisme_demandeur = models.CharField(max_length=255, null=True, blank=True, verbose_name = 'Organisme commanditaire')
+    organisme_demandeur_visible = models.BooleanField(verbose_name="Afficher l'organisme commanditaire")
     actif = models.BooleanField(editable = False, db_column='actif')
 
     def __unicode__(self):
index f76eea1..96c5ad0 100644 (file)
@@ -206,8 +206,8 @@ def inscription(request):
                     these = these_form.save()
                     if expertise_form.is_valid() and expertise_form.cleaned_data['nom']:
                         expertise = expertise_form.save()
+                        c.expertise = expertise
                     c.these = these 
-                    c.expertise = expertise
                     etablissement_form.save(commit=False)
                     etablissement_autre_form.save(commit=False)
                     discipline_form.save(commit=False)
index a0fd22c..081589e 100644 (file)
@@ -4,12 +4,12 @@
 <h4>Demande de changement de mot de passe</h4>
 <div class="contenu-wrapper">
     {% if form.is_valid %}
-        <span class="message">Un courriel a été envoyé à l'adresse spécifiée.</span>
+        <span class="message">Un message a été envoyé à l'adresse électronique spécifiée.</span>
     {% else %}
     <form method="post">
         <fieldset>
             {% include "table_form.html" %}
-            <span>Veuillez entrer le courriel avec lequel vous avez completé votre inscription.</span>
+            <span>Veuillez entrer l'adresse électronique avec laquelle vous avez completé votre inscription.</span>
         </fieldset>
         <input type="submit" name="Submit" value="Envoyer" class="bouton" />
     </form>
index 83fadec..584e2c0 100644 (file)
@@ -25,6 +25,9 @@
     
     <fieldset>
         <legend>Etablissement de rattachement</legend>
+        {% if etablissement_form.errors %}
+        <span class="message">Vous devez renseigner un établissement.</span>
+        {% endif %}
         {% with etablissement_form as form %}
             {% include "table_form.html" %}
         {% endwith %}
index e4c02a5..da0d7d4 100644 (file)
                 <td>{{chercheur.nationalite.nom|default:"-"}}</td>
             </tr>
             {% endif %}
-            <!--<tr>
-                <td class="label">Fonction:</td>
-                <td>{{chercheur.fonction_display|default:"-"}}</td>
-            </tr>-->
+            <tr>
+                <td class="label">Statut:</td>
+                <td>{{chercheur.statut_display|default:"-"}}</td>
+            </tr>
             <tr>
                 <td class="label">Diplôme:</td>
                 <td>{{chercheur.diplome|default:"-"}}</td>
 
         <h5>Thèmes de recherche et publications</h5>
         <table id="publications">
+            {% if chercheur.theme_recherche %}
             <tr class="souligne">
                 <td class="label">Thèmes de recherche:</td>
                 <td>{{chercheur.theme_recherche}}</td>
             </tr>
+            {% endif %}
             {% if chercheur.these %}
             <tr class="souligne">
                 <td class="label">Thèse:</td>
index 2e66959..3baafd0 100644 (file)
     </p>
     <p>
         <b>Critères de validation :</b><br />
+        Votre annonce sera publiée après un contrôle de la validité des informations données.
+        {% comment %}
         La validation de l'annonce est automatique, selon deux critères : 
         <ul>
         <li>L'inscription au répertoire tient lieu de validation : tous les évènements proposés par des chercheurs inscrits apparaissent aussitôt dans le répertoire.</li>
         <li>Seules les annonces complètes sont publiées : voir les champs indispensables sur la fiche évènement en ligne.</li>
         </ul>
+        {% endcomment %}
     </p>
     <p>
         <b>Type d'événement : </b><br />