diff --git a/experiENS/settings.py b/experiENS/settings.py index 18078cb..e8afe21 100644 --- a/experiENS/settings.py +++ b/experiENS/settings.py @@ -36,6 +36,7 @@ INSTALLED_APPS = ( 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'django.contrib.gis', 'monstage', ) diff --git a/monstage/models.py b/monstage/models.py index 55629db..e81e98f 100644 --- a/monstage/models.py +++ b/monstage/models.py @@ -1,12 +1,22 @@ from django.db import models from django.contrib.auth.models import User +from django.utils.translation import ugettext_lazy as _ +from django.contrib.gis.db import models as geomodels TYPE_STAGE_CHOICES = ( - ('recherche', _(u"Stage de recherche")), + ('stage', _(u"Stage")), +) + +TYPE_LIEU_CHOICES = ( + ('universite', _(u"Université")), + ('entreprise', _(u"Entreprise")), + ('centrerecherche', _(u"Centre de recherche")), + ('administration', _(u"Administration")), + ('autre', _(u"Autre")), ) class Normalien(models.Model): - user = models.OneToOneField(User, related_name = "profile") + user = models.OneToOneField(User, related_name = "profil") permanent_mail = models.CharField("Adresse e-mail permanente", max_length = 200, blank = True) class Meta: @@ -18,17 +28,30 @@ class Normalien(models.Model): class Stage(models.Model): - user = models.ForeignKey(Normalien, related_name = "user") - published = models.BooleanField("Visible publiquement", default = False) - type_stage = models.CharField (_(u"Type de stage"), - default = "recherche", + user = models.ForeignKey(Normalien, related_name = "stages") + published = models.BooleanField(_("Visible publiquement"), default = False) + type_stage = models.CharField (_(u"Type"), + default = "stage", choices = TYPE_STAGE_CHOICES, max_length = choices_length (TYPE_STAGE_CHOICES)) - start_date = models.DateField("Date de début", blank = True, null = True) - end_date = models.DateField("Date de fin", blank = True, null = True) + start_date = models.DateField(_(u"Date de début"), null = True) + end_date = models.DateField(_(u"Date de fin"), null = True) + sujet = models.CharField(_(u"Sujet"), max_length = 500) + encadrants = models.CharField(_(u"Encadrants"), max_length = 500, blank = True) + lieux = models.ManyToManyField(Lieu, related_name = "stages", through = "LieuStage") -class PetitCoursSubject(models.Model): - name = models.CharField(_("Matière"), max_length = 30) + # Avis + avis_encadrants = models.TextField(_(u"Avis sur les encadrants", blank = True) + avis_equipe = models.TextField(_(u"Avis sur l'équipe", blank = True) + avis_stage = models.TextField(_(u"Intérêt du stage", blank = True) + avis_admin = models.TextField(_(u"Visa et administratif"), blank = True) + + def __unicode__(self): + return u"%s : %s" % (self.user.profil.username, self.sujet) + + +class StageMatiere(models.Model): + name = models.CharField(_(u"Matière"), max_length = 30) users = models.ManyToManyField(stages, related_name = "matieres") class Meta: @@ -36,4 +59,29 @@ class PetitCoursSubject(models.Model): verbose_name_plural = "Matières des stages" def __unicode__(self): - return self.name \ No newline at end of file + return self.name + +class Lieu(models.Model): + name = models.CharField(_(u"Nom de l'institution d'accueil"), max_length = 250) + ville = models.CharField(_(u"Ville, Pays"), max_length = 200) + coord = geomodels.PointField(_(u"Coordonnées"), geography = True) + objects = geomodels.GeoManager() # Requis par GeoDjango + type_lieu = models.CharField( _(u"Type de structure d'accueil"), + default = "universite", + choices = TYPE_LIEU_CHOICES, + max_length = choices_length (TYPE_LIEU_CHOICES)) + + def __unicode__(self): + return u"%s (%s)" % (self.name, self.ville) + +class LieuStage(models.Model): + stage = models.ForeignKey(Stage) + lieu = models.ForeignKey(Lieu) + + # Avis + avis_global = models.TextField(_(u"Ressenti global"), blank = True) + avis_lieudevie = models.TextField(_(u"Mon lieu de vie"), blank = True) + avis_lieustage = models.TextField(_(u"Le lieu du stage"), blank = True) + avis_pratique = models.TextField(_(u"S'installer / Conseils pratiques"), blank = True) + avis_visite = models.TextField(_(u"Que voir / que faire"), blank = True) + avis_anecdotes = models.TextField(_(u"Anecdotes"), blank = True) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..3915523 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +django>=1.7 +django-cas-ng +psycopg2 +postgis \ No newline at end of file