From 4855f8f66c2ccbc72795a5b53d74e74f671fe075 Mon Sep 17 00:00:00 2001 From: rangopits5 Date: Wed, 15 Jan 2025 14:59:23 +0000 Subject: [PATCH] u --- .gitignore | 3 ++ .idx/dev.nix | 53 +++++++++++++++++++ .vscode/settings.json | 4 ++ config/settings/local.py | 3 +- lms/app/migrations/0001_initial.py | 15 ++++-- ...2_course_image.py => 0002_module_order.py} | 8 +-- .../0003_course_is_paid_course_price.py | 23 -------- .../migrations/0003_remove_module_order.py | 17 ++++++ lms/app/migrations/0004_course_rating.py | 18 ------- ...nrollment_order_lesson_order_quiz_order.py | 28 ++++++++++ ...ent_order_remove_lesson_order_and_more.py} | 10 ++-- .../0005_rename_instructor_course_owner.py | 18 ------- lms/app/migrations/0006_enrollment_order.py | 18 +++++++ lms/app/migrations/0006_module_created_by.py | 21 -------- .../0007_alter_module_created_by.py | 21 -------- .../0007_remove_enrollment_order.py | 17 ++++++ lms/app/migrations/0008_lesson_created_by.py | 21 -------- lms/app/migrations/0008_lesson_order.py | 18 +++++++ ...on_description_alter_module_description.py | 23 -------- .../migrations/0009_remove_lesson_order.py | 17 ++++++ lms/app/models.py | 1 + 21 files changed, 199 insertions(+), 158 deletions(-) create mode 100644 .idx/dev.nix create mode 100644 .vscode/settings.json rename lms/app/migrations/{0002_course_image.py => 0002_module_order.py} (53%) delete mode 100644 lms/app/migrations/0003_course_is_paid_course_price.py create mode 100644 lms/app/migrations/0003_remove_module_order.py delete mode 100644 lms/app/migrations/0004_course_rating.py create mode 100644 lms/app/migrations/0004_enrollment_order_lesson_order_quiz_order.py rename lms/app/migrations/{0010_remove_lesson_order_remove_module_order.py => 0005_remove_enrollment_order_remove_lesson_order_and_more.py} (54%) delete mode 100644 lms/app/migrations/0005_rename_instructor_course_owner.py create mode 100644 lms/app/migrations/0006_enrollment_order.py delete mode 100644 lms/app/migrations/0006_module_created_by.py delete mode 100644 lms/app/migrations/0007_alter_module_created_by.py create mode 100644 lms/app/migrations/0007_remove_enrollment_order.py delete mode 100644 lms/app/migrations/0008_lesson_created_by.py create mode 100644 lms/app/migrations/0008_lesson_order.py delete mode 100644 lms/app/migrations/0009_lesson_description_alter_module_description.py create mode 100644 lms/app/migrations/0009_remove_lesson_order.py diff --git a/.gitignore b/.gitignore index 0f2bd49..7b2b3f4 100644 --- a/.gitignore +++ b/.gitignore @@ -277,3 +277,6 @@ lms/media/ .pytest_cache/ .ipython/ .env + +# Ignore Django migrations +*/migrations/ diff --git a/.idx/dev.nix b/.idx/dev.nix new file mode 100644 index 0000000..f9c051a --- /dev/null +++ b/.idx/dev.nix @@ -0,0 +1,53 @@ +{ pkgs, ... }: { + # Which nixpkgs channel to use. + channel = "stable-24.05"; # or "unstable" + + # Use https://search.nixos.org/packages to find packages + packages = [ + pkgs.docker + pkgs.docker-compose + ]; + + # Sets environment variables in the workspace + env = {}; + services.docker.enable = true; + + idx = { + # Search for the extensions you want on https://open-vsx.org/ and use "publisher.id" + extensions = [ + "ms-azuretools.vscode-docker" + ]; + + workspace = { + # Runs when a workspace is first created with this `dev.nix` file + onCreate = { + setup-docker-compose = '' + # Ensure Docker Compose is built only once + docker-compose -f docker-compose.local.yml build + ''; + # Open editors for the following files by default, if they exist: + default.openFiles = ["docker-compose.local.yml"]; + }; + # To run something each time the workspace is (re)started, use the `onStart` hook + onStart = { + start-docker-compose = '' + docker-compose -f docker-compose.local.yml up + ''; + }; + }; + + # Enable previews and customize configuration + previews = { + enable = true; + previews = { + web = { + command = ["docker-compose" "-f" "docker-compose.local.yml" "up"]; + env = { + PORT = "$PORT"; + }; + manager = "web"; + }; + }; + }; + }; +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..03adc8d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "IDX.aI.enableInlineCompletion": true, + "IDX.aI.enableCodebaseIndexing": true +} \ No newline at end of file diff --git a/config/settings/local.py b/config/settings/local.py index 1444356..7db5f88 100644 --- a/config/settings/local.py +++ b/config/settings/local.py @@ -14,11 +14,12 @@ SECRET_KEY = env( default="DM837WrWz7KIfZM2eb4swzqGlIG0VhhAIFNXf9KgamMtT42DTkHIEXfpF4N9rh2Y", ) # https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts -ALLOWED_HOSTS = ["127.0.0.1", "localhost"] # حدد المضيفين المسموح بهم +ALLOWED_HOSTS = ["127.0.0.1", "localhost", "8000-idx-lms-1736949042591.cluster-qtqwjj3wgzff6uxtk26wj7fzq6.cloudworkstations.dev"] # حدد المضيفين المسموح بهم CSRF_TRUSTED_ORIGINS = [ 'http://localhost:3000', 'http://127.0.0.1:3000', + 'https://8000-idx-lms-1736949042591.cluster-qtqwjj3wgzff6uxtk26wj7fzq6.cloudworkstations.dev' ] CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_CREDENTIALS = False diff --git a/lms/app/migrations/0001_initial.py b/lms/app/migrations/0001_initial.py index 0d3af14..ce18439 100644 --- a/lms/app/migrations/0001_initial.py +++ b/lms/app/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 5.0.10 on 2025-01-11 07:54 +# Generated by Django 5.0.10 on 2025-01-15 14:43 import django.db.models.deletion import uuid @@ -21,9 +21,13 @@ class Migration(migrations.Migration): ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('title', models.CharField(max_length=255, verbose_name='Course Title')), ('description', models.TextField(verbose_name='Course Description')), + ('image', models.ImageField(null=True, upload_to='courses/image')), + ('is_paid', models.BooleanField(default=False)), + ('price', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)), + ('rating', models.PositiveSmallIntegerField(blank=True, null=True)), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), - ('instructor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='courses_taught', to=settings.AUTH_USER_MODEL, verbose_name='Instructor')), + ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='courses_taught', to=settings.AUTH_USER_MODEL, verbose_name='Instructor')), ], ), migrations.CreateModel( @@ -51,9 +55,9 @@ class Migration(migrations.Migration): fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('title', models.CharField(max_length=255, verbose_name='Module Title')), - ('description', models.TextField(verbose_name='Module Description')), - ('order', models.PositiveIntegerField(default=0, unique=True, verbose_name='Order')), + ('description', models.TextField(null=True, verbose_name='Module Description')), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='modules', to='app.course', verbose_name='Course')), + ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Created By')), ], ), migrations.CreateModel( @@ -61,9 +65,10 @@ class Migration(migrations.Migration): fields=[ ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('title', models.CharField(max_length=255, verbose_name='Lesson Title')), + ('description', models.TextField(null=True, verbose_name='Lesson Description')), ('content', models.TextField(verbose_name='Lesson Content')), - ('order', models.PositiveIntegerField(default=0, verbose_name='Order')), ('file', models.FileField(blank=True, null=True, upload_to='lesson_files/', verbose_name='Attached File')), + ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Created By')), ('module', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lessons', to='app.module', verbose_name='Module')), ], ), diff --git a/lms/app/migrations/0002_course_image.py b/lms/app/migrations/0002_module_order.py similarity index 53% rename from lms/app/migrations/0002_course_image.py rename to lms/app/migrations/0002_module_order.py index 2bb500f..4bb5b14 100644 --- a/lms/app/migrations/0002_course_image.py +++ b/lms/app/migrations/0002_module_order.py @@ -1,4 +1,4 @@ -# Generated by Django 5.0.10 on 2025-01-12 10:03 +# Generated by Django 5.0.10 on 2025-01-15 14:47 from django.db import migrations, models @@ -11,8 +11,8 @@ class Migration(migrations.Migration): operations = [ migrations.AddField( - model_name='course', - name='image', - field=models.ImageField(null=True, upload_to='courses/image'), + model_name='module', + name='order', + field=models.IntegerField(blank=True, null=True), ), ] diff --git a/lms/app/migrations/0003_course_is_paid_course_price.py b/lms/app/migrations/0003_course_is_paid_course_price.py deleted file mode 100644 index d17909c..0000000 --- a/lms/app/migrations/0003_course_is_paid_course_price.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 5.0.10 on 2025-01-12 10:16 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0002_course_image'), - ] - - operations = [ - migrations.AddField( - model_name='course', - name='is_paid', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='course', - name='price', - field=models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True), - ), - ] diff --git a/lms/app/migrations/0003_remove_module_order.py b/lms/app/migrations/0003_remove_module_order.py new file mode 100644 index 0000000..ae90d8c --- /dev/null +++ b/lms/app/migrations/0003_remove_module_order.py @@ -0,0 +1,17 @@ +# Generated by Django 5.0.10 on 2025-01-15 14:48 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0002_module_order'), + ] + + operations = [ + migrations.RemoveField( + model_name='module', + name='order', + ), + ] diff --git a/lms/app/migrations/0004_course_rating.py b/lms/app/migrations/0004_course_rating.py deleted file mode 100644 index a09c735..0000000 --- a/lms/app/migrations/0004_course_rating.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.10 on 2025-01-12 14:39 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0003_course_is_paid_course_price'), - ] - - operations = [ - migrations.AddField( - model_name='course', - name='rating', - field=models.PositiveSmallIntegerField(blank=True, null=True), - ), - ] diff --git a/lms/app/migrations/0004_enrollment_order_lesson_order_quiz_order.py b/lms/app/migrations/0004_enrollment_order_lesson_order_quiz_order.py new file mode 100644 index 0000000..f68f356 --- /dev/null +++ b/lms/app/migrations/0004_enrollment_order_lesson_order_quiz_order.py @@ -0,0 +1,28 @@ +# Generated by Django 5.0.10 on 2025-01-15 14:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0003_remove_module_order'), + ] + + operations = [ + migrations.AddField( + model_name='enrollment', + name='order', + field=models.IntegerField(blank=True, null=True), + ), + migrations.AddField( + model_name='lesson', + name='order', + field=models.IntegerField(blank=True, null=True), + ), + migrations.AddField( + model_name='quiz', + name='order', + field=models.IntegerField(blank=True, null=True), + ), + ] diff --git a/lms/app/migrations/0010_remove_lesson_order_remove_module_order.py b/lms/app/migrations/0005_remove_enrollment_order_remove_lesson_order_and_more.py similarity index 54% rename from lms/app/migrations/0010_remove_lesson_order_remove_module_order.py rename to lms/app/migrations/0005_remove_enrollment_order_remove_lesson_order_and_more.py index c5ca757..b0e1a3a 100644 --- a/lms/app/migrations/0010_remove_lesson_order_remove_module_order.py +++ b/lms/app/migrations/0005_remove_enrollment_order_remove_lesson_order_and_more.py @@ -1,4 +1,4 @@ -# Generated by Django 5.0.10 on 2025-01-14 17:20 +# Generated by Django 5.0.10 on 2025-01-15 14:52 from django.db import migrations @@ -6,16 +6,20 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('app', '0009_lesson_description_alter_module_description'), + ('app', '0004_enrollment_order_lesson_order_quiz_order'), ] operations = [ + migrations.RemoveField( + model_name='enrollment', + name='order', + ), migrations.RemoveField( model_name='lesson', name='order', ), migrations.RemoveField( - model_name='module', + model_name='quiz', name='order', ), ] diff --git a/lms/app/migrations/0005_rename_instructor_course_owner.py b/lms/app/migrations/0005_rename_instructor_course_owner.py deleted file mode 100644 index 85157b9..0000000 --- a/lms/app/migrations/0005_rename_instructor_course_owner.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.0.10 on 2025-01-14 08:17 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0004_course_rating'), - ] - - operations = [ - migrations.RenameField( - model_name='course', - old_name='instructor', - new_name='owner', - ), - ] diff --git a/lms/app/migrations/0006_enrollment_order.py b/lms/app/migrations/0006_enrollment_order.py new file mode 100644 index 0000000..85f8506 --- /dev/null +++ b/lms/app/migrations/0006_enrollment_order.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.10 on 2025-01-15 14:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0005_remove_enrollment_order_remove_lesson_order_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='enrollment', + name='order', + field=models.IntegerField(blank=True, null=True), + ), + ] diff --git a/lms/app/migrations/0006_module_created_by.py b/lms/app/migrations/0006_module_created_by.py deleted file mode 100644 index 898a84f..0000000 --- a/lms/app/migrations/0006_module_created_by.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 5.0.10 on 2025-01-14 11:08 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0005_rename_instructor_course_owner'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AddField( - model_name='module', - name='created_by', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Created By'), - ), - ] diff --git a/lms/app/migrations/0007_alter_module_created_by.py b/lms/app/migrations/0007_alter_module_created_by.py deleted file mode 100644 index c4c4e73..0000000 --- a/lms/app/migrations/0007_alter_module_created_by.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 5.0.10 on 2025-01-14 11:10 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0006_module_created_by'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AlterField( - model_name='module', - name='created_by', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Created By'), - ), - ] diff --git a/lms/app/migrations/0007_remove_enrollment_order.py b/lms/app/migrations/0007_remove_enrollment_order.py new file mode 100644 index 0000000..d1d2b53 --- /dev/null +++ b/lms/app/migrations/0007_remove_enrollment_order.py @@ -0,0 +1,17 @@ +# Generated by Django 5.0.10 on 2025-01-15 14:53 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0006_enrollment_order'), + ] + + operations = [ + migrations.RemoveField( + model_name='enrollment', + name='order', + ), + ] diff --git a/lms/app/migrations/0008_lesson_created_by.py b/lms/app/migrations/0008_lesson_created_by.py deleted file mode 100644 index d075675..0000000 --- a/lms/app/migrations/0008_lesson_created_by.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 5.0.10 on 2025-01-14 12:12 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0007_alter_module_created_by'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AddField( - model_name='lesson', - name='created_by', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Created By'), - ), - ] diff --git a/lms/app/migrations/0008_lesson_order.py b/lms/app/migrations/0008_lesson_order.py new file mode 100644 index 0000000..8e1bfe1 --- /dev/null +++ b/lms/app/migrations/0008_lesson_order.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.10 on 2025-01-15 14:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0007_remove_enrollment_order'), + ] + + operations = [ + migrations.AddField( + model_name='lesson', + name='order', + field=models.IntegerField(blank=True, null=True), + ), + ] diff --git a/lms/app/migrations/0009_lesson_description_alter_module_description.py b/lms/app/migrations/0009_lesson_description_alter_module_description.py deleted file mode 100644 index d54cac7..0000000 --- a/lms/app/migrations/0009_lesson_description_alter_module_description.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 5.0.10 on 2025-01-14 13:02 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0008_lesson_created_by'), - ] - - operations = [ - migrations.AddField( - model_name='lesson', - name='description', - field=models.TextField(null=True, verbose_name='Lesson Description'), - ), - migrations.AlterField( - model_name='module', - name='description', - field=models.TextField(null=True, verbose_name='Module Description'), - ), - ] diff --git a/lms/app/migrations/0009_remove_lesson_order.py b/lms/app/migrations/0009_remove_lesson_order.py new file mode 100644 index 0000000..ff8e1bb --- /dev/null +++ b/lms/app/migrations/0009_remove_lesson_order.py @@ -0,0 +1,17 @@ +# Generated by Django 5.0.10 on 2025-01-15 14:57 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0008_lesson_order'), + ] + + operations = [ + migrations.RemoveField( + model_name='lesson', + name='order', + ), + ] diff --git a/lms/app/models.py b/lms/app/models.py index 6bb3bcf..da58c03 100644 --- a/lms/app/models.py +++ b/lms/app/models.py @@ -49,6 +49,7 @@ class Lesson(models.Model): module = models.ForeignKey(Module, on_delete=models.CASCADE, related_name='lessons', verbose_name="Module") file = models.FileField(upload_to='lesson_files/', null=True, blank=True, verbose_name="Attached File") created_by = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, verbose_name="Created By") + #order = models.IntegerField(null=True, blank=True) def str(self): return self.title