From ca904081c320185bea55aa21f0419f94b5239549 Mon Sep 17 00:00:00 2001 From: Sayyid Hamid Mahdavi Date: Sun, 19 Oct 2025 12:41:03 +0330 Subject: [PATCH] bugfix --- ..._promotion_amount_alter_promotion_state.py | 23 ------ .../migrations/0003_alter_plan_balance.py | 18 ----- .../migrations/0004_promotion_base_amount.py | 18 ----- .../migrations/0005_event_plan_event_list.py | 32 -------- .../0006_rename_details_event_data.py | 18 ----- ...lan_max_amount_plan_min_amount_and_more.py | 28 ------- .../0008_event_application_event_user.py | 28 ------- ...vent_user_recipient_promotion_recipient.py | 40 ---------- ..._amount_remove_plan_min_amount_and_more.py | 76 ------------------- ...eventsaver_remove_recipient_wallet_uuid.py | 32 -------- apps/promotions/models.py | 4 +- apps/promotions/serializers.py | 7 +- 12 files changed, 5 insertions(+), 319 deletions(-) delete mode 100644 apps/promotions/migrations/0002_promotion_promotion_amount_alter_promotion_state.py delete mode 100644 apps/promotions/migrations/0003_alter_plan_balance.py delete mode 100644 apps/promotions/migrations/0004_promotion_base_amount.py delete mode 100644 apps/promotions/migrations/0005_event_plan_event_list.py delete mode 100644 apps/promotions/migrations/0006_rename_details_event_data.py delete mode 100644 apps/promotions/migrations/0007_plan_max_amount_plan_min_amount_and_more.py delete mode 100644 apps/promotions/migrations/0008_event_application_event_user.py delete mode 100644 apps/promotions/migrations/0009_alter_event_user_recipient_promotion_recipient.py delete mode 100644 apps/promotions/migrations/0010_remove_plan_max_amount_remove_plan_min_amount_and_more.py delete mode 100644 apps/promotions/migrations/0011_eventsaver_remove_recipient_wallet_uuid.py diff --git a/apps/promotions/migrations/0002_promotion_promotion_amount_alter_promotion_state.py b/apps/promotions/migrations/0002_promotion_promotion_amount_alter_promotion_state.py deleted file mode 100644 index c9b948b..0000000 --- a/apps/promotions/migrations/0002_promotion_promotion_amount_alter_promotion_state.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 5.2.4 on 2025-08-03 12:02 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('promotions', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='promotion', - name='promotion_amount', - field=models.IntegerField(blank=True, null=True), - ), - migrations.AlterField( - model_name='promotion', - name='state', - field=models.IntegerField(choices=[(0, 'Created'), (1, 'Assigned'), (2, 'Promoted'), (10, 'Expired')], default=0), - ), - ] diff --git a/apps/promotions/migrations/0003_alter_plan_balance.py b/apps/promotions/migrations/0003_alter_plan_balance.py deleted file mode 100644 index e457be3..0000000 --- a/apps/promotions/migrations/0003_alter_plan_balance.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.2.4 on 2025-08-03 12:03 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('promotions', '0002_promotion_promotion_amount_alter_promotion_state'), - ] - - operations = [ - migrations.AlterField( - model_name='plan', - name='balance', - field=models.IntegerField(default=0, verbose_name='balance'), - ), - ] diff --git a/apps/promotions/migrations/0004_promotion_base_amount.py b/apps/promotions/migrations/0004_promotion_base_amount.py deleted file mode 100644 index 8a3a88d..0000000 --- a/apps/promotions/migrations/0004_promotion_base_amount.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.2.4 on 2025-08-03 12:19 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('promotions', '0003_alter_plan_balance'), - ] - - operations = [ - migrations.AddField( - model_name='promotion', - name='base_amount', - field=models.IntegerField(blank=True, null=True), - ), - ] diff --git a/apps/promotions/migrations/0005_event_plan_event_list.py b/apps/promotions/migrations/0005_event_plan_event_list.py deleted file mode 100644 index b554a2d..0000000 --- a/apps/promotions/migrations/0005_event_plan_event_list.py +++ /dev/null @@ -1,32 +0,0 @@ -# Generated by Django 5.2.6 on 2025-09-16 17:32 - -import uuid -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('promotions', '0004_promotion_base_amount'), - ] - - operations = [ - migrations.CreateModel( - name='Event', - fields=[ - ('uuid', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)), - ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)), - ('updated_at', models.DateTimeField(auto_now=True, db_index=True)), - ('label', models.CharField(db_index=True, max_length=255)), - ('details', models.JSONField()), - ], - options={ - 'abstract': False, - }, - ), - migrations.AddField( - model_name='plan', - name='event_list', - field=models.JSONField(default=list), - ), - ] diff --git a/apps/promotions/migrations/0006_rename_details_event_data.py b/apps/promotions/migrations/0006_rename_details_event_data.py deleted file mode 100644 index 18a5685..0000000 --- a/apps/promotions/migrations/0006_rename_details_event_data.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.2.6 on 2025-09-18 11:22 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('promotions', '0005_event_plan_event_list'), - ] - - operations = [ - migrations.RenameField( - model_name='event', - old_name='details', - new_name='data', - ), - ] diff --git a/apps/promotions/migrations/0007_plan_max_amount_plan_min_amount_and_more.py b/apps/promotions/migrations/0007_plan_max_amount_plan_min_amount_and_more.py deleted file mode 100644 index 452dbdc..0000000 --- a/apps/promotions/migrations/0007_plan_max_amount_plan_min_amount_and_more.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 5.2.6 on 2025-09-20 11:25 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('promotions', '0006_rename_details_event_data'), - ] - - operations = [ - migrations.AddField( - model_name='plan', - name='max_amount', - field=models.FloatField(blank=True, null=True), - ), - migrations.AddField( - model_name='plan', - name='min_amount', - field=models.FloatField(blank=True, null=True), - ), - migrations.AlterField( - model_name='plan', - name='promotion_type', - field=models.CharField(choices=[('percentage', 'percentage'), ('others', 'others')], db_index=True, max_length=64, verbose_name='promotion type'), - ), - ] diff --git a/apps/promotions/migrations/0008_event_application_event_user.py b/apps/promotions/migrations/0008_event_application_event_user.py deleted file mode 100644 index f5de80d..0000000 --- a/apps/promotions/migrations/0008_event_application_event_user.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 5.2.6 on 2025-09-20 12:52 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('promotions', '0007_plan_max_amount_plan_min_amount_and_more'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - migrations.swappable_dependency(settings.OAUTH2_PROVIDER_APPLICATION_MODEL), - ] - - operations = [ - migrations.AddField( - model_name='event', - name='application', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to=settings.OAUTH2_PROVIDER_APPLICATION_MODEL), - ), - migrations.AddField( - model_name='event', - name='user', - field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), - preserve_default=False, - ), - ] diff --git a/apps/promotions/migrations/0009_alter_event_user_recipient_promotion_recipient.py b/apps/promotions/migrations/0009_alter_event_user_recipient_promotion_recipient.py deleted file mode 100644 index 3d7a950..0000000 --- a/apps/promotions/migrations/0009_alter_event_user_recipient_promotion_recipient.py +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by Django 5.2.6 on 2025-09-21 14:19 - -import django.db.models.deletion -import uuid -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('promotions', '0008_event_application_event_user'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AlterField( - model_name='event', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), - ), - migrations.CreateModel( - name='Recipient', - fields=[ - ('uuid', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)), - ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)), - ('updated_at', models.DateTimeField(auto_now=True, db_index=True)), - ('label', models.CharField(db_index=True, max_length=255)), - ('plan', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='promotions.plan')), - ], - options={ - 'abstract': False, - }, - ), - migrations.AddField( - model_name='promotion', - name='recipient', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='promotions', to='promotions.recipient'), - ), - ] diff --git a/apps/promotions/migrations/0010_remove_plan_max_amount_remove_plan_min_amount_and_more.py b/apps/promotions/migrations/0010_remove_plan_max_amount_remove_plan_min_amount_and_more.py deleted file mode 100644 index e0756bf..0000000 --- a/apps/promotions/migrations/0010_remove_plan_max_amount_remove_plan_min_amount_and_more.py +++ /dev/null @@ -1,76 +0,0 @@ -# Generated by Django 5.1.7 on 2025-10-12 13:39 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('promotions', '0009_alter_event_user_recipient_promotion_recipient'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.RemoveField( - model_name='plan', - name='max_amount', - ), - migrations.RemoveField( - model_name='plan', - name='min_amount', - ), - migrations.RemoveField( - model_name='plan', - name='policy', - ), - migrations.AddField( - model_name='plan', - name='data', - field=models.JSONField(blank=True, default=dict, null=True, verbose_name='data'), - ), - migrations.AddField( - model_name='plan', - name='user', - field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), - preserve_default=False, - ), - migrations.AddField( - model_name='recipient', - name='base_amount', - field=models.FloatField(blank=True, null=True), - ), - migrations.AddField( - model_name='recipient', - name='data', - field=models.JSONField(blank=True, default=dict, null=True), - ), - migrations.AddField( - model_name='recipient', - name='promotion_type', - field=models.CharField(choices=[('percentage', 'percentage'), ('referral', 'referral'), ('others', 'others')], db_index=True, default=None, max_length=64, verbose_name='promotion type'), - preserve_default=False, - ), - migrations.AddField( - model_name='recipient', - name='recipient_uuid_field', - field=models.CharField(db_index=True, default=None, max_length=255), - preserve_default=False, - ), - migrations.AddField( - model_name='recipient', - name='wallet_uuid', - field=models.UUIDField(blank=True, null=True), - ), - migrations.AlterField( - model_name='plan', - name='promotion_type', - field=models.CharField(choices=[('percentage', 'percentage'), ('referral', 'referral'), ('others', 'others')], db_index=True, max_length=64, verbose_name='promotion type'), - ), - migrations.AlterField( - model_name='recipient', - name='plan', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='recipients', to='promotions.plan'), - ), - ] diff --git a/apps/promotions/migrations/0011_eventsaver_remove_recipient_wallet_uuid.py b/apps/promotions/migrations/0011_eventsaver_remove_recipient_wallet_uuid.py deleted file mode 100644 index 810ba35..0000000 --- a/apps/promotions/migrations/0011_eventsaver_remove_recipient_wallet_uuid.py +++ /dev/null @@ -1,32 +0,0 @@ -# Generated by Django 5.1.7 on 2025-10-14 16:49 - -import uuid -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('promotions', '0010_remove_plan_max_amount_remove_plan_min_amount_and_more'), - ] - - operations = [ - migrations.CreateModel( - name='EventSaver', - fields=[ - ('uuid', models.UUIDField(db_index=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)), - ('created_at', models.DateTimeField(auto_now_add=True, db_index=True)), - ('updated_at', models.DateTimeField(auto_now=True, db_index=True)), - ('title', models.CharField(max_length=255, verbose_name='title')), - ('event_label', models.CharField(db_index=True, max_length=255, unique=True, verbose_name='label')), - ('save_once', models.BooleanField(default=False, verbose_name='save once')), - ], - options={ - 'abstract': False, - }, - ), - migrations.RemoveField( - model_name='recipient', - name='wallet_uuid', - ), - ] diff --git a/apps/promotions/models.py b/apps/promotions/models.py index fc692a1..dc3eac7 100644 --- a/apps/promotions/models.py +++ b/apps/promotions/models.py @@ -48,7 +48,7 @@ class EventSaver(BaseModel): raise Exception(_('already saved')) else: - event = Event.objects.create(user=user, application=application, label=label, defaults={"date": date}) + event = Event.objects.create(user=user, application=application, label=label, data= data) return event @@ -212,7 +212,7 @@ class Promotion(BaseModel): PROMOTED = 2, _('Promoted') EXPIRED = 10, _('Expired') - user_id = models.UUIDField() # user_uuid + user_uuid = models.UUIDField() # user_uuid application = models.ForeignKey(oauth2_settings.APPLICATION_MODEL, on_delete=models.PROTECT, related_name='+', null=True, blank=True) plan = models.ForeignKey(Plan, on_delete=models.PROTECT, related_name='promotions', null=True, blank=True) diff --git a/apps/promotions/serializers.py b/apps/promotions/serializers.py index dea5e3c..beb86ba 100644 --- a/apps/promotions/serializers.py +++ b/apps/promotions/serializers.py @@ -13,10 +13,10 @@ class PromotionSerializer(serializers.ModelSerializer): "base_amount", "promotion_amount", "plan", - "user", + "user_uuid", "application", ) - read_only_fields = ('user', 'application', "promotion_amount",) + read_only_fields = ('user_uuid', 'application', "promotion_amount",) class EventSerializer(serializers.ModelSerializer): @@ -37,8 +37,7 @@ class PlanSerializer(serializers.ModelSerializer): class Meta: model = Plan - fields = ("label" - "title", + fields = ("title", "description", "base_amount", "application",