Première migration django

This commit is contained in:
champeno 2015-05-25 23:27:14 +02:00
parent 15070a9db4
commit 3bc3f7cdd3
4 changed files with 124 additions and 18 deletions

2
.gitignore vendored
View file

@ -99,3 +99,5 @@ $RECYCLE.BIN/
# Windows shortcuts
*.lnk
tpathtxt
test.py

View file

@ -67,7 +67,8 @@ CAS_SERVER_URL = "https://cas.eleves.ens.fr/login" #SPI CAS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'ENGINE': 'django.contrib.gis.db.backends.postgis',
# 'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'experiens',
'USER': 'experiens',
'PASSWORD': 'experiens',

View file

@ -0,0 +1,98 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
from django.conf import settings
import django.contrib.gis.db.models.fields
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Lieu',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=250, verbose_name="Nom de l'institution d'accueil")),
('ville', models.CharField(max_length=200, verbose_name='Ville, Pays')),
('coord', django.contrib.gis.db.models.fields.PointField(srid=4326, verbose_name='Coordonn\xe9es', geography=True)),
('type_lieu', models.CharField(default=b'universite', max_length=15, verbose_name="Type de structure d'accueil", choices=[(b'universite', 'Universit\xe9'), (b'entreprise', 'Entreprise'), (b'centrerecherche', 'Centre de recherche'), (b'administration', 'Administration'), (b'autre', 'Autre')])),
],
options={
},
bases=(models.Model,),
),
migrations.CreateModel(
name='LieuStage',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('avis_global', models.TextField(verbose_name='Ressenti global', blank=True)),
('avis_lieudevie', models.TextField(verbose_name='Mon lieu de vie', blank=True)),
('avis_lieustage', models.TextField(verbose_name='Le lieu du stage', blank=True)),
('avis_pratique', models.TextField(verbose_name="S'installer / Conseils pratiques", blank=True)),
('avis_visite', models.TextField(verbose_name='Que voir / que faire', blank=True)),
('avis_anecdotes', models.TextField(verbose_name='Anecdotes', blank=True)),
('lieu', models.ForeignKey(to='monstage.Lieu')),
],
options={
},
bases=(models.Model,),
),
migrations.CreateModel(
name='Normalien',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('permanent_mail', models.CharField(max_length=200, verbose_name=b'Adresse e-mail permanente', blank=True)),
('user', models.OneToOneField(related_name='profil', to=settings.AUTH_USER_MODEL)),
],
options={
'verbose_name': 'Profil \xe9l\xe8ve',
'verbose_name_plural': 'Profils \xe9l\xe8ves',
},
bases=(models.Model,),
),
migrations.CreateModel(
name='Stage',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('published', models.BooleanField(default=False, verbose_name='Visible publiquement')),
('type_stage', models.CharField(default=b'stage', max_length=5, verbose_name='Type', choices=[(b'stage', 'Stage')])),
('start_date', models.DateField(null=True, verbose_name='Date de d\xe9but')),
('end_date', models.DateField(null=True, verbose_name='Date de fin')),
('sujet', models.CharField(max_length=500, verbose_name='Sujet')),
('encadrants', models.CharField(max_length=500, verbose_name='Encadrants', blank=True)),
('avis_encadrants', models.TextField(verbose_name='Avis sur les encadrants', blank=True)),
('avis_equipe', models.TextField(verbose_name="Avis sur l'\xe9quipe", blank=True)),
('avis_stage', models.TextField(verbose_name='Int\xe9r\xeat du stage', blank=True)),
('avis_admin', models.TextField(verbose_name='Visa et administratif', blank=True)),
('lieux', models.ManyToManyField(related_name='stages', through='monstage.LieuStage', to='monstage.Lieu')),
('user', models.ForeignKey(related_name='stages', to='monstage.Normalien')),
],
options={
},
bases=(models.Model,),
),
migrations.CreateModel(
name='StageMatiere',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=30, verbose_name='Mati\xe8re')),
('users', models.ManyToManyField(related_name='matieres', to='monstage.Stage')),
],
options={
'verbose_name': 'Mati\xe8re des stages',
'verbose_name_plural': 'Mati\xe8res des stages',
},
bases=(models.Model,),
),
migrations.AddField(
model_name='lieustage',
name='stage',
field=models.ForeignKey(to='monstage.Stage'),
preserve_default=True,
),
]

View file

@ -1,3 +1,5 @@
# coding: utf-8
from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _
@ -16,6 +18,9 @@ TYPE_LIEU_CHOICES = (
('autre', _(u"Autre")),
)
def choices_length (choices):
return reduce (lambda m, choice: max (m, len (choice[0])), choices, 0)
class Normalien(models.Model):
user = models.OneToOneField(User, related_name = "profil")
permanent_mail = models.CharField("Adresse e-mail permanente", max_length = 200, blank = True)
@ -33,6 +38,19 @@ def create_user_profile(sender, user, created, **kwargs):
Normalien.objects.get_or_create(user = user)
cas_user_authenticated.connect(create_user_profile)
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 Stage(models.Model):
user = models.ForeignKey(Normalien, related_name = "stages")
published = models.BooleanField(_("Visible publiquement"), default = False)
@ -47,9 +65,9 @@ class Stage(models.Model):
lieux = models.ManyToManyField(Lieu, related_name = "stages", through = "LieuStage")
# 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_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):
@ -58,7 +76,7 @@ class Stage(models.Model):
class StageMatiere(models.Model):
name = models.CharField(_(u"Matière"), max_length = 30)
users = models.ManyToManyField(stages, related_name = "matieres")
users = models.ManyToManyField(Stage, related_name = "matieres")
class Meta:
verbose_name = "Matière des stages"
@ -67,19 +85,6 @@ class StageMatiere(models.Model):
def __unicode__(self):
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)