From 837b406f2c24aba6cc0062227a638fd92b581bcc Mon Sep 17 00:00:00 2001 From: Mojtaba-z Date: Thu, 31 Jul 2025 09:45:13 +0330 Subject: [PATCH] parent organization --- ...3_alter_deviceactivationcode_expires_at.py | 19 +++++++++++++++ ...4_alter_deviceactivationcode_expires_at.py | 19 +++++++++++++++ ...5_alter_deviceactivationcode_expires_at.py | 19 +++++++++++++++ ...6_alter_deviceactivationcode_expires_at.py | 19 +++++++++++++++ ...7_alter_deviceactivationcode_expires_at.py | 19 +++++++++++++++ ...r_quotadistribution_parent_distribution.py | 19 +++++++++++++++ ...stribution_parent_distribution_and_more.py | 21 ++++++++++++++++ ...stribution_parent_distribution_and_more.py | 24 +++++++++++++++++++ apps/product/signals.py | 2 +- .../api/v1/viewsets/quota_distribution_api.py | 4 ++-- 10 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 apps/pos_device/migrations/0013_alter_deviceactivationcode_expires_at.py create mode 100644 apps/pos_device/migrations/0014_alter_deviceactivationcode_expires_at.py create mode 100644 apps/pos_device/migrations/0015_alter_deviceactivationcode_expires_at.py create mode 100644 apps/pos_device/migrations/0016_alter_deviceactivationcode_expires_at.py create mode 100644 apps/pos_device/migrations/0017_alter_deviceactivationcode_expires_at.py create mode 100644 apps/product/migrations/0059_alter_quotadistribution_parent_distribution.py create mode 100644 apps/product/migrations/0060_remove_historicalquotadistribution_parent_distribution_and_more.py create mode 100644 apps/product/migrations/0061_historicalquotadistribution_parent_distribution_and_more.py diff --git a/apps/pos_device/migrations/0013_alter_deviceactivationcode_expires_at.py b/apps/pos_device/migrations/0013_alter_deviceactivationcode_expires_at.py new file mode 100644 index 0000000..5fd45fa --- /dev/null +++ b/apps/pos_device/migrations/0013_alter_deviceactivationcode_expires_at.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0 on 2025-07-30 10:27 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pos_device', '0012_alter_deviceactivationcode_expires_at'), + ] + + operations = [ + migrations.AlterField( + model_name='deviceactivationcode', + name='expires_at', + field=models.DateTimeField(default=datetime.datetime(2025, 7, 30, 13, 57, 13, 348984)), + ), + ] diff --git a/apps/pos_device/migrations/0014_alter_deviceactivationcode_expires_at.py b/apps/pos_device/migrations/0014_alter_deviceactivationcode_expires_at.py new file mode 100644 index 0000000..104d9cc --- /dev/null +++ b/apps/pos_device/migrations/0014_alter_deviceactivationcode_expires_at.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0 on 2025-07-30 11:24 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pos_device', '0013_alter_deviceactivationcode_expires_at'), + ] + + operations = [ + migrations.AlterField( + model_name='deviceactivationcode', + name='expires_at', + field=models.DateTimeField(default=datetime.datetime(2025, 7, 30, 14, 53, 58, 965014)), + ), + ] diff --git a/apps/pos_device/migrations/0015_alter_deviceactivationcode_expires_at.py b/apps/pos_device/migrations/0015_alter_deviceactivationcode_expires_at.py new file mode 100644 index 0000000..5a96f8d --- /dev/null +++ b/apps/pos_device/migrations/0015_alter_deviceactivationcode_expires_at.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0 on 2025-07-31 05:29 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pos_device', '0014_alter_deviceactivationcode_expires_at'), + ] + + operations = [ + migrations.AlterField( + model_name='deviceactivationcode', + name='expires_at', + field=models.DateTimeField(default=datetime.datetime(2025, 7, 31, 8, 58, 59, 900801)), + ), + ] diff --git a/apps/pos_device/migrations/0016_alter_deviceactivationcode_expires_at.py b/apps/pos_device/migrations/0016_alter_deviceactivationcode_expires_at.py new file mode 100644 index 0000000..99e4316 --- /dev/null +++ b/apps/pos_device/migrations/0016_alter_deviceactivationcode_expires_at.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0 on 2025-07-31 05:30 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pos_device', '0015_alter_deviceactivationcode_expires_at'), + ] + + operations = [ + migrations.AlterField( + model_name='deviceactivationcode', + name='expires_at', + field=models.DateTimeField(default=datetime.datetime(2025, 7, 31, 8, 59, 58, 631805)), + ), + ] diff --git a/apps/pos_device/migrations/0017_alter_deviceactivationcode_expires_at.py b/apps/pos_device/migrations/0017_alter_deviceactivationcode_expires_at.py new file mode 100644 index 0000000..2b4287b --- /dev/null +++ b/apps/pos_device/migrations/0017_alter_deviceactivationcode_expires_at.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0 on 2025-07-31 05:42 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pos_device', '0016_alter_deviceactivationcode_expires_at'), + ] + + operations = [ + migrations.AlterField( + model_name='deviceactivationcode', + name='expires_at', + field=models.DateTimeField(default=datetime.datetime(2025, 7, 31, 9, 12, 6, 790954)), + ), + ] diff --git a/apps/product/migrations/0059_alter_quotadistribution_parent_distribution.py b/apps/product/migrations/0059_alter_quotadistribution_parent_distribution.py new file mode 100644 index 0000000..e0a9d0f --- /dev/null +++ b/apps/product/migrations/0059_alter_quotadistribution_parent_distribution.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0 on 2025-07-30 10:27 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('product', '0058_historicalquotadistribution_parent_distribution_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='quotadistribution', + name='parent_distribution', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='product.quotadistribution'), + ), + ] diff --git a/apps/product/migrations/0060_remove_historicalquotadistribution_parent_distribution_and_more.py b/apps/product/migrations/0060_remove_historicalquotadistribution_parent_distribution_and_more.py new file mode 100644 index 0000000..45dbbcc --- /dev/null +++ b/apps/product/migrations/0060_remove_historicalquotadistribution_parent_distribution_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 5.0 on 2025-07-30 11:24 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('product', '0059_alter_quotadistribution_parent_distribution'), + ] + + operations = [ + migrations.RemoveField( + model_name='historicalquotadistribution', + name='parent_distribution', + ), + migrations.RemoveField( + model_name='quotadistribution', + name='parent_distribution', + ), + ] diff --git a/apps/product/migrations/0061_historicalquotadistribution_parent_distribution_and_more.py b/apps/product/migrations/0061_historicalquotadistribution_parent_distribution_and_more.py new file mode 100644 index 0000000..808427f --- /dev/null +++ b/apps/product/migrations/0061_historicalquotadistribution_parent_distribution_and_more.py @@ -0,0 +1,24 @@ +# Generated by Django 5.0 on 2025-07-31 05:42 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('product', '0060_remove_historicalquotadistribution_parent_distribution_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='historicalquotadistribution', + name='parent_distribution', + field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='product.quotadistribution'), + ), + migrations.AddField( + model_name='quotadistribution', + name='parent_distribution', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='product.quotadistribution'), + ), + ] diff --git a/apps/product/signals.py b/apps/product/signals.py index 51af5a8..cecbc95 100644 --- a/apps/product/signals.py +++ b/apps/product/signals.py @@ -37,7 +37,7 @@ def remaining_distribution_weight(instance: QuotaDistribution): instance.remaining_weight = instance.weight - total_children_weight instance.distributed = total_children_weight instance._from_signal = True - instance.parent_distribution.save(update_fields=['remaining_weight', 'distributed']) + instance.save(update_fields=['remaining_weight', 'distributed']) if instance.parent_distribution: remaining_distribution_weight(instance.parent_distribution) diff --git a/apps/product/web/api/v1/viewsets/quota_distribution_api.py b/apps/product/web/api/v1/viewsets/quota_distribution_api.py index de4efc8..d72fc2b 100644 --- a/apps/product/web/api/v1/viewsets/quota_distribution_api.py +++ b/apps/product/web/api/v1/viewsets/quota_distribution_api.py @@ -66,10 +66,10 @@ class QuotaDistributionViewSet(viewsets.ModelViewSet): raise APIException("unauthorized", code=status.HTTP_401_UNAUTHORIZED) request.data.update({'assigner_organization': assigner_user.organization.id}) - serializer = self.serializer_class(data=request.data) - if serializer.is_valid(raise_exception=True): + if serializer.is_valid(): serializer.save() + return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_403_FORBIDDEN)