From 6ade0fe91608b67ef4a42b399491ad603f052baa Mon Sep 17 00:00:00 2001 From: Ruslan Date: Sat, 7 Oct 2023 14:39:25 +0300 Subject: [PATCH 1/6] Test(py-genres-and-actors) --- db/migrations/0001_initial.py | 37 +++++++++++++++++++++++++++++++++++ db/models.py | 9 +++++++++ main.py | 23 ++++++++++++++++++++-- 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 db/migrations/0001_initial.py diff --git a/db/migrations/0001_initial.py b/db/migrations/0001_initial.py new file mode 100644 index 00000000..cfad4fca --- /dev/null +++ b/db/migrations/0001_initial.py @@ -0,0 +1,37 @@ +# Generated by Django 4.0.2 on 2023-10-07 13:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Actor', + fields=[ + ('id', models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID')), + ('first_name', models.CharField(max_length=255)), + ('last_name', models.CharField(max_length=255)), + ], + ), + migrations.CreateModel( + name='Genre', + fields=[ + ('id', models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID' + )), + ('name', models.CharField(max_length=255)), + ], + ), + ] diff --git a/db/models.py b/db/models.py index 137941ff..a9766ef8 100644 --- a/db/models.py +++ b/db/models.py @@ -1 +1,10 @@ from django.db import models + + +class Genre(models.Model): + name = models.CharField(max_length=255) + + +class Actor(models.Model): + first_name = models.CharField(max_length=255), + last_name = models.CharField(max_length=255) diff --git a/main.py b/main.py index 545f938a..69ee83c0 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,26 @@ import init_django_orm # noqa: F401 - +from db.models import Genre, Actor from django.db.models import QuerySet def main() -> QuerySet: - pass + Genre.objects.create(name="Western"), + Genre.objects.create(name="Actions"), + Genre.objects.create(name="Dramma"), + Actor.objects.create(first_name="George", last_name="Klooney"), + Actor.objects.create(first_name="Kianu", last_name="Reaves"), + Actor.objects.create(first_name="Scarlett", last_name="Keegan"), + Actor.objects.create(first_name="Will", last_name="Smith"), + Actor.objects.create(first_name="Scarlett", last_name="Johansson") + + Genre.objects.filter(name="Dramma").update(name="Drama"), + Actor.objects.filter(last_name="Klooney").update(name="Clooney"), + Actor.objects.filter(first_name="Kianu").update(first_name="Keanu"), + Actor.objects.filter(last_name="Reaves").update(last_name="Reeves") + + Genre.objects.filter(name="Drama").delete() + Actor.objects.filter(first_name="Scarlett").delete() + + last_name_is_smith = Actor.objects.filter( + last_name="Smith").order_by("first_name") + return last_name_is_smith From 226a8e35dbef14736fdedc0e2ed72497833d4723 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Sat, 7 Oct 2023 16:45:31 +0300 Subject: [PATCH 2/6] Test2(py-genres-and-actors) --- db/models.py | 2 +- main.py | 59 ++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/db/models.py b/db/models.py index a9766ef8..dc931c25 100644 --- a/db/models.py +++ b/db/models.py @@ -6,5 +6,5 @@ class Genre(models.Model): class Actor(models.Model): - first_name = models.CharField(max_length=255), + first_name = models.CharField(max_length=255) last_name = models.CharField(max_length=255) diff --git a/main.py b/main.py index 69ee83c0..1000e916 100644 --- a/main.py +++ b/main.py @@ -4,23 +4,50 @@ def main() -> QuerySet: - Genre.objects.create(name="Western"), - Genre.objects.create(name="Actions"), - Genre.objects.create(name="Dramma"), - Actor.objects.create(first_name="George", last_name="Klooney"), - Actor.objects.create(first_name="Kianu", last_name="Reaves"), - Actor.objects.create(first_name="Scarlett", last_name="Keegan"), - Actor.objects.create(first_name="Will", last_name="Smith"), - Actor.objects.create(first_name="Scarlett", last_name="Johansson") - - Genre.objects.filter(name="Dramma").update(name="Drama"), - Actor.objects.filter(last_name="Klooney").update(name="Clooney"), - Actor.objects.filter(first_name="Kianu").update(first_name="Keanu"), - Actor.objects.filter(last_name="Reaves").update(last_name="Reeves") - - Genre.objects.filter(name="Drama").delete() - Actor.objects.filter(first_name="Scarlett").delete() + create_genres = ["Western", "Action", "Dramma"] + for genre in create_genres: + Genre.objects.create(name=genre) + + create_actors = [ + {"first_name": "George", "last_name": "Klooney"}, + {"first_name": "Kianu", "last_name": "Reaves"}, + {"first_name": "Scarlett", "last_name": "Keegan"}, + {"first_name": "Will", "last_name": "Smith"}, + {"first_name": "Jaden", "last_name": "Smith"}, + {"first_name": "Scarlett", "last_name": "Johansson"} + ] + for actor_data in create_actors: + Actor.objects.create(**actor_data) + + update_genres = {"Dramma": "Drama"} + for old_name, new_name in update_genres.items(): + Genre.objects.filter(name=old_name).update(name=new_name) + + update_actors = [ + {"last_name": "Klooney", "new_last_name": "Clooney"}, + {"first_name": "Kianu", "new_first_name": "Keanu", + "last_name": "Reaves", "new_last_name": "Reeves"} + ] + for actor_data in update_actors: + filter_fields = { + key: value for key, value in actor_data.items() if + not key.startswith("new_") + } + update_fields = { + key.replace("new_", ""): value for key, value in + actor_data.items() if key.startswith("new_") + } + + Actor.objects.filter(**filter_fields).update(**update_fields) + + delete_genres = ["Action"] + for genre_name in delete_genres: + Genre.objects.filter(name=genre_name).delete() + + delete_actors = {"first_name": "Scarlett"} + Actor.objects.filter(**delete_actors).delete() last_name_is_smith = Actor.objects.filter( last_name="Smith").order_by("first_name") + return last_name_is_smith From 220d3c6f43e7a9c61ba1e160489d2b547c9e2be4 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Sun, 8 Oct 2023 14:34:33 +0300 Subject: [PATCH 3/6] Test3(py-genres-and-actors) (loop for unpacking, without check and "delete_genres" variable --- main.py | 50 ++++++++++++++++++++++---------------------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/main.py b/main.py index 1000e916..baef6bf6 100644 --- a/main.py +++ b/main.py @@ -9,40 +9,34 @@ def main() -> QuerySet: Genre.objects.create(name=genre) create_actors = [ - {"first_name": "George", "last_name": "Klooney"}, - {"first_name": "Kianu", "last_name": "Reaves"}, - {"first_name": "Scarlett", "last_name": "Keegan"}, - {"first_name": "Will", "last_name": "Smith"}, - {"first_name": "Jaden", "last_name": "Smith"}, - {"first_name": "Scarlett", "last_name": "Johansson"} + ("George", "Klooney"), + ("Kianu", "Reaves"), + ("Scarlett", "Keegan"), + ("Will", "Smith"), + ("Jaden", "Smith"), + ("Scarlett", "Johansson") ] - for actor_data in create_actors: - Actor.objects.create(**actor_data) + + for first_name, last_name in create_actors: + Actor.objects.create(first_name=first_name, last_name=last_name) update_genres = {"Dramma": "Drama"} for old_name, new_name in update_genres.items(): Genre.objects.filter(name=old_name).update(name=new_name) - update_actors = [ - {"last_name": "Klooney", "new_last_name": "Clooney"}, - {"first_name": "Kianu", "new_first_name": "Keanu", - "last_name": "Reaves", "new_last_name": "Reeves"} - ] - for actor_data in update_actors: - filter_fields = { - key: value for key, value in actor_data.items() if - not key.startswith("new_") - } - update_fields = { - key.replace("new_", ""): value for key, value in - actor_data.items() if key.startswith("new_") - } - - Actor.objects.filter(**filter_fields).update(**update_fields) - - delete_genres = ["Action"] - for genre_name in delete_genres: - Genre.objects.filter(name=genre_name).delete() + Actor.objects.filter( + last_name="Klooney" + ).update( + last_name="Clooney" + ) + + Actor.objects.filter( + first_name="Kianu", last_name="Reaves" + ).update( + first_name="Keanu", last_name="Reeves" + ) + + Genre.objects.filter(name="Action").delete() delete_actors = {"first_name": "Scarlett"} Actor.objects.filter(**delete_actors).delete() From 8bfa3b81e844f02dd7e62367ad608435a1c31c49 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Sun, 8 Oct 2023 16:24:14 +0300 Subject: [PATCH 4/6] Test3(py-genres-and-actors) create_actors is tuple --- main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index baef6bf6..21895238 100644 --- a/main.py +++ b/main.py @@ -8,14 +8,14 @@ def main() -> QuerySet: for genre in create_genres: Genre.objects.create(name=genre) - create_actors = [ + create_actors = ( ("George", "Klooney"), ("Kianu", "Reaves"), ("Scarlett", "Keegan"), ("Will", "Smith"), ("Jaden", "Smith"), ("Scarlett", "Johansson") - ] + ) for first_name, last_name in create_actors: Actor.objects.create(first_name=first_name, last_name=last_name) From d9d8f3e8a1c9e47f5e985723cf3f90d7e0f68f5e Mon Sep 17 00:00:00 2001 From: Ruslan Date: Sun, 8 Oct 2023 16:30:52 +0300 Subject: [PATCH 5/6] Test3(py-genres-and-actors) without variables, create_actors is a tuple --- main.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/main.py b/main.py index 21895238..b6458d1c 100644 --- a/main.py +++ b/main.py @@ -20,28 +20,27 @@ def main() -> QuerySet: for first_name, last_name in create_actors: Actor.objects.create(first_name=first_name, last_name=last_name) - update_genres = {"Dramma": "Drama"} - for old_name, new_name in update_genres.items(): + for old_name, new_name in {"Dramma": "Drama"}.items(): Genre.objects.filter(name=old_name).update(name=new_name) - Actor.objects.filter( - last_name="Klooney" - ).update( - last_name="Clooney" - ) + Actor.objects.filter( + last_name="Klooney" + ).update( + last_name="Clooney" + ) - Actor.objects.filter( - first_name="Kianu", last_name="Reaves" - ).update( - first_name="Keanu", last_name="Reeves" - ) + Actor.objects.filter( + first_name="Kianu", last_name="Reaves" + ).update( + first_name="Keanu", last_name="Reeves" + ) - Genre.objects.filter(name="Action").delete() + Genre.objects.filter(name="Action").delete() - delete_actors = {"first_name": "Scarlett"} - Actor.objects.filter(**delete_actors).delete() + Actor.objects.filter(first_name="Scarlett").delete() last_name_is_smith = Actor.objects.filter( - last_name="Smith").order_by("first_name") + last_name="Smith" + ).order_by("first_name") return last_name_is_smith From 974b811e3ee1ae8b23b2413af9fc7f4cb5759319 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Sun, 8 Oct 2023 16:42:50 +0300 Subject: [PATCH 6/6] Test3(py-genres-and-actors) without "for" loop --- main.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index b6458d1c..bf1a0687 100644 --- a/main.py +++ b/main.py @@ -20,14 +20,9 @@ def main() -> QuerySet: for first_name, last_name in create_actors: Actor.objects.create(first_name=first_name, last_name=last_name) - for old_name, new_name in {"Dramma": "Drama"}.items(): - Genre.objects.filter(name=old_name).update(name=new_name) + Genre.objects.filter(name="Dramma").update(name="Drama") - Actor.objects.filter( - last_name="Klooney" - ).update( - last_name="Clooney" - ) + Actor.objects.filter(last_name="Klooney").update(last_name="Clooney") Actor.objects.filter( first_name="Kianu", last_name="Reaves"