# Configuration du projet - par environnement
conf.py
-backend_config.py
django.wsgi
# buildout
--- /dev/null
+# -*- 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/',
+ #},
+}
class ChercheurForm(forms.ModelForm):
class Meta:
model = Chercheur
- fields = ('diplome',)
+ fields = ('statut', 'diplome', )
class PublicationForm(forms.ModelForm):
class Meta:
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')
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:
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,
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)
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,
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):
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):
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)
<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>
<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 %}
<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>
</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 />