Reformatage #29

Closed
thubrecht wants to merge 19 commits from thubrecht/python3 into master
7 changed files with 360 additions and 360 deletions
Showing only changes of commit 56bc3a701e - Show all commits

View file

@ -30,20 +30,20 @@ class HTMLTrimmerForm(forms.ModelForm):
class StageForm(forms.ModelForm): class StageForm(forms.ModelForm):
date_widget = forms.DateInput(attrs={"class":"datepicker", date_widget = forms.DateInput(attrs={"class":"datepicker",
"placeholder":"JJ/MM/AAAA"}) "placeholder":"JJ/MM/AAAA"})
date_debut = forms.DateField(label=u"Date de début", date_debut = forms.DateField(label="Date de début",
input_formats=["%d/%m/%Y"], widget=date_widget) input_formats=["%d/%m/%Y"], widget=date_widget)
date_fin = forms.DateField(label=u"Date de fin", date_fin = forms.DateField(label="Date de fin",
input_formats=["%d/%m/%Y"], widget=date_widget) input_formats=["%d/%m/%Y"], widget=date_widget)
class Meta: class Meta:
model = Stage model = Stage
fields = ['sujet', 'date_debut', 'date_fin', 'type_stage', 'niveau_scol', 'thematiques', 'matieres', 'structure', 'encadrants'] fields = ['sujet', 'date_debut', 'date_fin', 'type_stage', 'niveau_scol', 'thematiques', 'matieres', 'structure', 'encadrants']
help_texts = { help_texts = {
"thematiques": u"Mettez une virgule pour valider votre thématique si la suggestion ne correspond pas ou si elle n'existe pas encore", "thematiques": "Mettez une virgule pour valider votre thématique si la suggestion ne correspond pas ou si elle n'existe pas encore",
"structure": u"Nom de l'équipe, du laboratoire, de la startup... (si le lieu ne suffit pas)" "structure": "Nom de l'équipe, du laboratoire, de la startup... (si le lieu ne suffit pas)"
} }
labels = { labels = {
"date_debut": u"Date de début", "date_debut": "Date de début",
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@ -71,13 +71,13 @@ class AvisStageForm(HTMLTrimmerForm):
model = AvisStage model = AvisStage
fields = ['chapo', 'avis_sujet', 'avis_ambiance', 'avis_admin', 'avis_prestage', 'les_plus', 'les_moins'] fields = ['chapo', 'avis_sujet', 'avis_ambiance', 'avis_admin', 'avis_prestage', 'les_plus', 'les_moins']
help_texts = { help_texts = {
"chapo": u"\"Trop long, pas lu\" : une accroche résumant ce que vous avez pensé de ce séjour", "chapo": "\"Trop long, pas lu\" : une accroche résumant ce que vous avez pensé de ce séjour",
"avis_ambiance": u"Avez-vous passé un bon moment à ce travail ? Étiez-vous assez guidé⋅e ? Aviez-vous un bon contact avec vos encadrant⋅e⋅s ? Y avait-il une bonne ambiance dans l'équipe ?", "avis_ambiance": "Avez-vous passé un bon moment à ce travail ? Étiez-vous assez guidé⋅e ? Aviez-vous un bon contact avec vos encadrant⋅e⋅s ? Y avait-il une bonne ambiance dans l'équipe ?",
"avis_sujet": u"Quelle était votre mission ? Qu'en avez-vous retiré ? Le travail correspondait-il à vos attentes ? Était-ce à votre niveau, trop dur, trop facile ?", "avis_sujet": "Quelle était votre mission ? Qu'en avez-vous retiré ? Le travail correspondait-il à vos attentes ? Était-ce à votre niveau, trop dur, trop facile ?",
"avis_admin": u"Avez-vous commencé votre travail à la date prévue ? Était-ce compliqué d'obtenir les documents nécessaires (visa, contrats, etc) ? L'administration de l'établissement vous a-t-elle aidé⋅e ? Étiez-vous rémunéré⋅e ?", "avis_admin": "Avez-vous commencé votre travail à la date prévue ? Était-ce compliqué d'obtenir les documents nécessaires (visa, contrats, etc) ? L'administration de l'établissement vous a-t-elle aidé⋅e ? Étiez-vous rémunéré⋅e ?",
"avis_prestage": u"Comment avez-vous trouvé où aller pour cette expérience ? À quel moment avez-vous commencé à chercher ? Avez-vous eu des entretiens pour obtenir votre place ? Avez-vous eu d'autres pistes, pourquoi avez-vous choisi cette option ?", "avis_prestage": "Comment avez-vous trouvé où aller pour cette expérience ? À quel moment avez-vous commencé à chercher ? Avez-vous eu des entretiens pour obtenir votre place ? Avez-vous eu d'autres pistes, pourquoi avez-vous choisi cette option ?",
"les_plus": u"Les principaux points positifs de cette expérience", "les_plus": "Les principaux points positifs de cette expérience",
"les_moins": u"Ce qui aurait pu être mieux", "les_moins": "Ce qui aurait pu être mieux",
} }
class AvisLieuForm(HTMLTrimmerForm): class AvisLieuForm(HTMLTrimmerForm):
@ -85,12 +85,12 @@ class AvisLieuForm(HTMLTrimmerForm):
model = AvisLieu model = AvisLieu
fields = ['lieu', 'chapo', 'avis_lieustage', 'avis_pratique', 'avis_tourisme', 'les_plus', 'les_moins'] fields = ['lieu', 'chapo', 'avis_lieustage', 'avis_pratique', 'avis_tourisme', 'les_plus', 'les_moins']
help_texts = { help_texts = {
"chapo": u"\"Trop long, pas lu\" : une accroche résumant ce que vous avez pensé de cet endroit", "chapo": "\"Trop long, pas lu\" : une accroche résumant ce que vous avez pensé de cet endroit",
"avis_lieustage": u"Qu'avez-vous pensé des lieux où vous travailliez ? Les bâtiments étaient-ils modernes ? Était-il agréable d'y travailler ?", "avis_lieustage": "Qu'avez-vous pensé des lieux où vous travailliez ? Les bâtiments étaient-ils modernes ? Était-il agréable d'y travailler ?",
"avis_pratique": u"Avez-vous eu du mal à trouver un logement ? Y-a-t-il des choses que vous avez apprises sur place qu'il vous aurait été utile de savoir avant de partir ?", "avis_pratique": "Avez-vous eu du mal à trouver un logement ? Y-a-t-il des choses que vous avez apprises sur place qu'il vous aurait été utile de savoir avant de partir ?",
"avis_tourisme": u"Y-a-t-il des lieux à visiter dans cette zone ? Avez-vous pratiqué des activités sportives ? Est-il facile de faire des rencontres ?", "avis_tourisme": "Y-a-t-il des lieux à visiter dans cette zone ? Avez-vous pratiqué des activités sportives ? Est-il facile de faire des rencontres ?",
"les_plus": u"Les meilleures raisons de partir à cet endroit", "les_plus": "Les meilleures raisons de partir à cet endroit",
"les_moins": u"Ce qui vous a gêné ou manqué là-bas", "les_moins": "Ce qui vous a gêné ou manqué là-bas",
} }
widgets = { widgets = {
"lieu": forms.HiddenInput(attrs={"class":"lieu-hidden"}) "lieu": forms.HiddenInput(attrs={"class":"lieu-hidden"})

View file

@ -20,7 +20,7 @@ class Command(BaseCommand):
if options.get('apply', False): if options.get('apply', False):
rundb = True rundb = True
else: else:
print(u"Les modifications ne seront pas appliquées") print("Les modifications ne seront pas appliquées")
min_lieu = options.get('min_lieu', 0) min_lieu = options.get('min_lieu', 0)
@ -28,16 +28,16 @@ class Command(BaseCommand):
lproches = Lieu.objects.filter(id__lt=lieu.id, coord__distance_lte=(lieu.coord, 5)) lproches = Lieu.objects.filter(id__lt=lieu.id, coord__distance_lte=(lieu.coord, 5))
if len(lproches) == 0: if len(lproches) == 0:
continue continue
print(u"Doublons possibles pour %s (id=%d, %d avis) :" % (lieu, lieu.id, lieu.avislieu_set.count())) print("Doublons possibles pour %s (id=%d, %d avis) :" % (lieu, lieu.id, lieu.avislieu_set.count()))
for plieu in lproches: for plieu in lproches:
pprint = u" > %s (id=%d, %d avis)" % (plieu, plieu.id, plieu.avislieu_set.count()) pprint = " > %s (id=%d, %d avis)" % (plieu, plieu.id, plieu.avislieu_set.count())
if plieu.nom == lieu.nom and plieu.ville == lieu.ville and plieu.type_lieu == lieu.type_lieu: if plieu.nom == lieu.nom and plieu.ville == lieu.ville and plieu.type_lieu == lieu.type_lieu:
print(u"%s %s" % (pprint, self.style.SUCCESS(u'-> Suppression'))) print("%s %s" % (pprint, self.style.SUCCESS(u'-> Suppression')))
if rundb: if rundb:
for avis in plieu.avislieu_set.all(): for avis in plieu.avislieu_set.all():
avis.lieu = lieu avis.lieu = lieu
avis.save() avis.save()
plieu.delete() plieu.delete()
else: else:
print(u"%s %s" % (pprint, self.style.WARNING(u'-> À supprimer manuellement'))) print("%s %s" % (pprint, self.style.WARNING(u'-> À supprimer manuellement')))
self.stdout.write(self.style.SUCCESS(u'Nettoyage des lieux effectué')) self.stdout.write(self.style.SUCCESS(u'Nettoyage des lieux effectué'))

View file

@ -30,7 +30,7 @@ class Command(BaseCommand):
if options.get('apply', False): if options.get('apply', False):
rundb = True rundb = True
else: else:
print(u"Les modifications ne seront pas appliquées") print("Les modifications ne seront pas appliquées")
min_stage = options.get('min_stage', 0) min_stage = options.get('min_stage', 0)
@ -52,15 +52,15 @@ class Command(BaseCommand):
problems += [(avis, alen), lieuset[aid]] problems += [(avis, alen), lieuset[aid]]
lieuset[aid] = (avis, alen) lieuset[aid] = (avis, alen)
if len(todel) > 0: if len(todel) > 0:
print(u"Doublons détectés dans %s" % (stage,)) print("Doublons détectés dans %s" % (stage,))
for avis, alen in todel: for avis, alen in todel:
print(u" > Suppression de l'avis sur %s de %d mots" % \ print(" > Suppression de l'avis sur %s de %d mots" % \
(avis.lieu, alen)) (avis.lieu, alen))
if rundb: if rundb:
avis.delete() avis.delete()
if len(problems) > 0: if len(problems) > 0:
self.stdout.write(self.style.WARNING(u"Réparation impossible de %s (id=%d)" % (stage, stage.id))) self.stdout.write(self.style.WARNING("Réparation impossible de %s (id=%d)" % (stage, stage.id)))
for avis, alen in problems: for avis, alen in problems:
print(u" > Avis sur %s de %d mots" % \ print(" > Avis sur %s de %d mots" % \
(avis.lieu, alen)) (avis.lieu, alen))
self.stdout.write(self.style.SUCCESS(u'Nettoyage des stages effectué')) self.stdout.write(self.style.SUCCESS(u'Nettoyage des stages effectué'))

View file

@ -21,12 +21,12 @@ class Command(BaseCommand):
if options.get('apply', False): if options.get('apply', False):
rundb = True rundb = True
else: else:
print(u"Les modifications ne seront pas appliquées") print("Les modifications ne seront pas appliquées")
plieu = Lieu.objects.get(id=options['del_lieu']) plieu = Lieu.objects.get(id=options['del_lieu'])
lieu = Lieu.objects.get(id=options['repl_lieu']) lieu = Lieu.objects.get(id=options['repl_lieu'])
print(u"Suppression de %s (id=%d, %d avis)" % (plieu, plieu.id, plieu.avislieu_set.count())) print("Suppression de %s (id=%d, %d avis)" % (plieu, plieu.id, plieu.avislieu_set.count()))
print(u"Remplacement par %s (id=%d, %d avis)" % (lieu, lieu.id, lieu.avislieu_set.count())) print("Remplacement par %s (id=%d, %d avis)" % (lieu, lieu.id, lieu.avislieu_set.count()))
if rundb: if rundb:
for avis in plieu.avislieu_set.all(): for avis in plieu.avislieu_set.all():
avis.lieu = lieu avis.lieu = lieu

View file

@ -36,20 +36,20 @@ class Normalien(models.Model):
on_delete=models.SET_NULL, null=True) on_delete=models.SET_NULL, null=True)
# Infos spécifiques # Infos spécifiques
nom = models.CharField(u"Nom complet", max_length=255, blank=True) nom = models.CharField("Nom complet", max_length=255, blank=True)
promotion = models.CharField(u"Promotion", max_length=40, blank=True) promotion = models.CharField("Promotion", max_length=40, blank=True)
contactez_moi = models.BooleanField( contactez_moi = models.BooleanField(
u"Inviter les visiteurs à me contacter", "Inviter les visiteurs à me contacter",
default=True, help_text="Affiche votre adresse e-mail principale sur votre profil public") default=True, help_text="Affiche votre adresse e-mail principale sur votre profil public")
bio = models.TextField(u"À propos de moi", blank=True, default="") bio = models.TextField("À propos de moi", blank=True, default="")
last_cas_login = models.DateField(default=_default_cas_login) last_cas_login = models.DateField(default=_default_cas_login)
class Meta: class Meta:
verbose_name = u"Profil élève" verbose_name = "Profil élève"
verbose_name_plural = u"Profils élèves" verbose_name_plural = "Profils élèves"
def __str__(self): def __str__(self):
return u"%s (%s)" % (self.nom, self.user.username) return "%s (%s)" % (self.nom, self.user.username)
# Liste des stages publiés # Liste des stages publiés
def stages_publics(self): def stages_publics(self):
@ -122,23 +122,23 @@ post_cas_connect.connect(handle_cas_connection, sender=User)
class Lieu(models.Model): class Lieu(models.Model):
# Général # Général
nom = models.CharField(u"Nom de l'institution d'accueil", nom = models.CharField("Nom de l'institution d'accueil",
max_length=250) max_length=250)
type_lieu = models.CharField(u"Type de structure d'accueil", type_lieu = models.CharField("Type de structure d'accueil",
default="universite", default="universite",
choices=TYPE_LIEU_OPTIONS, choices=TYPE_LIEU_OPTIONS,
max_length=choices_length(TYPE_LIEU_OPTIONS)) max_length=choices_length(TYPE_LIEU_OPTIONS))
# Infos géographiques # Infos géographiques
ville = models.CharField(u"Ville", ville = models.CharField("Ville",
max_length=200) max_length=200)
pays = models.CharField(u"Pays", pays = models.CharField("Pays",
choices=PAYS_OPTIONS, choices=PAYS_OPTIONS,
max_length=choices_length(PAYS_OPTIONS)) max_length=choices_length(PAYS_OPTIONS))
# Coordonnées # Coordonnées
#objects = geomodels.GeoManager() # Requis par GeoDjango #objects = geomodels.GeoManager() # Requis par GeoDjango
coord = geomodels.PointField(u"Coordonnées", coord = geomodels.PointField("Coordonnées",
geography=True, geography=True,
srid = 4326) srid = 4326)
@ -152,7 +152,7 @@ class Lieu(models.Model):
return TYPE_LIEU_DICT.get(self.type_lieu, ("lieu", False))[1] return TYPE_LIEU_DICT.get(self.type_lieu, ("lieu", False))[1]
def __str__(self): def __str__(self):
return u"%s (%s)" % (self.nom, self.ville) return "%s (%s)" % (self.nom, self.ville)
class Meta: class Meta:
verbose_name = "Lieu" verbose_name = "Lieu"
@ -163,7 +163,7 @@ class Lieu(models.Model):
# #
class StageMatiere(models.Model): class StageMatiere(models.Model):
nom = models.CharField(u"Nom", max_length=30) nom = models.CharField("Nom", max_length=30)
slug = models.SlugField() slug = models.SlugField()
class Meta: class Meta:
@ -181,32 +181,32 @@ class Stage(models.Model):
# Misc # Misc
auteur = models.ForeignKey(Normalien, related_name="stages", auteur = models.ForeignKey(Normalien, related_name="stages",
on_delete=models.SET_NULL, null=True) on_delete=models.SET_NULL, null=True)
public = models.BooleanField(u"Visible publiquement", default=False) public = models.BooleanField("Visible publiquement", default=False)
date_creation = models.DateTimeField(u"Créé le", default=timezone.now) date_creation = models.DateTimeField("Créé le", default=timezone.now)
date_maj = models.DateTimeField(u"Mis à jour le", default=timezone.now) date_maj = models.DateTimeField("Mis à jour le", default=timezone.now)
len_avis_stage = models.IntegerField(u"Longueur des avis de stage", default=0) len_avis_stage = models.IntegerField("Longueur des avis de stage", default=0)
len_avis_lieux = models.IntegerField(u"Longueur des avis de lieu", default=0) len_avis_lieux = models.IntegerField("Longueur des avis de lieu", default=0)
# Caractéristiques du stage # Caractéristiques du stage
sujet = models.CharField(u"Sujet", max_length=500) sujet = models.CharField("Sujet", max_length=500)
date_debut = models.DateField(u"Date de début", null=True) date_debut = models.DateField("Date de début", null=True)
date_fin = models.DateField(u"Date de fin", null=True) date_fin = models.DateField("Date de fin", null=True)
type_stage = models.CharField(u"Type", type_stage = models.CharField("Type",
default="stage", default="stage",
choices=TYPE_STAGE_OPTIONS, choices=TYPE_STAGE_OPTIONS,
max_length=choices_length(TYPE_STAGE_OPTIONS)) max_length=choices_length(TYPE_STAGE_OPTIONS))
niveau_scol = models.CharField(u"Année de scolarité", niveau_scol = models.CharField("Année de scolarité",
default="", default="",
choices=NIVEAU_SCOL_OPTIONS, choices=NIVEAU_SCOL_OPTIONS,
max_length=choices_length(NIVEAU_SCOL_OPTIONS), max_length=choices_length(NIVEAU_SCOL_OPTIONS),
blank=True) blank=True)
thematiques = TaggableManager(u"Thématiques", blank=True) thematiques = TaggableManager("Thématiques", blank=True)
matieres = models.ManyToManyField(StageMatiere, verbose_name=u"Matière(s)", related_name="stages") matieres = models.ManyToManyField(StageMatiere, verbose_name="Matière(s)", related_name="stages")
encadrants = models.CharField(u"Encadrant⋅e⋅s", max_length=500, blank=True) encadrants = models.CharField("Encadrant⋅e⋅s", max_length=500, blank=True)
structure = models.CharField(u"Structure d'accueil", max_length=500, blank=True) structure = models.CharField("Structure d'accueil", max_length=500, blank=True)
# Avis # Avis
lieux = models.ManyToManyField(Lieu, related_name="stages", lieux = models.ManyToManyField(Lieu, related_name="stages",
@ -247,7 +247,7 @@ class Stage(models.Model):
return reverse('avisstage:stage', self) return reverse('avisstage:stage', self)
def __str__(self): def __str__(self):
return u"%s (par %s)" % (self.sujet, self.auteur.user.username) return "%s (par %s)" % (self.sujet, self.auteur.user.username)
def update_stats(self, save=True): def update_stats(self, save=True):
def get_len(obj): def get_len(obj):
@ -280,17 +280,17 @@ class AvisStage(models.Model):
stage = models.OneToOneField(Stage, related_name="avis_stage", stage = models.OneToOneField(Stage, related_name="avis_stage",
on_delete=models.CASCADE) on_delete=models.CASCADE)
chapo = models.TextField(u"En quelques mots", blank=True) chapo = models.TextField("En quelques mots", blank=True)
avis_ambiance = RichTextField(u"L'ambiance de travail", blank=True) avis_ambiance = RichTextField("L'ambiance de travail", blank=True)
avis_sujet = RichTextField(u"La mission", blank=True) avis_sujet = RichTextField("La mission", blank=True)
avis_admin = RichTextField(u"Formalités et administration", blank=True) avis_admin = RichTextField("Formalités et administration", blank=True)
avis_prestage = RichTextField(u"Avant le stage", blank=True, default="") avis_prestage = RichTextField("Avant le stage", blank=True, default="")
les_plus = models.TextField(u"Les plus de cette expérience", blank=True) les_plus = models.TextField("Les plus de cette expérience", blank=True)
les_moins = models.TextField(u"Les moins de cette expérience", blank=True) les_moins = models.TextField("Les moins de cette expérience", blank=True)
def __str__(self): def __str__(self):
return u"Avis sur {%s} par %s" % (self.stage.sujet, self.stage.auteur.user.username) return "Avis sur {%s} par %s" % (self.stage.sujet, self.stage.auteur.user.username)
# Liste des champs d'avis, couplés à leur nom (pour l'affichage) # Liste des champs d'avis, couplés à leur nom (pour l'affichage)
@property @property
@ -305,21 +305,21 @@ class AvisLieu(models.Model):
lieu = models.ForeignKey(Lieu, on_delete=models.CASCADE) lieu = models.ForeignKey(Lieu, on_delete=models.CASCADE)
order = models.IntegerField("Ordre", default=0) order = models.IntegerField("Ordre", default=0)
chapo = models.TextField(u"En quelques mots", blank=True) chapo = models.TextField("En quelques mots", blank=True)
avis_lieustage = RichTextField(u"Les lieux de travail", blank=True) avis_lieustage = RichTextField("Les lieux de travail", blank=True)
avis_pratique = RichTextField(u"S'installer - conseils pratiques", avis_pratique = RichTextField("S'installer - conseils pratiques",
blank=True) blank=True)
avis_tourisme = RichTextField(u"Dans les parages", blank=True) avis_tourisme = RichTextField("Dans les parages", blank=True)
les_plus = models.TextField(u"Les plus du lieu", blank=True) les_plus = models.TextField("Les plus du lieu", blank=True)
les_moins = models.TextField(u"Les moins du lieu", blank=True) les_moins = models.TextField("Les moins du lieu", blank=True)
class Meta: class Meta:
verbose_name = "Avis sur un lieu de stage" verbose_name = "Avis sur un lieu de stage"
verbose_name_plural = "Avis sur un lieu de stage" verbose_name_plural = "Avis sur un lieu de stage"
def __str__(self): def __str__(self):
return u"Avis sur {%s} par %s" % (self.lieu.nom, self.stage.auteur.user_id) return "Avis sur {%s} par %s" % (self.lieu.nom, self.stage.auteur.user_id)
# Liste des champs d'avis, couplés à leur nom (pour l'affichage) # Liste des champs d'avis, couplés à leur nom (pour l'affichage)
@property @property

View file

@ -15,316 +15,316 @@ DEPARTEMENTS_DEFAUT = (
TYPE_STAGE_OPTIONS = ( TYPE_STAGE_OPTIONS = (
(u'Recherche :', ( (u'Recherche :', (
('recherche', u"Stage académique"), ('recherche', "Stage académique"),
('recherche_autre', u"Stage non-académique"), ('recherche_autre', "Stage non-académique"),
('sejour_dri', u"Séjour de recherche DRI"), ('sejour_dri', "Séjour de recherche DRI"),
)), )),
(u'Stage sans visée de recherche :', ( (u'Stage sans visée de recherche :', (
('pro', u"Stage en entreprise"), ('pro', "Stage en entreprise"),
('admin', u"Stage en admin./ONG/orga. internationale"), ('admin', "Stage en admin./ONG/orga. internationale"),
)), )),
(u'Enseignement :', ( (u'Enseignement :', (
('lectorat', u"Lectorat DRI"), ('lectorat', "Lectorat DRI"),
('autre_teach', u"Autre expérience d'enseignement"), ('autre_teach', "Autre expérience d'enseignement"),
)), )),
('autre', u"Autre"), ('autre', "Autre"),
) )
# Dictionnaire des type de stage (et de leur genre, True=féminin) # Dictionnaire des type de stage (et de leur genre, True=féminin)
TYPE_STAGE_DICT = { TYPE_STAGE_DICT = {
'recherche': (u"stage de recherche académique", False), 'recherche': ("stage de recherche académique", False),
'recherche_autre': (u"stage de recherche non-académique", False), 'recherche_autre': ("stage de recherche non-académique", False),
'sejour_dri': (u"séjour de recherche DRI", False), 'sejour_dri': ("séjour de recherche DRI", False),
'pro': (u"stage en entreprise sans visée de recherche", False), 'pro': ("stage en entreprise sans visée de recherche", False),
'admin': (u"stage en administration, ONG ou organisation internationale", False), 'admin': ("stage en administration, ONG ou organisation internationale", False),
'lectorat': (u"lectorat DRI", False), 'lectorat': ("lectorat DRI", False),
'autre_teach': (u"expérience de recherche", True), 'autre_teach': ("expérience de recherche", True),
'autre': (u"expérience", True), 'autre': ("expérience", True),
} }
TYPE_LIEU_OPTIONS = ( TYPE_LIEU_OPTIONS = (
('universite', u"Université"), ('universite', "Université"),
('entreprise', u"Entreprise"), ('entreprise', "Entreprise"),
('centrerecherche', u"Centre de recherche"), ('centrerecherche', "Centre de recherche"),
('administration', u"Administration"), ('administration', "Administration"),
('autre', u"Autre"), ('autre', "Autre"),
) )
# Place du stage dans le cursus # Place du stage dans le cursus
NIVEAU_SCOL_OPTIONS = ( NIVEAU_SCOL_OPTIONS = (
('L3', u"Licence 3"), ('L3', "Licence 3"),
('M1', u"Master 1"), ('M1', "Master 1"),
('M2', u"Master 2"), ('M2', "Master 2"),
('DOC', u"Pré-doctorat"), ('DOC', "Pré-doctorat"),
('CST', u"Césure"), ('CST', "Césure"),
('BLA', u"Année blanche"), ('BLA', "Année blanche"),
('VAC', u"Vacances scolaires"), ('VAC', "Vacances scolaires"),
('MIT', u"Mi-temps en parallèle des études"), ('MIT', "Mi-temps en parallèle des études"),
('', u"Autre"), ('', "Autre"),
) )
NIVEAU_SCOL_DICT = { NIVEAU_SCOL_DICT = {
"L3": u"pendant sa troisième année de Licence", "L3": "pendant sa troisième année de Licence",
"M1": u"pendant sa première année de Master", "M1": "pendant sa première année de Master",
"M2": u"pendant sa deuxième année de Master", "M2": "pendant sa deuxième année de Master",
"DOC": u"pendant son année de pré-doctorat", "DOC": "pendant son année de pré-doctorat",
"CST": u"pendant une année de césure", "CST": "pendant une année de césure",
"BLA": u"pendant une année blanche", "BLA": "pendant une année blanche",
"VAC": u"pendant des vacances scolaires", "VAC": "pendant des vacances scolaires",
"MIT": u"à mi-temps en parallèle des études", "MIT": "à mi-temps en parallèle des études",
} }
# Dictionnaire des noms de lieux (et de leur genre, True=féminin) # Dictionnaire des noms de lieux (et de leur genre, True=féminin)
TYPE_LIEU_DICT = { TYPE_LIEU_DICT = {
'universite': (u"université", True), 'universite': ("université", True),
'entreprise': (u"entreprise", True), 'entreprise': ("entreprise", True),
'centrerecherche': (u"centre de recherche", False), 'centrerecherche': ("centre de recherche", False),
'administration': (u"administration", True), 'administration': ("administration", True),
'autre': (u"lieu", False), 'autre': ("lieu", False),
} }
PAYS_OPTIONS = ( PAYS_OPTIONS = (
("AF", u"Afghanistan"), ("AF", "Afghanistan"),
("AL", u"Albanie"), ("AL", "Albanie"),
("AQ", u"Antarctique"), ("AQ", "Antarctique"),
("DZ", u"Algérie"), ("DZ", "Algérie"),
("AS", u"Samoa Américaines"), ("AS", "Samoa Américaines"),
("AD", u"Andorre"), ("AD", "Andorre"),
("AO", u"Angola"), ("AO", "Angola"),
("AG", u"Antigua-et-Barbuda"), ("AG", "Antigua-et-Barbuda"),
("AZ", u"Azerbaïdjan"), ("AZ", "Azerbaïdjan"),
("AR", u"Argentine"), ("AR", "Argentine"),
("AU", u"Australie"), ("AU", "Australie"),
("AT", u"Autriche"), ("AT", "Autriche"),
("BS", u"Bahamas"), ("BS", "Bahamas"),
("BH", u"Bahreïn"), ("BH", "Bahreïn"),
("BD", u"Bangladesh"), ("BD", "Bangladesh"),
("AM", u"Arménie"), ("AM", "Arménie"),
("BB", u"Barbade"), ("BB", "Barbade"),
("BE", u"Belgique"), ("BE", "Belgique"),
("BM", u"Bermudes"), ("BM", "Bermudes"),
("BT", u"Bhoutan"), ("BT", "Bhoutan"),
("BO", u"Bolivie"), ("BO", "Bolivie"),
("BA", u"Bosnie-Herzégovine"), ("BA", "Bosnie-Herzégovine"),
("BW", u"Botswana"), ("BW", "Botswana"),
("BV", u"Île Bouvet"), ("BV", "Île Bouvet"),
("BR", u"Brésil"), ("BR", "Brésil"),
("BZ", u"Belize"), ("BZ", "Belize"),
("IO", u"Territoire Britannique de l'Océan Indien"), ("IO", "Territoire Britannique de l'Océan Indien"),
("SB", u"Îles Salomon"), ("SB", "Îles Salomon"),
("VG", u"Îles Vierges Britanniques"), ("VG", "Îles Vierges Britanniques"),
("BN", u"Brunéi Darussalam"), ("BN", "Brunéi Darussalam"),
("BG", u"Bulgarie"), ("BG", "Bulgarie"),
("MM", u"Myanmar"), ("MM", "Myanmar"),
("BI", u"Burundi"), ("BI", "Burundi"),
("BY", u"Bélarus"), ("BY", "Bélarus"),
("KH", u"Cambodge"), ("KH", "Cambodge"),
("CM", u"Cameroun"), ("CM", "Cameroun"),
("CA", u"Canada"), ("CA", "Canada"),
("CV", u"Cap-vert"), ("CV", "Cap-vert"),
("KY", u"Îles Caïmanes"), ("KY", "Îles Caïmanes"),
("CF", u"République Centrafricaine"), ("CF", "République Centrafricaine"),
("LK", u"Sri Lanka"), ("LK", "Sri Lanka"),
("TD", u"Tchad"), ("TD", "Tchad"),
("CL", u"Chili"), ("CL", "Chili"),
("CN", u"Chine"), ("CN", "Chine"),
("TW", u"Taïwan"), ("TW", "Taïwan"),
("CX", u"Île Christmas"), ("CX", "Île Christmas"),
("CC", u"Îles Cocos (Keeling)"), ("CC", "Îles Cocos (Keeling)"),
("CO", u"Colombie"), ("CO", "Colombie"),
("KM", u"Comores"), ("KM", "Comores"),
("YT", u"Mayotte"), ("YT", "Mayotte"),
("CG", u"République du Congo"), ("CG", "République du Congo"),
("CD", u"République Démocratique du Congo"), ("CD", "République Démocratique du Congo"),
("CK", u"Îles Cook"), ("CK", "Îles Cook"),
("CR", u"Costa Rica"), ("CR", "Costa Rica"),
("HR", u"Croatie"), ("HR", "Croatie"),
("CU", u"Cuba"), ("CU", "Cuba"),
("CY", u"Chypre"), ("CY", "Chypre"),
("CZ", u"République Tchèque"), ("CZ", "République Tchèque"),
("BJ", u"Bénin"), ("BJ", "Bénin"),
("DK", u"Danemark"), ("DK", "Danemark"),
("DM", u"Dominique"), ("DM", "Dominique"),
("DO", u"République Dominicaine"), ("DO", "République Dominicaine"),
("EC", u"Équateur"), ("EC", "Équateur"),
("SV", u"El Salvador"), ("SV", "El Salvador"),
("GQ", u"Guinée Équatoriale"), ("GQ", "Guinée Équatoriale"),
("ET", u"Éthiopie"), ("ET", "Éthiopie"),
("ER", u"Érythrée"), ("ER", "Érythrée"),
("EE", u"Estonie"), ("EE", "Estonie"),
("FO", u"Îles Féroé"), ("FO", "Îles Féroé"),
("FK", u"Îles (malvinas) Falkland"), ("FK", "Îles (malvinas) Falkland"),
("GS", u"Géorgie du Sud et les Îles Sandwich du Sud"), ("GS", "Géorgie du Sud et les Îles Sandwich du Sud"),
("FJ", u"Fidji"), ("FJ", "Fidji"),
("FI", u"Finlande"), ("FI", "Finlande"),
("AX", u"Îles Åland"), ("AX", "Îles Åland"),
("FR", u"France"), ("FR", "France"),
("GF", u"Guyane Française"), ("GF", "Guyane Française"),
("PF", u"Polynésie Française"), ("PF", "Polynésie Française"),
("TF", u"Terres Australes Françaises"), ("TF", "Terres Australes Françaises"),
("DJ", u"Djibouti"), ("DJ", "Djibouti"),
("GA", u"Gabon"), ("GA", "Gabon"),
("GE", u"Géorgie"), ("GE", "Géorgie"),
("GM", u"Gambie"), ("GM", "Gambie"),
("PS", u"Territoire Palestinien Occupé"), ("PS", "Territoire Palestinien Occupé"),
("DE", u"Allemagne"), ("DE", "Allemagne"),
("GH", u"Ghana"), ("GH", "Ghana"),
("GI", u"Gibraltar"), ("GI", "Gibraltar"),
("KI", u"Kiribati"), ("KI", "Kiribati"),
("GR", u"Grèce"), ("GR", "Grèce"),
("GL", u"Groenland"), ("GL", "Groenland"),
("GD", u"Grenade"), ("GD", "Grenade"),
("GP", u"Guadeloupe"), ("GP", "Guadeloupe"),
("GU", u"Guam"), ("GU", "Guam"),
("GT", u"Guatemala"), ("GT", "Guatemala"),
("GN", u"Guinée"), ("GN", "Guinée"),
("GY", u"Guyana"), ("GY", "Guyana"),
("HT", u"Haïti"), ("HT", "Haïti"),
("HM", u"Îles Heard et Mcdonald"), ("HM", "Îles Heard et Mcdonald"),
("VA", u"Saint-Siège (état de la Cité du Vatican)"), ("VA", "Saint-Siège (état de la Cité du Vatican)"),
("HN", u"Honduras"), ("HN", "Honduras"),
("HK", u"Hong-Kong"), ("HK", "Hong-Kong"),
("HU", u"Hongrie"), ("HU", "Hongrie"),
("IS", u"Islande"), ("IS", "Islande"),
("IN", u"Inde"), ("IN", "Inde"),
("ID", u"Indonésie"), ("ID", "Indonésie"),
("IR", u"République Islamique d'Iran"), ("IR", "République Islamique d'Iran"),
("IQ", u"Iraq"), ("IQ", "Iraq"),
("IE", u"Irlande"), ("IE", "Irlande"),
("IL", u"Israël"), ("IL", "Israël"),
("IT", u"Italie"), ("IT", "Italie"),
("CI", u"Côte d'Ivoire"), ("CI", "Côte d'Ivoire"),
("JM", u"Jamaïque"), ("JM", "Jamaïque"),
("JP", u"Japon"), ("JP", "Japon"),
("KZ", u"Kazakhstan"), ("KZ", "Kazakhstan"),
("JO", u"Jordanie"), ("JO", "Jordanie"),
("KE", u"Kenya"), ("KE", "Kenya"),
("KP", u"République Populaire Démocratique de Corée"), ("KP", "République Populaire Démocratique de Corée"),
("KR", u"République de Corée"), ("KR", "République de Corée"),
("KW", u"Koweït"), ("KW", "Koweït"),
("KG", u"Kirghizistan"), ("KG", "Kirghizistan"),
("LA", u"République Démocratique Populaire Lao"), ("LA", "République Démocratique Populaire Lao"),
("LB", u"Liban"), ("LB", "Liban"),
("LS", u"Lesotho"), ("LS", "Lesotho"),
("LV", u"Lettonie"), ("LV", "Lettonie"),
("LR", u"Libéria"), ("LR", "Libéria"),
("LY", u"Jamahiriya Arabe Libyenne"), ("LY", "Jamahiriya Arabe Libyenne"),
("LI", u"Liechtenstein"), ("LI", "Liechtenstein"),
("LT", u"Lituanie"), ("LT", "Lituanie"),
("LU", u"Luxembourg"), ("LU", "Luxembourg"),
("MO", u"Macao"), ("MO", "Macao"),
("MG", u"Madagascar"), ("MG", "Madagascar"),
("MW", u"Malawi"), ("MW", "Malawi"),
("MY", u"Malaisie"), ("MY", "Malaisie"),
("MV", u"Maldives"), ("MV", "Maldives"),
("ML", u"Mali"), ("ML", "Mali"),
("MT", u"Malte"), ("MT", "Malte"),
("MQ", u"Martinique"), ("MQ", "Martinique"),
("MR", u"Mauritanie"), ("MR", "Mauritanie"),
("MU", u"Maurice"), ("MU", "Maurice"),
("MX", u"Mexique"), ("MX", "Mexique"),
("MC", u"Monaco"), ("MC", "Monaco"),
("MN", u"Mongolie"), ("MN", "Mongolie"),
("MD", u"République de Moldova"), ("MD", "République de Moldova"),
("MS", u"Montserrat"), ("MS", "Montserrat"),
("MA", u"Maroc"), ("MA", "Maroc"),
("MZ", u"Mozambique"), ("MZ", "Mozambique"),
("OM", u"Oman"), ("OM", "Oman"),
("NA", u"Namibie"), ("NA", "Namibie"),
("NR", u"Nauru"), ("NR", "Nauru"),
("NP", u"Népal"), ("NP", "Népal"),
("NL", u"Pays-Bas"), ("NL", "Pays-Bas"),
("AN", u"Antilles Néerlandaises"), ("AN", "Antilles Néerlandaises"),
("AW", u"Aruba"), ("AW", "Aruba"),
("NC", u"Nouvelle-Calédonie"), ("NC", "Nouvelle-Calédonie"),
("VU", u"Vanuatu"), ("VU", "Vanuatu"),
("NZ", u"Nouvelle-Zélande"), ("NZ", "Nouvelle-Zélande"),
("NI", u"Nicaragua"), ("NI", "Nicaragua"),
("NE", u"Niger"), ("NE", "Niger"),
("NG", u"Nigéria"), ("NG", "Nigéria"),
("NU", u"Niué"), ("NU", "Niué"),
("NF", u"Île Norfolk"), ("NF", "Île Norfolk"),
("NO", u"Norvège"), ("NO", "Norvège"),
("MP", u"Îles Mariannes du Nord"), ("MP", "Îles Mariannes du Nord"),
("UM", u"Îles Mineures Éloignées des États-Unis"), ("UM", "Îles Mineures Éloignées des États-Unis"),
("FM", u"États Fédérés de Micronésie"), ("FM", "États Fédérés de Micronésie"),
("MH", u"Îles Marshall"), ("MH", "Îles Marshall"),
("PW", u"Palaos"), ("PW", "Palaos"),
("PK", u"Pakistan"), ("PK", "Pakistan"),
("PA", u"Panama"), ("PA", "Panama"),
("PG", u"Papouasie-Nouvelle-Guinée"), ("PG", "Papouasie-Nouvelle-Guinée"),
("PY", u"Paraguay"), ("PY", "Paraguay"),
("PE", u"Pérou"), ("PE", "Pérou"),
("PH", u"Philippines"), ("PH", "Philippines"),
("PN", u"Pitcairn"), ("PN", "Pitcairn"),
("PL", u"Pologne"), ("PL", "Pologne"),
("PT", u"Portugal"), ("PT", "Portugal"),
("GW", u"Guinée-Bissau"), ("GW", "Guinée-Bissau"),
("TL", u"Timor-Leste"), ("TL", "Timor-Leste"),
("PR", u"Porto Rico"), ("PR", "Porto Rico"),
("QA", u"Qatar"), ("QA", "Qatar"),
("RE", u"Réunion"), ("RE", "Réunion"),
("RO", u"Roumanie"), ("RO", "Roumanie"),
("RU", u"Fédération de Russie"), ("RU", "Fédération de Russie"),
("RW", u"Rwanda"), ("RW", "Rwanda"),
("SH", u"Sainte-Hélène"), ("SH", "Sainte-Hélène"),
("KN", u"Saint-Kitts-et-Nevis"), ("KN", "Saint-Kitts-et-Nevis"),
("AI", u"Anguilla"), ("AI", "Anguilla"),
("LC", u"Sainte-Lucie"), ("LC", "Sainte-Lucie"),
("PM", u"Saint-Pierre-et-Miquelon"), ("PM", "Saint-Pierre-et-Miquelon"),
("VC", u"Saint-Vincent-et-les Grenadines"), ("VC", "Saint-Vincent-et-les Grenadines"),
("SM", u"Saint-Marin"), ("SM", "Saint-Marin"),
("ST", u"Sao Tomé-et-Principe"), ("ST", "Sao Tomé-et-Principe"),
("SA", u"Arabie Saoudite"), ("SA", "Arabie Saoudite"),
("SN", u"Sénégal"), ("SN", "Sénégal"),
("SC", u"Seychelles"), ("SC", "Seychelles"),
("SL", u"Sierra Leone"), ("SL", "Sierra Leone"),
("SG", u"Singapour"), ("SG", "Singapour"),
("SK", u"Slovaquie"), ("SK", "Slovaquie"),
("VN", u"Viet Nam"), ("VN", "Viet Nam"),
("SI", u"Slovénie"), ("SI", "Slovénie"),
("SO", u"Somalie"), ("SO", "Somalie"),
("ZA", u"Afrique du Sud"), ("ZA", "Afrique du Sud"),
("ZW", u"Zimbabwe"), ("ZW", "Zimbabwe"),
("ES", u"Espagne"), ("ES", "Espagne"),
("EH", u"Sahara Occidental"), ("EH", "Sahara Occidental"),
("SD", u"Soudan"), ("SD", "Soudan"),
("SR", u"Suriname"), ("SR", "Suriname"),
("SJ", u"Svalbard etÎle Jan Mayen"), ("SJ", "Svalbard etÎle Jan Mayen"),
("SZ", u"Swaziland"), ("SZ", "Swaziland"),
("SE", u"Suède"), ("SE", "Suède"),
("CH", u"Suisse"), ("CH", "Suisse"),
("SY", u"République Arabe Syrienne"), ("SY", "République Arabe Syrienne"),
("TJ", u"Tadjikistan"), ("TJ", "Tadjikistan"),
("TH", u"Thaïlande"), ("TH", "Thaïlande"),
("TG", u"Togo"), ("TG", "Togo"),
("TK", u"Tokelau"), ("TK", "Tokelau"),
("TO", u"Tonga"), ("TO", "Tonga"),
("TT", u"Trinité-et-Tobago"), ("TT", "Trinité-et-Tobago"),
("AE", u"Émirats Arabes Unis"), ("AE", "Émirats Arabes Unis"),
("TN", u"Tunisie"), ("TN", "Tunisie"),
("TR", u"Turquie"), ("TR", "Turquie"),
("TM", u"Turkménistan"), ("TM", "Turkménistan"),
("TC", u"Îles Turks et Caïques"), ("TC", "Îles Turks et Caïques"),
("TV", u"Tuvalu"), ("TV", "Tuvalu"),
("UG", u"Ouganda"), ("UG", "Ouganda"),
("UA", u"Ukraine"), ("UA", "Ukraine"),
("MK", u"L'ex-République Yougoslave de Macédoine"), ("MK", "L'ex-République Yougoslave de Macédoine"),
("EG", u"Égypte"), ("EG", "Égypte"),
("GB", u"Royaume-Uni"), ("GB", "Royaume-Uni"),
("IM", u"Île de Man"), ("IM", "Île de Man"),
("TZ", u"République-Unie de Tanzanie"), ("TZ", "République-Unie de Tanzanie"),
("US", u"États-Unis"), ("US", "États-Unis"),
("VI", u"Îles Vierges des États-Unis"), ("VI", "Îles Vierges des États-Unis"),
("BF", u"Burkina Faso"), ("BF", "Burkina Faso"),
("UY", u"Uruguay"), ("UY", "Uruguay"),
("UZ", u"Ouzbékistan"), ("UZ", "Ouzbékistan"),
("VE", u"Venezuela"), ("VE", "Venezuela"),
("WF", u"Wallis et Futuna"), ("WF", "Wallis et Futuna"),
("WS", u"Samoa"), ("WS", "Samoa"),
("YE", u"Yémen"), ("YE", "Yémen"),
("CS", u"Serbie-et-Monténégro"), ("CS", "Serbie-et-Monténégro"),
("ZM", u"Zambie"), ("ZM", "Zambie"),
) )

View file

@ -43,7 +43,7 @@ class SearchForm(forms.Form):
+ list(NIVEAU_SCOL_OPTIONS)), + list(NIVEAU_SCOL_OPTIONS)),
required=False) required=False)
type_lieu = forms.ChoiceField(label=u"Type de lieu d'accueil", type_lieu = forms.ChoiceField(label="Type de lieu d'accueil",
choices=([('', u'')] choices=([('', u'')]
+ list(TYPE_LIEU_OPTIONS)), + list(TYPE_LIEU_OPTIONS)),
required=False) required=False)