From a3333eb5ad48f6a888e616c4aaf2fca63eae77d9 Mon Sep 17 00:00:00 2001 From: test test Date: Tue, 1 Jun 2021 15:29:51 +0200 Subject: [PATCH] initial migrations --- teleforma/migrations/0001_initial.py | 765 ++++++++++++++++++ teleforma/webclass/migrations/0001_initial.py | 85 ++ 2 files changed, 850 insertions(+) create mode 100644 teleforma/migrations/0001_initial.py create mode 100644 teleforma/webclass/migrations/0001_initial.py diff --git a/teleforma/migrations/0001_initial.py b/teleforma/migrations/0001_initial.py new file mode 100644 index 00000000..d5866158 --- /dev/null +++ b/teleforma/migrations/0001_initial.py @@ -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 index 00000000..65a107ff --- /dev/null +++ b/teleforma/webclass/migrations/0001_initial.py @@ -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', + }, + ), + ] -- 2.39.5