From e0355fff9a7762a017896be2f3daaf657bafdb29 Mon Sep 17 00:00:00 2001 From: Mojtaba-z Date: Sun, 8 Jun 2025 08:29:46 +0330 Subject: [PATCH] change permissions name unique --- apps/authorization/api/v1/api.py | 2 ++ .../migrations/0016_alter_permissions_name.py | 18 ++++++++++ apps/authorization/models.py | 2 +- apps/product/migrations/0003_saleunit.py | 36 +++++++++++++++++++ apps/product/models.py | 15 ++++++++ apps/search/api/v1/api.py | 12 ------- 6 files changed, 72 insertions(+), 13 deletions(-) create mode 100644 apps/authorization/migrations/0016_alter_permissions_name.py create mode 100644 apps/product/migrations/0003_saleunit.py diff --git a/apps/authorization/api/v1/api.py b/apps/authorization/api/v1/api.py index 73ddb94..a1d7197 100644 --- a/apps/authorization/api/v1/api.py +++ b/apps/authorization/api/v1/api.py @@ -40,6 +40,8 @@ class PermissionViewSet(viewsets.ModelViewSet): queryset = Permissions.objects.all() serializer_class = PermissionSerializer + filter_backends = [filters.SearchFilter] + search_fields = ['page__name', ] class UserRelationViewSet(viewsets.ModelViewSet): diff --git a/apps/authorization/migrations/0016_alter_permissions_name.py b/apps/authorization/migrations/0016_alter_permissions_name.py new file mode 100644 index 0000000..3d6b875 --- /dev/null +++ b/apps/authorization/migrations/0016_alter_permissions_name.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0 on 2025-06-08 04:52 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('authorization', '0015_permissions_category_permissions_meta_page_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='permissions', + name='name', + field=models.CharField(max_length=50, unique=True), + ), + ] diff --git a/apps/authorization/models.py b/apps/authorization/models.py index 385af2d..229d2df 100644 --- a/apps/authorization/models.py +++ b/apps/authorization/models.py @@ -21,7 +21,7 @@ class Page(BaseModel): class Permissions(BaseModel): """ permission level of users """ - name = models.CharField(max_length=50) + name = models.CharField(max_length=50, unique=True) description = models.TextField(max_length=500) category_choices = ( ('api', 'Api'), diff --git a/apps/product/migrations/0003_saleunit.py b/apps/product/migrations/0003_saleunit.py new file mode 100644 index 0000000..b6fcd69 --- /dev/null +++ b/apps/product/migrations/0003_saleunit.py @@ -0,0 +1,36 @@ +# Generated by Django 5.0 on 2025-06-08 04:52 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('product', '0002_attribute_attributevalue'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='SaleUnit', + 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)), + ('unit', models.CharField(max_length=255, null=True)), + ('variation_coefficient', models.CharField(max_length=255, null=True)), + ('required', 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)), + ('product', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='sale_unit', to='product.referenceproduct')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/apps/product/models.py b/apps/product/models.py index 8de36a2..372fdce 100644 --- a/apps/product/models.py +++ b/apps/product/models.py @@ -92,3 +92,18 @@ class AttributeValue(BaseModel): def save(self, *args, **kwargs): return super(AttributeValue, self).save(*args, **kwargs) + + +class SaleUnit(BaseModel): + product = models.ForeignKey( + ReferenceProduct, + on_delete=models.CASCADE, + related_name='sale_unit', + null=True + ) + unit = models.CharField(max_length=255, null=True) + variation_coefficient = models.CharField(max_length=255, null=True) + required = models.BooleanField(default=False) + + def __str__(self): + return f'{self.product} - {self.unit} - {self.variation_coefficient}' diff --git a/apps/search/api/v1/api.py b/apps/search/api/v1/api.py index 97eafe3..58032bb 100644 --- a/apps/search/api/v1/api.py +++ b/apps/search/api/v1/api.py @@ -24,11 +24,8 @@ class PaginatedElasticSearchApiView(APIView, LimitOffsetPagination): def get(self, request, query): try: q = self.generate_q_expression(query) - print(q) search = self.document_class.search().query(q) - print(search) response = search.execute() - print(response) print(f"Found {response.hits.total.value} hit(s) for query: '{query}'") @@ -62,12 +59,3 @@ class SearchUserDocumentApiView(PaginatedElasticSearchApiView): ], minimum_should_match=1, ) - - # return Q( - # "multi_match", - # query=query, - # fields=[ - # "user__username" - # ], - # fuzziness='auto' - # )