From: Ali Jetha Date: Thu, 30 Sep 2010 13:55:41 +0000 (-0400) Subject: Chercheurs: ajout d'attributs dans modele X-Git-Url: http://git.auf.org/?p=auf_savoirs_en_partage_django.git;a=commitdiff_plain;h=00755d9b43750db206b454c8eafec9e89cdfeb72 Chercheurs: ajout d'attributs dans modele --- diff --git a/auf_savoirs_en_partage/chercheurs/forms.py b/auf_savoirs_en_partage/chercheurs/forms.py index 6e6ecba..9eab15c 100644 --- a/auf_savoirs_en_partage/chercheurs/forms.py +++ b/auf_savoirs_en_partage/chercheurs/forms.py @@ -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: diff --git a/auf_savoirs_en_partage/chercheurs/models.py b/auf_savoirs_en_partage/chercheurs/models.py index 7f2c9b4..46d0dc5 100644 --- a/auf_savoirs_en_partage/chercheurs/models.py +++ b/auf_savoirs_en_partage/chercheurs/models.py @@ -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) diff --git a/auf_savoirs_en_partage/chercheurs/views.py b/auf_savoirs_en_partage/chercheurs/views.py index 616c8f2..15a06dd 100644 --- a/auf_savoirs_en_partage/chercheurs/views.py +++ b/auf_savoirs_en_partage/chercheurs/views.py @@ -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", \ diff --git a/auf_savoirs_en_partage/media/css/global.css b/auf_savoirs_en_partage/media/css/global.css index 16a6675..4b002d8 100644 --- a/auf_savoirs_en_partage/media/css/global.css +++ b/auf_savoirs_en_partage/media/css/global.css @@ -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 index 0000000..a4f48bf --- /dev/null +++ b/auf_savoirs_en_partage/media/js/sep.js @@ -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(); + + }); + +}); diff --git a/auf_savoirs_en_partage/sitotheque/models.py b/auf_savoirs_en_partage/sitotheque/models.py index d20a9a9..e7b0231 100644 --- a/auf_savoirs_en_partage/sitotheque/models.py +++ b/auf_savoirs_en_partage/sitotheque/models.py @@ -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'), ) diff --git a/auf_savoirs_en_partage/templates/chercheurs/inscription.html b/auf_savoirs_en_partage/templates/chercheurs/inscription.html index 8a12da4..87c6b39 100644 --- a/auf_savoirs_en_partage/templates/chercheurs/inscription.html +++ b/auf_savoirs_en_partage/templates/chercheurs/inscription.html @@ -4,9 +4,6 @@

Inscription

-

-Pour vous inscrire au répertoire de chercheurs, vous devez avoir un compte AUF... -

Informations personnelles
@@ -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 %} +

Si l'établissement n'existe pas ci-dessus

+ {% with etablissement_autre_form as form %} + {% include "table_form.html" %} + {% endwith %} -
Champ disciplinaire, thèmes de recherche & publications
+
Champ disciplinaire, thèmes de recherche
{% with discipline_form as form %} {% include "table_form.html" %} + {% endwith %} + +
Publications
+ {% with publication1_form as form %} + {% include "table_form.html" %} {% endwith %} +

Autres publications

+
+
Publication 2
+ {% with publication2_form as form %} + {% include "table_form.html" %} + {% endwith %} +
Publication 3
+ {% with publication3_form as form %} + {% include "table_form.html" %} + {% endwith %} +
Publication 4
+ {% with publication4_form as form %} + {% include "table_form.html" %} + {% endwith %} +

diff --git a/auf_savoirs_en_partage/templates/container_base.html b/auf_savoirs_en_partage/templates/container_base.html index 6668a46..5541f2a 100644 --- a/auf_savoirs_en_partage/templates/container_base.html +++ b/auf_savoirs_en_partage/templates/container_base.html @@ -7,6 +7,7 @@ +