diff --git a/Rasaddam_Backend/settings.py b/Rasaddam_Backend/settings.py index 577917d..8d17d48 100644 --- a/Rasaddam_Backend/settings.py +++ b/Rasaddam_Backend/settings.py @@ -70,6 +70,7 @@ INSTALLED_APPS = [ 'apps.search.apps.SearchConfig', 'apps.log.apps.LogConfig', 'apps.product.apps.ProductConfig', + 'apps.notification.apps.NotificationConfig', 'rest_captcha', 'captcha', 'drf_yasg', diff --git a/Rasaddam_Backend/urls.py b/Rasaddam_Backend/urls.py index e95c553..a15bc94 100644 --- a/Rasaddam_Backend/urls.py +++ b/Rasaddam_Backend/urls.py @@ -41,5 +41,6 @@ urlpatterns = [ path('product/', include('apps.product.urls')), path('warehouse/', include('apps.warehouse.urls')), path('pos_device/', include('apps.pos_device.urls')), + path('notification/', include('apps.notification.urls')), path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), ] diff --git a/apps/notification/api/v1/__init__.py b/apps/notification/api/v1/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/notification/api/v2/__init__.py b/apps/notification/api/v2/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/notification/api/v2/serializers.py b/apps/notification/api/v2/serializers.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/notification/api/v2/urls.py b/apps/notification/api/v2/urls.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/notification/api/v2/views.py b/apps/notification/api/v2/views.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/notification/apps.py b/apps/notification/apps.py index e69de29..b2d1ced 100644 --- a/apps/notification/apps.py +++ b/apps/notification/apps.py @@ -0,0 +1,10 @@ +from django.apps import AppConfig + + +class NotificationConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'apps.notification' + + def ready(self): + import apps.notification.signals + diff --git a/apps/notification/migrations/0001_initial.py b/apps/notification/migrations/0001_initial.py new file mode 100644 index 0000000..980759a --- /dev/null +++ b/apps/notification/migrations/0001_initial.py @@ -0,0 +1,40 @@ +# Generated by Django 5.0 on 2025-09-29 12:30 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('authentication', '0036_organization_phone'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Notification', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('create_date', models.DateTimeField(auto_now_add=True)), + ('modify_date', models.DateTimeField(auto_now=True)), + ('creator_info', models.CharField(max_length=100, null=True)), + ('modifier_info', models.CharField(max_length=100, null=True)), + ('trash', models.BooleanField(default=False)), + ('title', models.CharField(max_length=255, null=True)), + ('message', models.TextField(blank=True, null=True)), + ('type', models.CharField(choices=[('quota', 'Quota'), ('inventory', 'Inventory'), ('transaction', 'Transaction'), ('system', 'System')], default='system', max_length=50)), + ('is_read', models.BooleanField(default=False)), + ('delivered', models.BooleanField(default=False)), + ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createddby', to=settings.AUTH_USER_MODEL)), + ('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)), + ('organization', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notifications', to='authentication.organization')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/apps/notification/api/__init__.py b/apps/notification/signals.py similarity index 100% rename from apps/notification/api/__init__.py rename to apps/notification/signals.py diff --git a/apps/notification/urls.py b/apps/notification/urls.py index 0865d84..4f756db 100644 --- a/apps/notification/urls.py +++ b/apps/notification/urls.py @@ -1 +1,6 @@ -# Your urls go here +from django.urls import path, include + +urlpatterns = [ + path('web/', include('apps.notification.web.api.v1.urls')), + path('pos/', include('apps.notification.pos.api.v1.urls')) +] diff --git a/apps/warehouse/pos/api/v1/serializers.py b/apps/warehouse/pos/api/v1/serializers.py index 3c1e206..c37ac6b 100644 --- a/apps/warehouse/pos/api/v1/serializers.py +++ b/apps/warehouse/pos/api/v1/serializers.py @@ -122,7 +122,10 @@ class InventoryQuotaSaleTransactionSerializer(serializers.ModelSerializer): def create(self, validated_data): items_data = self.context['request'].data['items'] - rancher_code = validated_data.pop('rancher_national_code') + rancher_code = validated_data.pop( + 'rancher_national_code' + ) if 'rancher_national_code' in self.context['request'].data.keys() else None + with atomic(): # get rancher with national code rancher = None