help_text="e.g. conseil scientifique, conseil associatif, commission régionale d'experts",
choices=OUI_NON_CHOICES, widget=forms.RadioSelect()
)
- membre_instance_auf_details = forms.CharField(label="Préciser laquelle et votre fonction", required=False)
+ membre_instance_auf_nom = forms.ChoiceField(
+ choices = (('', '---------'),) + Chercheur.INSTANCE_AUF_CHOICES,
+ label="Préciser laquelle", required=False
+ )
+ membre_instance_auf_fonction = forms.CharField(label="Préciser votre fonction", required=False)
membre_instance_auf_dates = forms.CharField(label="Préciser les dates", required=False)
expert_oif = forms.ChoiceField(label="Avez-vous déjà été sollicité par l'OIF?", choices=OUI_NON_CHOICES, widget=forms.RadioSelect())
expert_oif_details = forms.CharField(label="Préciser à quel titre", required=False,
membre_association_francophone_details = forms.CharField(label="Préciser laquelle", required=False)
membre_reseau_institutionnel = forms.ChoiceField(
label="Avez-vous fait partie des instances d'un réseau institutionnel de l'AUF?",
- help_text="e.g. AFELSH, RIFFEF, CIDMEF, etc.",
choices=OUI_NON_CHOICES, widget=forms.RadioSelect()
)
- membre_reseau_institutionnel_details = forms.CharField(required=False, label="Préciser lesquelles et votre fonction")
+ membre_reseau_institutionnel_nom = forms.ChoiceField(
+ label="Préciser le réseau institutionnel",
+ choices=(('', '---------'),) + Chercheur.RESEAU_INSTITUTIONNEL_CHOICES,
+ required=False
+ )
+ membre_reseau_institutionnel_fonction = forms.CharField(required=False, label="Préciser votre fonction")
membre_reseau_institutionnel_dates = forms.CharField(required=False, label="Préciser les dates")
pays_etablissement = forms.ModelChoiceField(label="Pays de l'établissement", queryset=Pays.objects.all(), required=True)
class Meta:
model = Chercheur
- fields = ('nom', 'prenom', 'genre',
- 'statut', 'diplome', 'discipline', 'theme_recherche',
- 'groupe_recherche', 'mots_cles', 'url_site_web',
- 'url_blog', 'url_reseau_social', 'attestation',
- 'membre_instance_auf', 'membre_instance_auf_details',
+ fields = ('nom', 'prenom', 'genre', 'statut', 'diplome',
+ 'discipline', 'theme_recherche', 'groupe_recherche',
+ 'mots_cles', 'url_site_web', 'url_blog',
+ 'url_reseau_social', 'attestation', 'membre_instance_auf',
+ 'membre_instance_auf_nom', 'membre_instance_auf_fonction',
'membre_instance_auf_dates', 'expert_oif',
'expert_oif_details', 'expert_oif_dates',
'membre_association_francophone',
'membre_association_francophone_details',
'membre_reseau_institutionnel',
- 'membre_reseau_institutionnel_details',
+ 'membre_reseau_institutionnel_nom',
+ 'membre_reseau_institutionnel_fonction',
'membre_reseau_institutionnel_dates', 'expertises_auf')
def __init__(self, data=None, prefix=None, instance=None):
def clean_membre_instance_auf(self):
return bool(int(self.cleaned_data['membre_instance_auf']))
- def clean_membre_instance_auf_details(self):
+ def clean_membre_instance_auf_nom(self):
membre = self.cleaned_data.get('membre_instance_auf')
- details = self.cleaned_data.get('membre_instance_auf_details')
- if membre and not details:
+ nom = self.cleaned_data.get('membre_instance_auf_nom')
+ if membre and not nom:
raise forms.ValidationError('Veuillez préciser')
- return details
+ return nom
+
+ def clean_membre_instance_auf_fonction(self):
+ membre = self.cleaned_data.get('membre_instance_auf')
+ fonction = self.cleaned_data.get('membre_instance_auf_fonction')
+ if membre and not fonction:
+ raise forms.ValidationError('Veuillez préciser')
+ return fonction
def clean_membre_instance_auf_dates(self):
membre = self.cleaned_data.get('membre_instance_auf')
def clean_membre_reseau_institutionnel(self):
return bool(int(self.cleaned_data['membre_reseau_institutionnel']))
- def clean_membre_reseau_institutionnel_details(self):
+ def clean_membre_reseau_institutionnel_nom(self):
membre = self.cleaned_data.get('membre_reseau_institutionnel')
- details = self.cleaned_data.get('membre_reseau_institutionnel_details')
- if membre and not details:
+ nom = self.cleaned_data.get('membre_reseau_institutionnel_nom')
+ if membre and not nom:
raise forms.ValidationError('Veuillez préciser')
- return details
+ return nom
+
+ def clean_membre_reseau_institutionnel_fonction(self):
+ membre = self.cleaned_data.get('membre_reseau_institutionnel')
+ fonction = self.cleaned_data.get('membre_reseau_institutionnel_fonction')
+ if membre and not fonction:
+ raise forms.ValidationError('Veuillez préciser')
+ return fonction
def clean_membre_reseau_institutionnel_dates(self):
membre = self.cleaned_data.get('membre_reseau_institutionnel')
def order_by_pays(self, direction=''):
return self.get_query_set().order_by_pays(self, direction=direction)
-STATUT_CHOICES = (('enseignant', 'Enseignant-chercheur dans un établissement'), ('etudiant', 'Étudiant-chercheur doctorant'), ('independant', 'Chercheur indépendant docteur'))
+STATUT_CHOICES = (
+ ('enseignant', 'Enseignant-chercheur dans un établissement'),
+ ('etudiant', 'Étudiant-chercheur doctorant'),
+ ('independant', 'Chercheur indépendant docteur')
+)
+
class Chercheur(Personne):
+ RESEAU_INSTITUTIONNEL_CHOICES = (
+ ('AFELSH', 'Association des facultés ou établissements de lettres et sciences humaines des universités d’expression française (AFELSH)'),
+ ('CIDEGEF', 'Conférence internationale des dirigeants des institutions d’enseignement supérieur et de recherche de gestion d’expression française (CIDEGEF)'),
+ ('RIFEFF', 'Réseau international francophone des établissements de formation de formateurs (RIFEFF)'),
+ ('CIDMEF', 'Conférence internationale des doyens des facultés de médecine d’expression française (CIDMEF)'),
+ ('CIDCDF', 'Conférence internationale des doyens des facultés de chirurgie dentaire d’expression totalement ou partiellement française (CIDCDF)'),
+ ('CIFDUF', 'Conférence internationale des facultés de droit ayant en commun l’usage du français (CIFDUF)'),
+ ('CIRUISEF', 'Conférence internationale des responsables des universités et institutions à dominante scientifique et technique d’expression française (CIRUISEF)'),
+ ('Theophraste', 'Réseau Théophraste (Réseau de centres francophones de formation au journalisme)'),
+ ('CIDPHARMEF', 'Conférence internationale des doyens des facultés de pharmacie d’expression française (CIDPHARMEF)'),
+ ('CIDEFA', 'Conférence internationale des directeurs et doyens des établissements supérieurs d’expression française des sciences de l’agriculture et de l’alimentation (CIDEFA)'),
+ ('CITEF', 'Conférence internationale des formations d’ingénieurs et techniciens d’expression française (CITEF)'),
+ ('APERAU', 'Association pour la promotion de l’enseignement et de la recherche en aménagement et urbanisme (APERAU)'),
+ )
+ INSTANCE_AUF_CHOICES = (
+ ('CASSOC', 'Conseil associatif'),
+ ('CA', "Conseil d'administration"),
+ ('CS', 'Conseil scientifique'),
+ ('CRE', "Commission régionale d'experts")
+ )
+
nationalite = models.ForeignKey(Pays, null = True, db_column='nationalite', to_field='code',
verbose_name = 'nationalité', related_name='nationalite')
statut = models.CharField(max_length=36, choices=STATUT_CHOICES)
# Activités en francophonie
membre_instance_auf = models.BooleanField(default=False, verbose_name="est ou a déjà été membre d'une instance de l'AUF")
- membre_instance_auf_details = models.CharField(max_length=255, blank=True, verbose_name="détails")
+ membre_instance_auf_nom = models.CharField(max_length=10, blank=True, choices=INSTANCE_AUF_CHOICES, verbose_name="instance")
+ membre_instance_auf_fonction = models.CharField(max_length=255, blank=True, verbose_name="fonction")
membre_instance_auf_dates = models.CharField(max_length=255, blank=True, verbose_name="dates")
expert_oif = models.BooleanField(default=False, verbose_name="a été sollicité par l'OIF")
expert_oif_details = models.CharField(max_length=255, blank=True, verbose_name="détails")
membre_association_francophone = models.BooleanField(default=False, verbose_name="est membre d'une association francophone")
membre_association_francophone_details = models.CharField(max_length=255, blank=True, verbose_name="nom de l'association")
membre_reseau_institutionnel = models.BooleanField(
- default=False, verbose_name="a fait partie des instances d'un réseau institutionnel de l'AUF"
+ default=False, verbose_name="est membre des instances d'un réseau institutionnel de l'AUF"
+ )
+ membre_reseau_institutionnel_nom = models.CharField(
+ max_length=15, choices=RESEAU_INSTITUTIONNEL_CHOICES, blank=True,
+ verbose_name="réseau institutionnel"
)
- membre_reseau_institutionnel_details = models.CharField(
- max_length=255, blank=True, verbose_name="instances et fonction"
+ membre_reseau_institutionnel_fonction = models.CharField(
+ max_length=255, blank=True, verbose_name="fonction"
)
membre_reseau_institutionnel_dates = models.CharField(
max_length=255, blank=True, verbose_name="dates"
--- /dev/null
+ALTER TABLE `chercheurs_chercheur`
+ ADD COLUMN `membre_reseau_institutionnel_nom` varchar(15) NOT NULL,
+ CHANGE COLUMN membre_reseau_institutionnel_details `membre_reseau_institutionnel_fonction` varchar(255) NOT NULL;
+
+ALTER TABLE `chercheurs_chercheur`
+ ADD COLUMN `membre_instance_auf_nom` varchar(10) NOT NULL,
+ CHANGE COLUMN membre_instance_auf_details `membre_instance_auf_fonction` varchar(255) NOT NULL;
<fieldset>
<table>
{% form_field forms.chercheur.membre_instance_auf %}
- {% form_field forms.chercheur.membre_instance_auf_details %}
+ {% form_field forms.chercheur.membre_instance_auf_nom %}
+ {% form_field forms.chercheur.membre_instance_auf_fonction %}
{% form_field forms.chercheur.membre_instance_auf_dates %}
</table>
</fieldset>
<fieldset>
<table>
{% form_field forms.chercheur.membre_reseau_institutionnel %}
- {% form_field forms.chercheur.membre_reseau_institutionnel_details %}
+ {% form_field forms.chercheur.membre_reseau_institutionnel_nom %}
+ {% form_field forms.chercheur.membre_reseau_institutionnel_fonction %}
{% form_field forms.chercheur.membre_reseau_institutionnel_dates %}
</table>
</fieldset>
{% if chercheur.membre_instance_auf %}
<tr>
<td class="label">Membre d'une instance de l'AUF</td>
- <td>{{ chercheur.membre_instance_auf_details }}, {{ chercheur.membre_instance_auf_dates }}</td>
+ <td>
+ {{ chercheur.get_membre_instance_auf_nom_display }},
+ {{ chercheur.membre_instance_auf_fonction }},
+ {{ chercheur.membre_instance_auf_dates }}
+ </td>
</tr>
{% endif %}
{% if chercheur.expert_oif %}
{% if chercheur.membre_reseau_institutionnel %}
<tr>
<td class="label">Membre d'instances d'un réseau institutionnel de l'AUF</td>
- <td>{{ chercheur.membre_reseau_institutionnel_details }},
- {{ chercheur.membre_reseau_institutionnel_dates }}</td>
+ <td>
+ {{ chercheur.get_membre_reseau_institutionnel_nom_display }},
+ {{ chercheur.membre_reseau_institutionnel_fonction }},
+ {{ chercheur.membre_reseau_institutionnel_dates }}
+ </td>
</tr>
{% endif %}
</table>