]> git.parisson.com Git - teleforma.git/commitdiff
initial migrations
authortest test <yoanl@pilotsystems.net>
Tue, 1 Jun 2021 13:29:51 +0000 (15:29 +0200)
committerYoan Le Clanche <yoanl@pilotsystems.net>
Wed, 12 Apr 2023 09:44:30 +0000 (11:44 +0200)
teleforma/migrations/0001_initial.py [new file with mode: 0644]
teleforma/webclass/migrations/0001_initial.py [new file with mode: 0644]

diff --git a/teleforma/migrations/0001_initial.py b/teleforma/migrations/0001_initial.py
new file mode 100644 (file)
index 0000000..d586615
--- /dev/null
@@ -0,0 +1,765 @@
+# 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')},
+            },
+        ),
+    ]
diff --git a/teleforma/webclass/migrations/0001_initial.py b/teleforma/webclass/migrations/0001_initial.py
new file mode 100644 (file)
index 0000000..65a107f
--- /dev/null
@@ -0,0 +1,85 @@
+# 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
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+        ('teleforma', '0001_initial'),
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='BBBServer',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('url', models.CharField(max_length=100, verbose_name='Url du serveur BBB')),
+                ('api_key', models.CharField(max_length=100, verbose_name='API Key')),
+            ],
+            options={
+                'verbose_name': 'BBB server',
+                'verbose_name_plural': 'BBB servers',
+                'db_table': 'teleforma_bbb_server',
+            },
+        ),
+        migrations.CreateModel(
+            name='Webclass',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('duration', teleforma.fields.DurationField(blank=True, default='00:30:00', verbose_name='Durée de la conférence')),
+                ('max_participants', models.IntegerField(blank=True, default=80, null=True, verbose_name='Nombre maxium de participants par créneau')),
+                ('end_date', models.DateField(blank=True, null=True, verbose_name='date de fin')),
+                ('status', models.IntegerField(choices=[(2, 'Draft'), (3, 'Public')], default=2, verbose_name='status')),
+                ('bbb_server', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='webclass', to='webclass.bbbserver', verbose_name='Serveur BBB')),
+                ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='webclass', to='teleforma.course', verbose_name='course')),
+                ('department', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='webclass', to='teleforma.department', verbose_name='department')),
+                ('iej', models.ManyToManyField(blank=True, related_name='webclass', to='teleforma.IEJ', verbose_name='iej')),
+                ('period', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='webclass', to='teleforma.period', verbose_name='period')),
+            ],
+            options={
+                'verbose_name': 'webclass',
+                'verbose_name_plural': 'webclass',
+                'db_table': 'teleforma_webclass',
+            },
+        ),
+        migrations.CreateModel(
+            name='WebclassSlot',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('day', models.IntegerField(choices=[(0, 'Monday'), (1, 'Tuesday'), (2, 'Wednesday'), (3, 'Thursday'), (4, 'Friday'), (5, 'Saturday'), (6, 'Sunday')], verbose_name='Jour du créneau')),
+                ('start_hour', models.TimeField(verbose_name='heure du créneau')),
+                ('room_id', models.CharField(blank=True, max_length=255, null=True, verbose_name='id de la conférence BBB (généré automatiquement)')),
+                ('room_password', models.CharField(blank=True, max_length=255, null=True, verbose_name='password du modérateur (généré automatiquement)')),
+                ('participants', models.ManyToManyField(blank=True, related_name='webclass_slot', to=settings.AUTH_USER_MODEL, verbose_name='participants')),
+                ('professor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='webclass_slot', to='teleforma.professor', verbose_name='professor')),
+                ('webclass', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='slots', to='webclass.webclass')),
+            ],
+            options={
+                'verbose_name': 'webclass slot',
+                'db_table': 'teleforma_webclass_slot',
+            },
+        ),
+        migrations.CreateModel(
+            name='WebclassRecord',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('record_id', models.CharField(max_length=255, verbose_name='Enregistrement BBB')),
+                ('created', models.DateTimeField(auto_now_add=True, verbose_name='Date de la conférence')),
+                ('bbb_server', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='webclass_records', to='webclass.bbbserver', verbose_name='Serveur BBB')),
+                ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='webclass_records', to='teleforma.course', verbose_name='course')),
+                ('period', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='teleforma.period', verbose_name='period')),
+            ],
+            options={
+                'verbose_name': 'enregistrement',
+                'verbose_name_plural': 'enregistrements',
+                'db_table': 'teleforma_webclass_record',
+            },
+        ),
+    ]