--- /dev/null
+# Generated by Django 3.2.3 on 2021-06-01 15:28
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+import teleforma.fields
+import tinymce.models
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='AppointmentPeriod',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('start', models.DateField(verbose_name="date de début d'inscription")),
+ ('end', models.DateField(verbose_name="date de fin d'inscription")),
+ ('enable_appointment', models.BooleanField(blank=True, default=True, verbose_name='activer la prise de rendez-vous')),
+ ('book_delay', models.IntegerField(default=2, verbose_name='délai minimal (en jours ouvrables) de prise de rendez-vous')),
+ ('cancel_delay', models.IntegerField(default=2, verbose_name="délai minimal (en jours ouvrables) d'annulation de rendez-vous")),
+ ('appointment_mail_text', models.TextField(blank=True, null=True, verbose_name='message à inclure dans le mail de confirmation de rendez-vous pour le présentiel')),
+ ('appointment_mail_text_distance', models.TextField(blank=True, null=True, verbose_name='message à inclure dans le mail de confirmation de rendez-vous pour les rendez-vous à distance')),
+ ('appointment_slot_size', models.IntegerField(default=40, verbose_name="écart entre les créneaux d'inscription (minutes)")),
+ ],
+ options={
+ 'verbose_name': 'période de prise de rendez-vous',
+ 'verbose_name_plural': 'périodes de prise de rendez-vous',
+ 'db_table': 'teleforma_appointment_period',
+ 'ordering': ('id',),
+ },
+ ),
+ migrations.CreateModel(
+ name='Conference',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('public_id', models.CharField(blank=True, max_length=255, verbose_name='public_id')),
+ ('session', models.CharField(choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10'), ('11', '11'), ('12', '12'), ('13', '13'), ('14', '14'), ('15', '15')], default='1', max_length=16, verbose_name='session')),
+ ('comment', teleforma.fields.ShortTextField(blank=True, max_length=255, verbose_name='comment')),
+ ('date_begin', models.DateTimeField(blank=True, null=True, verbose_name='begin date')),
+ ('date_end', models.DateTimeField(blank=True, null=True, verbose_name='end date')),
+ ('status', models.IntegerField(choices=[(0, 'Hidden'), (1, 'Private'), (2, 'Draft'), (3, 'Public')], default=2, verbose_name='status')),
+ ('streaming', models.BooleanField(default=True, verbose_name='streaming')),
+ ],
+ options={
+ 'verbose_name': 'conference',
+ 'db_table': 'teleforma_conference',
+ 'ordering': ['-date_begin'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Course',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(max_length=255, verbose_name='title')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('code', models.CharField(max_length=255, verbose_name='code')),
+ ('title_tweeter', models.CharField(max_length=255, verbose_name='tweeter title')),
+ ('date_modified', models.DateTimeField(auto_now=True, null=True, verbose_name='date modified')),
+ ('number', models.IntegerField(blank=True, null=True, verbose_name='number')),
+ ('synthesis_note', models.BooleanField(verbose_name='synthesis note')),
+ ('obligation', models.BooleanField(verbose_name='obligations')),
+ ('magistral', models.BooleanField(verbose_name='magistral')),
+ ('procedure', models.BooleanField(verbose_name='procedure')),
+ ('written_speciality', models.BooleanField(verbose_name='written_speciality')),
+ ('oral_speciality', models.BooleanField(verbose_name='oral_speciality')),
+ ('oral_1', models.BooleanField(verbose_name='oral_1')),
+ ('oral_2', models.BooleanField(verbose_name='oral_2')),
+ ('has_exam_scripts', models.BooleanField(default=True, verbose_name="copies d'examen")),
+ ],
+ options={
+ 'verbose_name': 'course',
+ 'db_table': 'teleforma_course',
+ 'ordering': ['number'],
+ },
+ ),
+ migrations.CreateModel(
+ name='CourseType',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'course type',
+ 'db_table': 'teleforma_course_type',
+ },
+ ),
+ migrations.CreateModel(
+ name='Department',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('domain', models.CharField(blank=True, max_length=255, verbose_name='Master domain')),
+ ],
+ options={
+ 'verbose_name': 'department',
+ 'db_table': 'teleforma_department',
+ },
+ ),
+ migrations.CreateModel(
+ name='DocumentType',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('number', models.IntegerField(blank=True, null=True, verbose_name='number')),
+ ('for_corrector', models.BooleanField(blank=True, default=False, verbose_name='autorisé aux correcteurs')),
+ ],
+ options={
+ 'verbose_name': 'document type',
+ 'db_table': 'teleforma_document_type',
+ 'ordering': ['number'],
+ },
+ ),
+ migrations.CreateModel(
+ name='IEJ',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'IEJ',
+ 'verbose_name_plural': 'IEJ',
+ 'db_table': 'teleforma_iej',
+ 'ordering': ['name'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Media',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(blank=True, max_length=255, verbose_name='title')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('credits', models.CharField(blank=True, max_length=255, verbose_name='credits')),
+ ('date_added', models.DateTimeField(auto_now_add=True, null=True, verbose_name='date added')),
+ ('date_modified', models.DateTimeField(auto_now=True, null=True, verbose_name='date modified')),
+ ('code', models.CharField(blank=True, max_length=255, verbose_name='code')),
+ ('is_published', models.BooleanField(verbose_name='published')),
+ ('mime_type', models.CharField(blank=True, max_length=255, verbose_name='mime type')),
+ ('weight', models.IntegerField(blank=True, choices=[(1, 1), (2, 2), (3, 3), (4, 4)], default=1, verbose_name='weight')),
+ ('type', models.CharField(choices=[('mp3', 'mp3'), ('ogg', 'ogg'), ('webm', 'webm'), ('mp4', 'mp4')], max_length=32, verbose_name='type')),
+ ('file', models.FileField(max_length=1024, null=True, upload_to='items/%Y/%m/%d', verbose_name='file')),
+ ('poster_file', models.FileField(max_length=255, null=True, upload_to='items/%Y/%m/%d', verbose_name='poster file')),
+ ('conference', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='media', to='teleforma.conference', verbose_name='conference')),
+ ('course', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='media', to='teleforma.course', verbose_name='course')),
+ ('course_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='media', to='teleforma.coursetype', verbose_name='course type')),
+ ],
+ options={
+ 'db_table': 'teleforma_media',
+ 'ordering': ['-date_modified', '-conference__session'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Organization',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ],
+ options={
+ 'verbose_name': 'organization',
+ 'db_table': 'teleforma_organization',
+ },
+ ),
+ migrations.CreateModel(
+ name='Parameters',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('inscription_text', tinymce.models.HTMLField(blank=True, verbose_name="Texte d'inscription")),
+ ],
+ options={
+ 'verbose_name': 'Paramètres',
+ 'verbose_name_plural': 'Paramètres',
+ },
+ ),
+ migrations.CreateModel(
+ name='Period',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('date_begin', models.DateField(blank=True, null=True, verbose_name='begin date')),
+ ('date_end', models.DateField(blank=True, null=True, verbose_name='end date')),
+ ('date_password_init', models.DateField(blank=True, null=True, verbose_name="date d'init de mot de passe")),
+ ('message_platform', models.TextField(blank=True, verbose_name='message pour internaute')),
+ ('message_local', models.TextField(blank=True, verbose_name='message pour presentielle')),
+ ('is_open', models.BooleanField(default=True, verbose_name='is open')),
+ ('date_exam_end', models.DateTimeField(blank=True, null=True, verbose_name="date de fin d'examens")),
+ ('nb_script', models.IntegerField(blank=True, null=True, verbose_name='nombre maximal de copies')),
+ ('date_close_accounts', models.DateField(blank=True, null=True, verbose_name='date de fermeture des comptes étudiants')),
+ ('date_inscription_start', models.DateField(blank=True, null=True, verbose_name="date d'ouverture des inscriptions")),
+ ('date_inscription_end', models.DateField(blank=True, null=True, verbose_name='date de fermeture des inscriptions')),
+ ('department', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='period', to='teleforma.department', verbose_name='department')),
+ ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='children', to='teleforma.period', verbose_name='parent')),
+ ],
+ options={
+ 'verbose_name': 'period',
+ 'db_table': 'teleforma_period',
+ 'ordering': ['name'],
+ },
+ ),
+ migrations.CreateModel(
+ name='StreamingServer',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('host', models.CharField(max_length=255, verbose_name='host')),
+ ('port', models.CharField(max_length=32, verbose_name='port')),
+ ('type', models.CharField(choices=[('icecast', 'icecast'), ('stream-m', 'stream-m')], max_length=32, verbose_name='type')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('source_password', models.CharField(max_length=32, verbose_name='source password')),
+ ('admin_password', models.CharField(blank=True, max_length=32, verbose_name='admin password')),
+ ],
+ options={
+ 'verbose_name': 'streaming server',
+ 'db_table': 'teleforma_streaming_server',
+ },
+ ),
+ migrations.CreateModel(
+ name='Student',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('restricted', models.BooleanField(default=False, help_text="Cocher cette case lorsque vous voulez que l'étudiant puisse se connecter, mais ne pas avoir accès aux cours.", verbose_name='Accès restreint')),
+ ('portrait', models.ImageField(blank=True, max_length=500, null=True, upload_to='portraits/')),
+ ('platform_only', models.BooleanField(verbose_name='e-learning platform only')),
+ ('application_fees', models.BooleanField(blank=True, default=True, verbose_name='application fees')),
+ ('subscription_fees', models.FloatField(blank=True, help_text='€', null=True, verbose_name='subscription fees')),
+ ('promo_code', models.CharField(blank=True, max_length=100, verbose_name='promo code')),
+ ('date_registered', models.DateTimeField(auto_now_add=True, null=True, verbose_name='registration date')),
+ ('date_subscribed', models.DateTimeField(blank=True, null=True, verbose_name='subscription date')),
+ ('is_subscribed', models.BooleanField(verbose_name='subscribed')),
+ ('confirmation_sent', models.BooleanField(verbose_name='confirmation sent')),
+ ('level', models.CharField(blank=True, max_length=100, verbose_name='studying level')),
+ ('balance', models.FloatField(blank=True, help_text='€', null=True, verbose_name='balance de paiement')),
+ ('balance_intermediary', models.FloatField(blank=True, help_text='€', null=True, verbose_name='balance de paiement intermédiaire')),
+ ('fascicule', models.BooleanField(blank=True, default=False, verbose_name='envoi des fascicules')),
+ ('payment_type', models.CharField(blank=True, choices=[('online', 'en ligne'), ('check', 'par chèque'), ('tranfer', 'par virement'), ('credit card', 'par carte'), ('money', 'en liquide'), ('other', 'autre')], default='online', max_length=64, null=True, verbose_name='type de paiement')),
+ ('payment_schedule', models.CharField(blank=True, choices=[('split', 'en plusieurs fois'), ('once', 'en une seule fois')], default='split', max_length=64, null=True, verbose_name='échéancier de paiement')),
+ ('comment', models.TextField(blank=True, null=True, verbose_name='commentaire')),
+ ('receipt_id', models.IntegerField(blank=True, null=True, unique=True, verbose_name='numéro de facture')),
+ ('iej', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='student', to='teleforma.iej', verbose_name='iej')),
+ ('options', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='options_students', to='teleforma.course', verbose_name='options')),
+ ('oral_1', models.ForeignKey(blank=True, help_text='Matière d’oral de langue (en option)', limit_choices_to={'oral_1': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='oral_1_students', to='teleforma.course', verbose_name='oral de langue (option)')),
+ ('oral_2', models.ForeignKey(blank=True, help_text='Matière d’oral technique 2 (en option)', limit_choices_to={'oral_2': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='oral_2_students', to='teleforma.course', verbose_name='oral 2 (option)')),
+ ('oral_speciality', models.ForeignKey(blank=True, help_text='Matière d’oral de spécialité (matière incluse dans la formation approfondie, en option pour toutes les autres formations)', limit_choices_to={'oral_speciality': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='oral_speciality_students', to='teleforma.course', verbose_name='oral speciality')),
+ ('period', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='student', to='teleforma.period', verbose_name='period')),
+ ('procedure', models.ForeignKey(blank=True, help_text='Matière de procédure', limit_choices_to={'procedure': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='procedure_students', to='teleforma.course', verbose_name='procedure')),
+ ],
+ options={
+ 'verbose_name': 'Student',
+ 'verbose_name_plural': 'Students',
+ 'db_table': 'teleforma_student',
+ 'ordering': ['user__last_name', '-date_subscribed'],
+ },
+ ),
+ migrations.CreateModel(
+ name='WebClassGroup',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('iejs', models.ManyToManyField(blank=True, related_name='web_class_group', to='teleforma.IEJ', verbose_name='IEJ')),
+ ],
+ options={
+ 'verbose_name': 'web class group',
+ 'verbose_name_plural': 'web class group',
+ 'ordering': ['name'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Training',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('code', models.CharField(max_length=255, verbose_name='code')),
+ ('name', models.CharField(blank=True, max_length=255, verbose_name='name')),
+ ('description', models.CharField(blank=True, max_length=512, verbose_name='description')),
+ ('cost', models.FloatField(blank=True, null=True, verbose_name='cost')),
+ ('cost_elearning_fascicle', models.FloatField(blank=True, null=True, verbose_name='e-learning cost with fascicle')),
+ ('cost_elearning_nofascicle', models.FloatField(blank=True, null=True, verbose_name='e-learning cost without fascicle')),
+ ('available', models.BooleanField(verbose_name='available')),
+ ('platform_only', models.BooleanField(verbose_name='e-learning platform only')),
+ ('duration', models.IntegerField(default=0, verbose_name='Durée en heures')),
+ ('magistral', models.ManyToManyField(blank=True, related_name='training_magistral', to='teleforma.CourseType', verbose_name='magistral')),
+ ('obligation', models.ManyToManyField(blank=True, related_name='training_obligation', to='teleforma.CourseType', verbose_name='obligations')),
+ ('options', models.ManyToManyField(blank=True, related_name='training_options', to='teleforma.CourseType', verbose_name='options')),
+ ('oral_1', models.ManyToManyField(blank=True, related_name='training_oral_1', to='teleforma.CourseType', verbose_name='oral 1')),
+ ('oral_2', models.ManyToManyField(blank=True, related_name='training_oral_2', to='teleforma.CourseType', verbose_name='oral 2')),
+ ('oral_speciality', models.ManyToManyField(blank=True, related_name='training_oral_speciality', to='teleforma.CourseType', verbose_name='oral speciality')),
+ ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='children', to='teleforma.training', verbose_name='parent')),
+ ('period', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='training', to='teleforma.period', verbose_name='period')),
+ ('procedure', models.ManyToManyField(blank=True, related_name='training_procedure', to='teleforma.CourseType', verbose_name='procedure')),
+ ('synthesis_note', models.ManyToManyField(blank=True, related_name='training_synthesis_note', to='teleforma.CourseType', verbose_name='synthesis note')),
+ ('written_speciality', models.ManyToManyField(blank=True, related_name='training_written_speciality', to='teleforma.CourseType', verbose_name='written speciality')),
+ ],
+ options={
+ 'verbose_name': 'training',
+ 'db_table': 'teleforma_training',
+ },
+ ),
+ migrations.CreateModel(
+ name='StudentGroup',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('students', models.ManyToManyField(blank=True, related_name='groups', to='teleforma.Student', verbose_name='students')),
+ ],
+ options={
+ 'verbose_name': 'Student group',
+ 'db_table': 'teleforma_student_groups',
+ },
+ ),
+ migrations.AddField(
+ model_name='student',
+ name='training',
+ field=models.ForeignKey(blank=True, limit_choices_to={'available': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='student_training', to='teleforma.training', verbose_name='training'),
+ ),
+ migrations.AddField(
+ model_name='student',
+ name='trainings',
+ field=models.ManyToManyField(blank=True, related_name='student_trainings', to='teleforma.Training', verbose_name='trainings'),
+ ),
+ migrations.AddField(
+ model_name='student',
+ name='user',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='student', to=settings.AUTH_USER_MODEL, unique=True, verbose_name='user'),
+ ),
+ migrations.AddField(
+ model_name='student',
+ name='written_speciality',
+ field=models.ForeignKey(blank=True, help_text='Matière juridique de spécialité', limit_choices_to={'written_speciality': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='written_speciality_2students', to='teleforma.course', verbose_name='written speciality'),
+ ),
+ migrations.CreateModel(
+ name='Room',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='room', to='teleforma.organization', verbose_name='organization')),
+ ],
+ options={
+ 'verbose_name': 'room',
+ 'db_table': 'teleforma_room',
+ },
+ ),
+ migrations.CreateModel(
+ name='Profile',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('address', models.CharField(blank=True, max_length=255, verbose_name='Address')),
+ ('address_detail', models.CharField(blank=True, max_length=255, null=True, verbose_name='Address detail')),
+ ('postal_code', models.CharField(blank=True, max_length=255, verbose_name='Postal code')),
+ ('city', models.CharField(blank=True, max_length=255, verbose_name='City')),
+ ('country', models.CharField(blank=True, max_length=255, verbose_name='Country')),
+ ('language', models.CharField(blank=True, max_length=255, verbose_name='Language')),
+ ('telephone', models.CharField(blank=True, max_length=255, verbose_name='Telephone')),
+ ('expiration_date', models.DateField(blank=True, null=True, verbose_name='Expiration_date')),
+ ('init_password', models.BooleanField(verbose_name='Password initialized')),
+ ('wifi_login', models.CharField(blank=True, max_length=255, verbose_name='WiFi login')),
+ ('wifi_pass', models.CharField(blank=True, max_length=255, verbose_name='WiFi pass')),
+ ('birthday', models.DateField(blank=True, help_text='jj/mm/aaaa', null=True, verbose_name='birthday')),
+ ('birthday_place', models.CharField(blank=True, max_length=255, null=True, verbose_name='Lieu de naissance')),
+ ('nationality', models.CharField(blank=True, max_length=255, null=True, verbose_name='Nationalité')),
+ ('ss_number', models.CharField(blank=True, max_length=15, null=True, verbose_name='Sécurité sociale')),
+ ('siret', models.CharField(blank=True, max_length=13, null=True, verbose_name='Siret')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL, unique=True, verbose_name='user')),
+ ],
+ options={
+ 'verbose_name': 'profile',
+ 'db_table': 'teleforma_profiles',
+ },
+ ),
+ migrations.CreateModel(
+ name='Professor',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('courses', models.ManyToManyField(blank=True, related_name='professor', to='teleforma.Course', verbose_name='courses')),
+ ('department', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='professor', to='teleforma.department', verbose_name='department')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='professor', to=settings.AUTH_USER_MODEL, unique=True, verbose_name='user')),
+ ],
+ options={
+ 'verbose_name': 'professor',
+ 'db_table': 'teleforma_professor',
+ 'ordering': ['user__last_name'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Payment',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('value', models.FloatField(help_text='€', verbose_name='amount')),
+ ('month', models.IntegerField(blank=True, choices=[(1, 'January'), (2, 'February'), (3, 'March'), (4, 'April'), (5, 'May'), (6, 'June'), (7, 'July'), (8, 'August'), (9, 'September'), (10, 'October'), (11, 'November'), (12, 'December')], default=1, null=True, verbose_name='month')),
+ ('type', models.CharField(choices=[('online', 'en ligne'), ('check', 'par chèque'), ('tranfer', 'par virement'), ('credit card', 'par carte'), ('money', 'en liquide'), ('other', 'autre')], default='online', max_length=64, verbose_name='payment type')),
+ ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='date created')),
+ ('date_modified', models.DateTimeField(auto_now=True, verbose_name='date modified')),
+ ('scheduled', models.DateField(blank=True, null=True, verbose_name="date d'échéance")),
+ ('online_paid', models.BooleanField(blank=True, help_text='paiement en ligne uniquement', verbose_name='payé')),
+ ('date_paid', models.DateField(blank=True, null=True, verbose_name='date de paiement')),
+ ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='payments', to='teleforma.student', verbose_name='student')),
+ ],
+ options={
+ 'verbose_name': 'Payment',
+ 'verbose_name_plural': 'Payments',
+ 'db_table': 'teleforma_payments',
+ 'ordering': ['scheduled', 'month'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Payback',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('value', models.FloatField(help_text='€', verbose_name='amount')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='paybacks', to='teleforma.student', verbose_name='student')),
+ ],
+ options={
+ 'verbose_name': 'Payback',
+ 'verbose_name_plural': 'Paybacks',
+ 'db_table': 'teleforma_paybacks',
+ },
+ ),
+ migrations.CreateModel(
+ name='OptionalFee',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('value', models.FloatField(help_text='€', verbose_name='amount')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='optional_fees', to='teleforma.student', verbose_name='student')),
+ ],
+ options={
+ 'verbose_name': 'Optional fees',
+ 'verbose_name_plural': 'Optional fees',
+ 'db_table': 'teleforma_optional_fees',
+ },
+ ),
+ migrations.CreateModel(
+ name='NewsItem',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(max_length=255, verbose_name='Title')),
+ ('text', tinymce.models.HTMLField(verbose_name='Texte')),
+ ('created', models.DateTimeField(auto_now_add=True, verbose_name='date created')),
+ ('deleted', models.BooleanField(verbose_name='Supprimé')),
+ ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='newsitems', to='teleforma.course', verbose_name='course')),
+ ('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='newsitems', to=settings.AUTH_USER_MODEL, verbose_name='Créateur')),
+ ('period', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='newsitems', to='teleforma.period', verbose_name='period')),
+ ],
+ options={
+ 'verbose_name': 'Actualité',
+ 'verbose_name_plural': 'Actualités',
+ },
+ ),
+ migrations.CreateModel(
+ name='MediaTranscoded',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('mimetype', models.CharField(blank=True, max_length=255, verbose_name='mime_type')),
+ ('date_added', models.DateTimeField(auto_now_add=True, verbose_name='date')),
+ ('status', models.IntegerField(choices=[(0, 'broken'), (1, 'pending'), (2, 'processing'), (3, 'done'), (5, 'ready')], default=1, verbose_name='status')),
+ ('file', models.FileField(blank=True, max_length=1024, upload_to='items/%Y/%m/%d', verbose_name='file')),
+ ('item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transcoded', to='teleforma.media', verbose_name='item')),
+ ],
+ options={
+ 'db_table': 'teleforma_media_transcoded',
+ },
+ ),
+ migrations.AddField(
+ model_name='media',
+ name='period',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='media', to='teleforma.period', verbose_name='period'),
+ ),
+ migrations.AddField(
+ model_name='media',
+ name='readers',
+ field=models.ManyToManyField(blank=True, related_name='media', to=settings.AUTH_USER_MODEL, verbose_name='readers'),
+ ),
+ migrations.CreateModel(
+ name='LiveStream',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('stream_type', models.CharField(choices=[('mp3', 'mp3'), ('ogg', 'ogg'), ('webm', 'webm'), ('mp4', 'mp4')], max_length=32, verbose_name='Streaming type')),
+ ('streaming', models.BooleanField(verbose_name='streaming')),
+ ('conference', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='livestream', to='teleforma.conference', verbose_name='conference')),
+ ('server', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='livestream', to='teleforma.streamingserver', verbose_name='streaming server')),
+ ],
+ options={
+ 'verbose_name': 'live stream',
+ 'db_table': 'teleforma_live_stream',
+ },
+ ),
+ migrations.CreateModel(
+ name='Home',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(default="Page d'accueil", max_length=255, verbose_name='Title (interne)')),
+ ('visible_title', models.CharField(blank=True, max_length=255, null=True, verbose_name='Title')),
+ ('text', models.TextField(blank=True, verbose_name='Texte')),
+ ('modified_at', models.DateTimeField(auto_now=True, verbose_name='Date de modification')),
+ ('enabled', models.BooleanField(default=True, verbose_name='Activé')),
+ ('periods', models.ManyToManyField(blank=True, related_name='home_texts', to='teleforma.Period', verbose_name='Périodes associées')),
+ ('video', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='teleforma.media', verbose_name='Video')),
+ ],
+ options={
+ 'verbose_name': "Page d'accueil",
+ 'verbose_name_plural': "Page d'accueil",
+ },
+ ),
+ migrations.CreateModel(
+ name='GroupedMessage',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('subject', models.CharField(max_length=119, verbose_name='subject')),
+ ('message', models.TextField(verbose_name='message')),
+ ('to_send', models.BooleanField(default=False, verbose_name='to send')),
+ ('sent', models.BooleanField(default=False, verbose_name='sent')),
+ ('date_sent', models.DateTimeField(blank=True, null=True, verbose_name='date sent')),
+ ('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='grouped_messages', to='teleforma.studentgroup', verbose_name='group')),
+ ('sender', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='grouped_messages', to=settings.AUTH_USER_MODEL, verbose_name='sender')),
+ ],
+ options={
+ 'verbose_name': 'Grouped message',
+ 'db_table': 'teleforma_grouped_messages',
+ },
+ ),
+ migrations.CreateModel(
+ name='DocumentSimple',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(blank=True, max_length=255, verbose_name='title')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('credits', models.CharField(blank=True, max_length=255, verbose_name='credits')),
+ ('date_added', models.DateTimeField(auto_now_add=True, null=True, verbose_name='date added')),
+ ('date_modified', models.DateTimeField(auto_now=True, null=True, verbose_name='date modified')),
+ ('code', models.CharField(blank=True, max_length=255, verbose_name='code')),
+ ('is_published', models.BooleanField(verbose_name='published')),
+ ('mime_type', models.CharField(blank=True, max_length=255, verbose_name='mime type')),
+ ('weight', models.IntegerField(blank=True, choices=[(1, 1), (2, 2), (3, 3), (4, 4)], default=1, verbose_name='weight')),
+ ('file', models.FileField(blank=True, db_column='filename', max_length=1024, upload_to='items/%Y/%m/%d', verbose_name='file')),
+ ('period', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='document_simple', to='teleforma.period', verbose_name='period')),
+ ('readers', models.ManyToManyField(blank=True, related_name='document_simple', to=settings.AUTH_USER_MODEL, verbose_name='readers')),
+ ],
+ options={
+ 'db_table': 'teleforma_document_simple',
+ 'ordering': ['-date_added'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Document',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(blank=True, max_length=255, verbose_name='title')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('credits', models.CharField(blank=True, max_length=255, verbose_name='credits')),
+ ('date_added', models.DateTimeField(auto_now_add=True, null=True, verbose_name='date added')),
+ ('date_modified', models.DateTimeField(auto_now=True, null=True, verbose_name='date modified')),
+ ('code', models.CharField(blank=True, max_length=255, verbose_name='code')),
+ ('is_published', models.BooleanField(verbose_name='published')),
+ ('mime_type', models.CharField(blank=True, max_length=255, verbose_name='mime type')),
+ ('weight', models.IntegerField(blank=True, choices=[(1, 1), (2, 2), (3, 3), (4, 4)], default=1, verbose_name='weight')),
+ ('session', models.CharField(choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10'), ('11', '11'), ('12', '12'), ('13', '13'), ('14', '14'), ('15', '15')], default='1', max_length=16, verbose_name='session')),
+ ('is_annal', models.BooleanField(verbose_name='annal')),
+ ('annal_year', models.IntegerField(blank=True, null=True, verbose_name='year')),
+ ('file', models.FileField(blank=True, db_column='filename', max_length=1024, upload_to='items/%Y/%m/%d', verbose_name='file')),
+ ('conference', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='document', to='teleforma.conference', verbose_name='conference')),
+ ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='document', to='teleforma.course', verbose_name='course')),
+ ('course_type', models.ManyToManyField(blank=True, related_name='document', to='teleforma.CourseType', verbose_name='course type')),
+ ('iej', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='document', to='teleforma.iej', verbose_name='iej')),
+ ('periods', models.ManyToManyField(blank=True, related_name='documents', to='teleforma.Period', verbose_name='periods')),
+ ('readers', models.ManyToManyField(blank=True, related_name='document', to=settings.AUTH_USER_MODEL, verbose_name='readers')),
+ ('type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='document', to='teleforma.documenttype', verbose_name='type')),
+ ],
+ options={
+ 'db_table': 'teleforma_document',
+ 'ordering': ['-date_added'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Discount',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('value', models.FloatField(help_text='€', verbose_name='amount')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='discounts', to='teleforma.student', verbose_name='student')),
+ ],
+ options={
+ 'verbose_name': 'Discount',
+ 'verbose_name_plural': 'Discounts',
+ 'db_table': 'teleforma_discounts',
+ },
+ ),
+ migrations.AddField(
+ model_name='department',
+ name='default_period',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='departments', to='teleforma.period', verbose_name='period'),
+ ),
+ migrations.AddField(
+ model_name='department',
+ name='organization',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='department', to='teleforma.organization', verbose_name='organization'),
+ ),
+ migrations.CreateModel(
+ name='CourseGroup',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('courses', models.ManyToManyField(blank=True, related_name='course_groups', to='teleforma.Course', verbose_name='courses')),
+ ],
+ options={
+ 'verbose_name': 'course group',
+ 'db_table': 'teleforma_course_group',
+ },
+ ),
+ migrations.AddField(
+ model_name='course',
+ name='department',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='course', to='teleforma.department', verbose_name='department'),
+ ),
+ migrations.AddField(
+ model_name='course',
+ name='last_professor_sent',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='teleforma.professor'),
+ ),
+ migrations.AddField(
+ model_name='course',
+ name='periods',
+ field=models.ManyToManyField(blank=True, related_name='courses', to='teleforma.Period', verbose_name='Périodes associées'),
+ ),
+ migrations.CreateModel(
+ name='Corrector',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('pay_status', models.CharField(blank=True, choices=[('honoraires', 'Honoraires'), ('salarie', 'Salarié')], default='honoraire', max_length=64, null=True, verbose_name='Statut')),
+ ('date_registered', models.DateTimeField(auto_now_add=True, null=True, verbose_name='registration date')),
+ ('courses', models.ManyToManyField(blank=True, to='teleforma.Course', verbose_name='Course')),
+ ('period', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='corrector', to='teleforma.period', verbose_name='period')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='corrector', to=settings.AUTH_USER_MODEL, unique=True, verbose_name='user')),
+ ],
+ options={
+ 'verbose_name': 'Correcteur',
+ 'verbose_name_plural': 'Correcteurs',
+ 'db_table': 'teleforma_corrector',
+ 'ordering': ['user__last_name', '-date_registered'],
+ },
+ ),
+ migrations.AddField(
+ model_name='conference',
+ name='course',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conference', to='teleforma.course', verbose_name='course'),
+ ),
+ migrations.AddField(
+ model_name='conference',
+ name='course_type',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='conference', to='teleforma.coursetype', verbose_name='course type'),
+ ),
+ migrations.AddField(
+ model_name='conference',
+ name='department',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='conference', to='teleforma.department', verbose_name='department'),
+ ),
+ migrations.AddField(
+ model_name='conference',
+ name='period',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='conference', to='teleforma.period', verbose_name='period'),
+ ),
+ migrations.AddField(
+ model_name='conference',
+ name='professor',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='conference', to='teleforma.professor', verbose_name='professor'),
+ ),
+ migrations.AddField(
+ model_name='conference',
+ name='readers',
+ field=models.ManyToManyField(blank=True, related_name='conference', to=settings.AUTH_USER_MODEL, verbose_name='readers'),
+ ),
+ migrations.AddField(
+ model_name='conference',
+ name='room',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='conference', to='teleforma.room', verbose_name='room'),
+ ),
+ migrations.AddField(
+ model_name='conference',
+ name='web_class_group',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='conferences', to='teleforma.webclassgroup', verbose_name='web class group'),
+ ),
+ migrations.CreateModel(
+ name='AppointmentSlot',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('mode', models.CharField(choices=[('presentiel', 'Presentiel'), ('distance', 'A distance')], default='presentiel', max_length=20, verbose_name='Mode')),
+ ('date', models.DateField(null=True, verbose_name='date')),
+ ('start', models.TimeField(verbose_name="heure du premier créneau (heure d'arrivée)")),
+ ('nb', models.IntegerField(verbose_name='nombre de créneaux')),
+ ('appointment_period', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='slots', to='teleforma.appointmentperiod', verbose_name='Période de prise de rendez-vous')),
+ ],
+ options={
+ 'verbose_name': 'créneau de rendez-vous',
+ 'verbose_name_plural': 'créneaux de rendez-vous',
+ 'db_table': 'teleforma_appointment_slot',
+ 'ordering': ('id',),
+ },
+ ),
+ migrations.AddField(
+ model_name='appointmentperiod',
+ name='course',
+ field=models.ForeignKey(blank=True, default=19, null=True, on_delete=django.db.models.deletion.SET_NULL, to='teleforma.course', verbose_name='Course'),
+ ),
+ migrations.AddField(
+ model_name='appointmentperiod',
+ name='periods',
+ field=models.ManyToManyField(related_name='appointment_periods', to='teleforma.Period', verbose_name='Période'),
+ ),
+ migrations.CreateModel(
+ name='AppointmentJury',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=255, verbose_name='name')),
+ ('address', models.TextField(blank=True, null=True, verbose_name='adresse')),
+ ('bbb_room', models.URLField(blank=True, help_text='Lien vers le salon BBB pour les inscriptions à distance (ex: https://bbb.parisson.com/b/yoa-mtc-a2e). La salle doit avoir été au préalable créé par un membre du jury sur https://bbb.parisson.com.', null=True, verbose_name='salon bbb')),
+ ('slot', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='jurys', to='teleforma.appointmentslot', verbose_name='creneau')),
+ ],
+ options={
+ 'verbose_name': 'jury',
+ 'db_table': 'teleforma_appointment_jury',
+ 'ordering': ('id',),
+ },
+ ),
+ migrations.CreateModel(
+ name='AEStudent',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('platform_only', models.BooleanField(verbose_name='platform only')),
+ ('courses', models.ManyToManyField(blank=True, related_name='ae_student', to='teleforma.Course', verbose_name='courses')),
+ ('period', models.ManyToManyField(blank=True, related_name='ae_student', to='teleforma.Period', verbose_name='period')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ae_student', to=settings.AUTH_USER_MODEL, unique=True, verbose_name='user')),
+ ],
+ options={
+ 'verbose_name': 'AE student',
+ 'db_table': 'teleforma_ae_student',
+ 'ordering': ['user__last_name'],
+ },
+ ),
+ migrations.CreateModel(
+ name='Appointment',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('slot_nb', models.IntegerField(verbose_name='numéro du créneau')),
+ ('jury', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='appointments', to='teleforma.appointmentjury', verbose_name='jury')),
+ ('slot', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='appointments', to='teleforma.appointmentslot', verbose_name='créneau')),
+ ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='appointments', to=settings.AUTH_USER_MODEL, verbose_name='étudiant')),
+ ],
+ options={
+ 'verbose_name': 'rendez-vous',
+ 'verbose_name_plural': 'rendez-vous',
+ 'db_table': 'teleforma_appointment',
+ 'unique_together': {('slot', 'jury', 'slot_nb')},
+ },
+ ),
+ ]