# coding: utf-8 from django import forms from avisstage.models import Normalien, Stage, Lieu, AvisLieu, AvisStage from widgets import LatLonField from django.utils import timezone import re class HTMLTrimmerForm(forms.ModelForm): def clean(self): leading_white = re.compile(r"^( \t\n)*(

( |[ \n\t]|)*

( \t\n)*)+?", re.IGNORECASE) trailing_white = re.compile(r"(( \t\n)*

( |[ \n\t]|)*

)+?( \t\n)*$", re.IGNORECASE) cleaned_data = super(HTMLTrimmerForm, self).clean() for (fname, fval) in cleaned_data.items(): if fname[:5] == "avis_": cleaned_data[fname] = leading_white.sub("", trailing_white.sub("", fval)) return cleaned_data class AvisStageForm(HTMLTrimmerForm): class Meta: model = AvisStage fields = ['chapo', 'avis_ambiance', 'avis_sujet', 'avis_admin', 'les_plus', 'les_moins'] help_texts = { "chapo": u"Une accroche résumant ce que vous avez pensé de ce stage", "avis_ambiance": u"Avez-vous passé un bon moment à ce stage ? É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"Avez-vous appris des choses de votre stage ? Le travail correspondait-il à vos attentes ? Était-ce à votre niveau, trop dur, trop facile ?", "avis_admin": u"Avez-vous commencé votre stage à 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 ?", "les_plus": u"Les principaux points positifs de ce stage", "les_moins": u"Ce qui aurait pu être mieux", } class AvisLieuForm(HTMLTrimmerForm): class Meta: model = AvisLieu fields = ['lieu', 'chapo', 'avis_lieustage', 'avis_pratique', 'avis_tourisme', 'les_plus', 'les_moins'] help_texts = { "chapo": u"Une accroche résumant ce que vous avez pensé de cet endroit", "avis_lieustage": u"Qu'avez-vous pensé des lieux où avait lieu votre stage ? 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_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 ?", "les_plus": u"Les meilleures raisons de partir à cet endroit", "les_moins": u"Ce qui vous a gêné ou manqué là-bas", } widgets = { "lieu": forms.HiddenInput(attrs={"class":"lieu-hidden"}) } class StageForm(forms.ModelForm): date_widget = forms.DateInput(attrs={"class":"datepicker", "placeholder":"JJ/MM/AAAA"}) date_debut = forms.DateField(label=u"Date de début", input_formats=["%d/%m/%Y"], widget=date_widget) date_fin = forms.DateField(label=u"Date de fin", input_formats=["%d/%m/%Y"], widget=date_widget) class Meta: model = Stage fields = ['sujet', 'date_debut', 'date_fin', 'type_stage', 'thematiques', 'matieres', 'structure', 'encadrants'] 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", "structure": u"Nom de l'équipe, de la startup..." } labels = { "date_debut": u"Date de début", } def __init__(self, *args, **kwargs): if "request" in kwargs: self.request = kwargs.pop("request") super(StageForm, self).__init__(*args, **kwargs) def save(self, commit=True): if self.instance.id is None and hasattr(self, 'request'): self.instance.auteur = self.request.user.profil self.instance.date_maj = timezone.now() stage = super(StageForm, self).save(commit=commit) return stage class LieuForm(forms.ModelForm): coord = LatLonField() class Meta: model = Lieu fields = ['nom', 'type_lieu', 'ville', 'pays', 'coord'] class FeedbackForm(forms.Form): objet = forms.CharField(label="Objet", required=True) message = forms.CharField(label="Message", required=True, widget=forms.widgets.Textarea())