class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('technology', '0001_initial'), ] operations = [ migrations.CreateModel( name='Course', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(blank=True, max_length=255, null=True)), ('slug', models.SlugField(blank=True, unique=True)), ('url', models.URLField(blank=True, default='')), ('detail', ckeditor_uploader.fields.RichTextUploadingField()), ('logo', models.ImageField(blank=True, upload_to=course.models.course_logo)), ('logo_url', models.URLField(blank=True, default='')), ('upvotes', models.IntegerField(blank=True, null=True)), ('free', models.BooleanField(default=True)), ('level', models.CharField(choices=[('BEGINNER', 'Beginner'), ('INTERMEDIATE', 'Intermediate'), ('ADVANCED', 'Advanced')], default='Select', max_length=20)), ('submitter', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='submitter', to=settings.AUTH_USER_MODEL)), ('tech', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='technology.Technology')), ('tutor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tutor', to=settings.AUTH_USER_MODEL)), ], ), ]
class Migration(migrations.Migration): dependencies = [ ('course', '0007_auto_20210714_2033'), ] operations = [ migrations.AlterField( model_name='submission', name='comments', field=models.TextField(null=True), ), migrations.AlterField( model_name='submission', name='file', field=models.FileField( blank=True, default=None, null=True, upload_to=course.models.upload_location_submission), ), migrations.AlterField( model_name='submission', name='github_link', field=models.URLField(blank=True, default=None, null=True), ), ]
class Migration(migrations.Migration): dependencies = [ ('course', '0006_organiser_contact'), ] operations = [ migrations.AddField( model_name='submission', name='github_link', field=models.URLField(default=None, null=True), ), migrations.AddField( model_name='task', name='is_github', field=models.BooleanField( default=False, verbose_name= 'If you want the participant to provide a GitHub link please select this' ), ), migrations.AlterField( model_name='submission', name='file', field=models.FileField( default=None, null=True, upload_to=course.models.upload_location_submission), ), ]
class Migration(migrations.Migration): dependencies = [ ('userprofile', '0006_auto_20210812_1536'), ('course', '0050_enrollment_roles'), ] operations = [ migrations.AlterModelOptions( name='course', options={ 'verbose_name': 'MODEL_NAME_COURSE', 'verbose_name_plural': 'MODEL_NAME_COURSE_PLURAL' }, ), migrations.AlterModelOptions( name='coursehook', options={ 'verbose_name': 'MODEL_NAME_COURSE_HOOK', 'verbose_name_plural': 'MODEL_NAME_COURSE_HOOK_PLURAL' }, ), migrations.AlterModelOptions( name='courseinstance', options={ 'verbose_name': 'MODEL_NAME_COURSE_INSTANCE', 'verbose_name_plural': 'MODEL_NAME_COURSE_INSTANCE_PLURAL' }, ), migrations.AlterModelOptions( name='coursemodule', options={ 'ordering': ['order', 'closing_time', 'id'], 'verbose_name': 'MODEL_NAME_COURSE_MODULE', 'verbose_name_plural': 'MODEL_NAME_COURSE_MODULE_PLURAL' }, ), migrations.AlterModelOptions( name='enrollment', options={ 'verbose_name': 'MODEL_NAME_ENROLLMENT', 'verbose_name_plural': 'MODEL_NAME_ENROLLMENT_PLURAL' }, ), migrations.AlterModelOptions( name='hardcodedusertag', options={ 'verbose_name': 'MODEL_NAME_HARDCODED_USER_TAG', 'verbose_name_plural': 'MODEL_NAME_HARDCODED_USER_TAG_PLURAL' }, ), migrations.AlterModelOptions( name='learningobjectcategory', options={ 'verbose_name': 'MODEL_NAME_LEARNING_OBJECT_CATEGORY', 'verbose_name_plural': 'MODEL_NAME_LEARNING_OBJECT_CATEGORY_PLURAL' }, ), migrations.AlterModelOptions( name='studentgroup', options={ 'ordering': ['course_instance', 'timestamp'], 'verbose_name': 'MODEL_NAME_STUDENT_GROUP', 'verbose_name_plural': 'MODEL_NAME_STUDENT_GROUP_PLURAL' }, ), migrations.AlterModelOptions( name='usertag', options={ 'ordering': ['course_instance', 'name'], 'verbose_name': 'MODEL_NAME_USER_TAG', 'verbose_name_plural': 'MODEL_NAME_USER_TAG_PLURAL' }, ), migrations.AlterModelOptions( name='usertagging', options={ 'ordering': ['tag'], 'verbose_name': 'MODEL_NAME_USER_TAGGING', 'verbose_name_plural': 'MODEL_NAME_USER_TAGGING_PLURAL' }, ), migrations.AlterField( model_name='course', name='code', field=models.CharField(max_length=255, verbose_name='LABEL_CODE'), ), migrations.AlterField( model_name='course', name='name', field=models.CharField(max_length=255, verbose_name='LABEL_NAME'), ), migrations.AlterField( model_name='course', name='url', field=models.CharField( help_text='COURSE_URL_IDENTIFIER_HELPTEXT', max_length=255, unique=True, validators=[ django.core.validators.RegexValidator( message='URL_KEY_MAY_CONSIST_OF', regex=re.compile('^\\w[\\w\\-\\.]*$')) ], verbose_name='LABEL_URL'), ), migrations.AlterField( model_name='coursehook', name='course_instance', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='course_hooks', to='course.courseinstance', verbose_name='LABEL_COURSE_INSTANCE'), ), migrations.AlterField( model_name='coursehook', name='hook_type', field=models.CharField(choices=[('post-grading', 'Post grading')], default='post-grading', max_length=12, verbose_name='LABEL_HOOK_TYPE'), ), migrations.AlterField( model_name='coursehook', name='hook_url', field=models.URLField(verbose_name='LABEL_HOOK_URL'), ), migrations.AlterField( model_name='courseinstance', name='archive_time', field=models.DateTimeField(blank=True, null=True, verbose_name='LABEL_ARCHIVE_TIME'), ), migrations.AlterField( model_name='courseinstance', name='content_numbering', field=models.IntegerField(choices=[(0, 'NUMBERING_NONE'), (1, 'NUMBERING_ARABIC'), (2, 'NUMBERING_ROMAN'), (3, 'NUMBERING_HIDDEN_ARABIC')], default=1, verbose_name='LABEL_CONTENT_NUMBERING'), ), migrations.AlterField( model_name='courseinstance', name='course', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='instances', to='course.course', verbose_name='LABEL_COURSE'), ), migrations.AlterField( model_name='courseinstance', name='description', field=models.TextField(blank=True, verbose_name='LABEL_DESCRIPTION'), ), migrations.AlterField( model_name='courseinstance', name='ending_time', field=models.DateTimeField(verbose_name='LABEL_ENDING_TIME'), ), migrations.AlterField( model_name='courseinstance', name='enrollment_audience', field=models.IntegerField( choices=[(1, 'INTERNAL_USERS'), (2, 'EXTERNAL_USERS'), (3, 'ALL_USERS')], default=1, verbose_name='LABEL_ENROLLMENT_AUDIENCE'), ), migrations.AlterField( model_name='courseinstance', name='enrollment_ending_time', field=models.DateTimeField( blank=True, null=True, verbose_name='LABEL_ENROLLMENT_ENDING_TIME'), ), migrations.AlterField( model_name='courseinstance', name='enrollment_starting_time', field=models.DateTimeField( blank=True, null=True, verbose_name='LABEL_ENROLLMENT_STARTING_TIME'), ), migrations.AlterField( model_name='courseinstance', name='footer', field=models.TextField(blank=True, verbose_name='LABEL_FOOTER'), ), migrations.AlterField( model_name='courseinstance', name='head_urls', field=models.TextField( blank=True, help_text= 'COURSE_INSTANCE_EXTERNAL_CSS_AND_JS_FOR_ALL_PAGES_HELPTEXT', verbose_name='LABEL_HEAD_URLS'), ), migrations.AlterField( model_name='courseinstance', name='image', field=models.ImageField(blank=True, null=True, upload_to=course.models.build_upload_dir, verbose_name='LABEL_IMAGE'), ), migrations.AlterField( model_name='courseinstance', name='index_mode', field=models.IntegerField( choices=[(0, 'USER_RESULTS'), (1, 'TABLE_OF_CONTENTS'), (2, 'LAST_VISITED_LINK'), (10, 'EXPERIMENTAL_SETUP')], default=0, help_text='COURSE_INSTANCE_INDEX_CONTENT_SELECTION_HELPTEXT', verbose_name='LABEL_INDEX_MODE'), ), migrations.AlterField( model_name='courseinstance', name='instance_name', field=models.CharField(max_length=255, verbose_name='LABEL_INSTANCE_NAME'), ), migrations.AlterField( model_name='courseinstance', name='language', field=models.CharField(blank=True, default='', max_length=255, verbose_name='LABEL_LANGUAGE'), ), migrations.AlterField( model_name='courseinstance', name='lifesupport_time', field=models.DateTimeField(blank=True, null=True, verbose_name='LABEL_LIFESUPPORT_TIME'), ), migrations.AlterField( model_name='courseinstance', name='module_numbering', field=models.IntegerField(choices=[(0, 'NUMBERING_NONE'), (1, 'NUMBERING_ARABIC'), (2, 'NUMBERING_ROMAN'), (3, 'NUMBERING_HIDDEN_ARABIC')], default=1, verbose_name='LABEL_MODULE_NUMBERING'), ), migrations.AlterField( model_name='courseinstance', name='starting_time', field=models.DateTimeField(verbose_name='LABEL_STARTING_TIME'), ), migrations.AlterField( model_name='courseinstance', name='technical_error_emails', field=models.CharField( blank=True, help_text= 'COURSE_INSTANCE_EXERCISE_ERROR_EMAIL_RECIPIENT_OVERRIDE_HELPTEXT', max_length=255, verbose_name='LABEL_TECHNICAL_ERROR_EMAILS'), ), migrations.AlterField( model_name='courseinstance', name='url', field=models.CharField( help_text='COURSE_INSTANCE_URL_IDENTIFIER_HELPTEXT', max_length=255, validators=[ django.core.validators.RegexValidator( message='URL_KEY_MAY_CONSIST_OF', regex=re.compile('^\\w[\\w\\-\\.]*$')) ], verbose_name='LABEL_URL'), ), migrations.AlterField( model_name='courseinstance', name='view_content_to', field=models.IntegerField(choices=[(1, 'ENROLLED_STUDENTS'), (2, 'ENROLLMENT_AUDIENCE'), (3, 'ALL_REGISTERED_USERS'), (4, 'PUBLIC')], default=1, verbose_name='LABEL_VIEW_CONTENT_TO'), ), migrations.AlterField( model_name='courseinstance', name='visible_to_students', field=models.BooleanField( default=True, verbose_name='LABEL_VISIBLE_TO_STUDENTS'), ), migrations.AlterField( model_name='coursemodule', name='closing_time', field=models.DateTimeField( default=django.utils.timezone.now, help_text='MODULE_CLOSING_TIME_HELPTEXT', verbose_name='LABEL_CLOSING_TIME'), ), migrations.AlterField( model_name='coursemodule', name='course_instance', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='course_modules', to='course.courseinstance', verbose_name='LABEL_COURSE_INSTANCE'), ), migrations.AlterField( model_name='coursemodule', name='introduction', field=models.TextField(blank=True, verbose_name='LABEL_INTRODUCTION'), ), migrations.AlterField( model_name='coursemodule', name='late_submission_deadline', field=models.DateTimeField( default=django.utils.timezone.now, verbose_name='LABEL_LATE_SUBMISSION_DEADLINE'), ), migrations.AlterField( model_name='coursemodule', name='late_submission_penalty', field=lib.fields.PercentField( default=0.5, help_text='MODULE_LATE_SUBMISSION_PENALTY_HELPTEXT', verbose_name='LABEL_LATE_SUBMISSION_PENALTY'), ), migrations.AlterField( model_name='coursemodule', name='late_submissions_allowed', field=models.BooleanField( default=False, verbose_name='LABEL_LATE_SUBMISSIONS_ALLOWED'), ), migrations.AlterField( model_name='coursemodule', name='name', field=models.CharField(max_length=255, verbose_name='LABEL_NAME'), ), migrations.AlterField( model_name='coursemodule', name='opening_time', field=models.DateTimeField( default=django.utils.timezone.now, verbose_name='LABEL_EXERCISE_OPENING_TIME'), ), migrations.AlterField( model_name='coursemodule', name='order', field=models.IntegerField(default=1, verbose_name='LABEL_ORDER'), ), migrations.AlterField( model_name='coursemodule', name='points_to_pass', field=models.PositiveIntegerField( default=0, verbose_name='LABEL_POINTS_TO_PASS'), ), migrations.AlterField( model_name='coursemodule', name='reading_opening_time', field=models.DateTimeField( blank=True, help_text='MODULE_READING_OPENING_TIME_HELPTEXT', null=True, verbose_name='LABEL_READING_OPENING_TIME'), ), migrations.AlterField( model_name='coursemodule', name='status', field=models.CharField(choices=[('hidden', 'STATUS_HIDDEN'), ('maintenance', 'STATUS_MAINTENANCE'), ('ready', 'STATUS_READY'), ('unlisted', 'STATUS_UNLISTED')], default='ready', max_length=32, verbose_name='LABEL_STATUS'), ), migrations.AlterField( model_name='coursemodule', name='url', field=models.CharField( help_text='MODULE_URL_IDENTIFIER_HELPTEXT', max_length=255, validators=[ django.core.validators.RegexValidator( message='URL_KEY_MAY_CONSIST_OF', regex=re.compile('^\\w[\\w\\-\\.]*$')) ], verbose_name='LABEL_URL'), ), migrations.AlterField( model_name='enrollment', name='anon_id', field=models.CharField(blank=True, max_length=50, null=True, unique=True, verbose_name='LABEL_ANON_ID'), ), migrations.AlterField( model_name='enrollment', name='anon_name', field=models.CharField(blank=True, default='', max_length=50, verbose_name='LABEL_ANON_NAME'), ), migrations.AlterField( model_name='enrollment', name='course_instance', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='course.courseinstance', verbose_name='LABEL_COURSE_INSTANCE'), ), migrations.AlterField( model_name='enrollment', name='language', field=models.CharField(blank=True, default='', max_length=5, verbose_name='LABEL_LANGUAGE'), ), migrations.AlterField( model_name='enrollment', name='personal_code', field=models.CharField(blank=True, default='', max_length=10, verbose_name='LABEL_PERSONAL_CODE'), ), migrations.AlterField( model_name='enrollment', name='role', field=models.IntegerField(choices=[(1, 'STUDENT'), (2, 'ASSISTANT'), (3, 'TEACHER')], default=1, verbose_name='LABEL_ROLE'), ), migrations.AlterField( model_name='enrollment', name='selected_group', field=models.ForeignKey( blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='course.studentgroup', verbose_name='LABEL_SELECTED_GROUP'), ), migrations.AlterField( model_name='enrollment', name='status', field=models.IntegerField(choices=[(1, 'ACTIVE'), (2, 'REMOVED'), (3, 'BANNED')], default=1, verbose_name='LABEL_STATUS'), ), migrations.AlterField( model_name='enrollment', name='timestamp', field=models.DateTimeField(auto_now_add=True, verbose_name='LABEL_TIMESTAMP'), ), migrations.AlterField( model_name='enrollment', name='user_profile', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='userprofile.userprofile', verbose_name='LABEL_USER_PROFILE'), ), migrations.AlterField( model_name='learningobjectcategory', name='accept_unofficial_submits', field=models.BooleanField( default=False, help_text= 'LEARNING_OBJECT_CATEGORY_ACCEPT_UNOFFICIAL_SUBMISSIONS_HELPTEXT', verbose_name='LABEL_ACCEPT_UNOFFICIAL_SUBMITS'), ), migrations.AlterField( model_name='learningobjectcategory', name='confirm_the_level', field=models.BooleanField( default=False, help_text= 'LEARNING_OBJECT_CATEGORY_LEVEL_CONFIRMATION_EXERCISE_HELPTEXT', verbose_name='LABEL_CONFIRM_THE_LEVEL'), ), migrations.AlterField( model_name='learningobjectcategory', name='course_instance', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='categories', to='course.courseinstance', verbose_name='LABEL_COURSE_INSTANCE'), ), migrations.AlterField( model_name='learningobjectcategory', name='description', field=models.TextField(blank=True, verbose_name='LABEL_DESCRIPTION'), ), migrations.AlterField( model_name='learningobjectcategory', name='name', field=models.CharField(max_length=255, verbose_name='LABEL_NAME'), ), migrations.AlterField( model_name='learningobjectcategory', name='points_to_pass', field=models.PositiveIntegerField( default=0, verbose_name='LABEL_POINTS_TO_PASS'), ), migrations.AlterField( model_name='learningobjectcategory', name='status', field=models.CharField(choices=[('hidden', 'STATUS_HIDDEN'), ('nototal', 'STATUS_NO_TOTAL_POINTS'), ('ready', 'STATUS_READY')], default='ready', max_length=32, verbose_name='LABEL_STATUS'), ), migrations.AlterField( model_name='studentgroup', name='course_instance', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='groups', to='course.courseinstance', verbose_name='LABEL_COURSE_INSTANCE'), ), migrations.AlterField( model_name='studentgroup', name='members', field=models.ManyToManyField(related_name='groups', to='userprofile.UserProfile', verbose_name='LABEL_MEMBERS'), ), migrations.AlterField( model_name='studentgroup', name='timestamp', field=models.DateTimeField(auto_now_add=True, verbose_name='LABEL_TIMESTAMP'), ), migrations.AlterField( model_name='usertag', name='course_instance', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='usertags', to='course.courseinstance', verbose_name='LABEL_COURSE_INSTANCE'), ), migrations.AlterField( model_name='usertag', name='visible_to_students', field=models.BooleanField( default=False, verbose_name='LABEL_VISIBLE_TO_STUDENTS'), ), migrations.AlterField( model_name='usertagging', name='course_instance', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='taggings', to='course.courseinstance', verbose_name='LABEL_COURSE_INSTANCE'), ), migrations.AlterField( model_name='usertagging', name='tag', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='taggings', to='course.usertag', verbose_name='LABEL_TAG'), ), migrations.AlterField( model_name='usertagging', name='user', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='taggings', to='userprofile.userprofile', verbose_name='LABEL_USER'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=100)), ('short_description', models.TextField(default='')), ('startdate', models.DateTimeField()), ], options={ 'ordering': ['startdate'], }, ), migrations.CreateModel( name='Task', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('uuid', shortuuidfield.fields.ShortUUIDField(blank=True, editable=False, max_length=22, unique=True)), ('title', models.CharField(max_length=100)), ('description', models.TextField(blank=True, default=None)), ('pdf_file', models.FileField( upload_to=course.models.upload_location, validators=[ django.core.validators.FileExtensionValidator( allowed_extensions=['pdf']) ])), ('status', models.IntegerField(choices=[(0, 'Draft'), (1, 'Publish')], default=0)), ('start_date', models.DateTimeField(verbose_name='start_date')), ('last_date', models.DateTimeField(blank=True, null=True, verbose_name='last_date')), ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.category')), ], ), migrations.CreateModel( name='Submission', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('file', models.FileField(upload_to=course.models.upload_location)), ('comments', models.TextField(blank=True, null=True)), ('date', models.DateTimeField(auto_now_add=True, verbose_name='submit_date')), ('account', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.task')), ], ), migrations.CreateModel( name='Resources', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('video_link', models.URLField()), ('video_title', models.CharField(max_length=100)), ('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.task')), ], ), migrations.CreateModel( name='Organiser', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=150)), ('contact', models.CharField(max_length=14)), ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.category')), ], ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ], ), migrations.CreateModel( name='Course', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=500)), ('poster', models.ImageField( help_text= 'Please upload a cover picture for your lecture slides.', upload_to='poster/')), ('skills', models.CharField(choices=[('beginner', 'Beginner'), ('intermidate', 'Intermidate'), ('advance', 'Advance')], max_length=25)), ('powerpoint_slides', models.FileField( blank=True, help_text='Please upload your powerpoint slides here.', null=True, upload_to='powerpoint/')), ('powerpoint_url', models.URLField( blank=True, help_text='Please upload your powerpoint slides here.', null=True)), ('price', models.IntegerField( blank=True, help_text= 'Leave the table blank if the course is free of cost.', null=True)), ('created', models.DateTimeField(auto_now_add=True, null=True)), ('modified', models.DateTimeField(auto_now=True, null=True)), ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.Category')), ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='Verification', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('qualification', models.FileField( help_text= 'Upload a proof for your verification to become an instructor.', null=True, upload_to='documents/')), ('verify', models.BooleanField(default=False)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='Lecture', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('lecture_title', models.CharField( help_text='eg: Lecture 1: Introduction to computer', max_length=500)), ('lecture_content', models.FileField( blank=True, null=True, upload_to='lecture video/', validators=[course.models.validate_file_size])), ('youtube_url', models.URLField( blank=True, help_text='Link of youtube url that you want to upload', null=True)), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.Course')), ], ), migrations.CreateModel( name='Comment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('comment', models.TextField(max_length=200)), ('timestamp', models.DateTimeField(auto_now_add=True)), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='course.Course')), ('reply', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='replies', to='course.Comment')), ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), ]