Răsfoiți Sursa

Merge branch 'add-models' of blezz-tech/sharix-open-webservice-running into unstable

+ 3 - 0
admin/__init__.py

@@ -0,0 +1,3 @@
+from .frequentaddress import FrequentaddressAdmin
+from .favoritecontacts import FavoritecontactsAdmin
+from .preferreddrivers import PreferreddriversAdmin

+ 12 - 0
admin/favoritecontacts.py

@@ -0,0 +1,12 @@
+from django.contrib import admin
+from dbsynce.models import Favoritecontacts
+
+@admin.register(Favoritecontacts)
+class FavoritecontactsAdmin(admin.ModelAdmin):
+    list_display = (
+        'id',
+        'client_id',
+        'full_name',
+        'phone_number',
+    )
+    list_filter = ('id','client_id')

+ 13 - 0
admin/frequentaddress.py

@@ -0,0 +1,13 @@
+from django.contrib import admin
+from dbsynce.models import Frequentaddress
+
+@admin.register(Frequentaddress)
+class FrequentaddressAdmin(admin.ModelAdmin):
+    list_display = (
+        'client_id',
+        'address',
+        'description',
+        'id',
+    )
+    list_filter = ('client_id', 'id')
+    

+ 11 - 0
admin/preferreddrivers.py

@@ -0,0 +1,11 @@
+from django.contrib import admin
+from dbsynce.models import Preferreddrivers
+
+@admin.register(Preferreddrivers)
+class PreferreddriversAdmin(admin.ModelAdmin):
+    list_display = (
+        'id',
+        'client_id',
+        'provider_id',
+    )
+    list_filter = ('id','client_id','provider_id')

+ 4 - 0
apiviews/__init__.py

@@ -1 +1,5 @@
 from .orders_local import OrdersLocalMVS
 from .orders_local import OrdersLocalMVS
+from .personinfo import PersonInfoMVS
+from .frequentaddress import FrequentaddressMVS
+from .favoritecontacts import FavoritecontactsMVS
+from .preferreddrivers import PreferreddriversMVS

+ 30 - 0
apiviews/favoritecontacts.py

@@ -0,0 +1,30 @@
+from django.db.models import CharField
+from django.db.models.functions import Cast
+from rest_framework import viewsets, permissions
+from rest_framework.response import Response
+from dbsynce.serializer import FavoritecontactsSerializer
+from dbsynce.models import Favoritecontacts
+
+class FavoritecontactsMVS(viewsets.ModelViewSet):
+    queryset = Favoritecontacts.objects.all()
+    serializer_class = FavoritecontactsSerializer
+    permission_classes = [permissions.IsAuthenticated]
+
+    def list(self, request, *args, **kwargs):
+        client_id = self.request.query_params.get('client_id')
+        queryset = Favoritecontacts.objects.all()
+        if client_id is not None:
+            queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+        serializer = self.get_serializer(queryset, many=True)
+        return Response(serializer.data)
+    
+    def delete(self, request, *args, **kwargs):
+        client_id = self.request.query_params.get('client_id')
+        queryset = Favoritecontacts.objects.all()
+        if not client_id:
+            return Response({'error': 'client_id parameter is required'}, status=status.HTTP_400_BAD_REQUEST)
+        
+        queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+        queryset.delete()
+
+        return Response({'message': f'Objects with client_id {client_id} were deleted'}, status=status.HTTP_204_NO_CONTENT)

+ 30 - 0
apiviews/frequentaddress.py

@@ -0,0 +1,30 @@
+from django.db.models import CharField
+from django.db.models.functions import Cast
+from rest_framework import viewsets, permissions
+from rest_framework.response import Response
+from dbsynce.serializer import FrequentaddressSerializer
+from dbsynce.models import Frequentaddress
+
+class FrequentaddressMVS(viewsets.ModelViewSet):
+    queryset = Frequentaddress.objects.all()
+    serializer_class = FrequentaddressSerializer
+    permission_classes = [permissions.IsAuthenticated]
+
+    def list(self, request, *args, **kwargs):
+        client_id = self.request.query_params.get('client_id')
+        queryset = Frequentaddress.objects.all()
+        if client_id is not None:
+            queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+        serializer = self.get_serializer(queryset, many=True)
+        return Response(serializer.data)
+    
+    def delete(self, request, *args, **kwargs):
+        client_id = self.request.query_params.get('client_id')
+        queryset = Frequentaddress.objects.all()
+        if not client_id:
+            return Response({'error': 'client_id parameter is required'}, status=status.HTTP_400_BAD_REQUEST)
+        
+        queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+        queryset.delete()
+
+        return Response({'message': f'Objects with client_id {client_id} were deleted'}, status=status.HTTP_204_NO_CONTENT)

+ 8 - 0
apiviews/personinfo.py

@@ -0,0 +1,8 @@
+from dbsynce.serializer import PersonInfoSerializer
+from rest_framework import viewsets, permissions
+from django.contrib.auth import get_user_model
+
+class PersonInfoMVS(viewsets.ReadOnlyModelViewSet): 
+    queryset = get_user_model().objects.all()
+    serializer_class = PersonInfoSerializer
+    permission_classes = [permissions.IsAuthenticated]

+ 30 - 0
apiviews/preferreddrivers.py

@@ -0,0 +1,30 @@
+from django.db.models import CharField
+from django.db.models.functions import Cast
+from rest_framework import viewsets, permissions
+from rest_framework.response import Response
+from dbsynce.serializer import PreferreddriversSerializer
+from dbsynce.models import Preferreddrivers
+
+class PreferreddriversMVS(viewsets.ModelViewSet):
+    queryset = Preferreddrivers.objects.all()
+    serializer_class = PreferreddriversSerializer
+    permission_classes = [permissions.IsAuthenticated]
+
+    def list(self, request, *args, **kwargs):
+        client_id = self.request.query_params.get('client_id')
+        queryset = Preferreddrivers.objects.all()
+        if client_id is not None:
+            queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+        serializer = self.get_serializer(queryset, many=True)
+        return Response(serializer.data)
+    
+    def delete(self, request, *args, **kwargs):
+        client_id = self.request.query_params.get('client_id')
+        queryset = Preferreddrivers.objects.all()
+        if not client_id:
+            return Response({'error': 'client_id parameter is required'}, status=status.HTTP_400_BAD_REQUEST)
+        
+        queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+        queryset.delete()
+
+        return Response({'message': f'Objects with client_id {client_id} were deleted'}, status=status.HTTP_204_NO_CONTENT)

+ 3 - 0
models/__init__.py

@@ -1 +1,4 @@
 from .webservice_running import OrdersLocal
 from .webservice_running import OrdersLocal
+from .frequentaddress import Frequentaddress
+from .favoritecontacts import Favoritecontacts
+from .preferreddrivers import Preferreddrivers

+ 11 - 0
models/favoritecontacts.py

@@ -0,0 +1,11 @@
+from django.db import models
+from tickets.models import Ticket
+
+class Favoritecontacts(models.Model):
+    client_id = models.IntegerField(help_text="id") 
+    phone_number = models.CharField(max_length=50,help_text="Номер телефона") 
+    full_name = models.CharField(max_length=100, help_text="Полное ФИО")
+    class Meta:
+        db_table = "favoritecontacts"
+        verbose_name = "Избранные контакты"
+        verbose_name_plural = "Избранные контакты"

+ 11 - 0
models/frequentaddress.py

@@ -0,0 +1,11 @@
+from django.db import models
+from tickets.models import Ticket
+
+class Frequentaddress(models.Model):
+    client_id = models.IntegerField(help_text="id клиента")
+    address = models.CharField(max_length=150, help_text="Адрес")
+    description = models.CharField(max_length=150, help_text="Описание")
+    class Meta:
+        db_table = "frequentaddress"
+        verbose_name = "Частые адреса"
+        verbose_name_plural = "Частые адреса"

+ 10 - 0
models/preferreddrivers.py

@@ -0,0 +1,10 @@
+from django.db import models
+from tickets.models import Ticket
+
+class Preferreddrivers(models.Model):
+    client_id = models.IntegerField(help_text="Client id") 
+    provider_id = models.IntegerField(help_text="Provider id") 
+    class Meta:
+        db_table = "Prefereddrivers"
+        verbose_name = "Предпочтительные водители"
+        verbose_name_plural = "Предпочтительные водители"

+ 5 - 1
serializer/__init__.py

@@ -1 +1,5 @@
-from .orders_local import OrdersLocalSerializer
+from .orders_local import OrdersLocalSerializer
+from .personinfo import PersonInfoSerializer
+from .frequentaddress import FrequentaddressSerializer
+from .favoritecontacts import FavoritecontactsSerializer
+from .preferreddrivers import PreferreddriversSerializer

+ 7 - 0
serializer/favoritecontacts.py

@@ -0,0 +1,7 @@
+from rest_framework import serializers
+from dbsynce.models import Favoritecontacts
+
+class FavoritecontactsSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Favoritecontacts
+        fields= ['full_name','phone_number','id']

+ 7 - 0
serializer/frequentaddress.py

@@ -0,0 +1,7 @@
+from rest_framework import serializers
+from dbsynce.models import Frequentaddress
+
+class FrequentaddressSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Frequentaddress
+        exclude = ["id","client_id"]

+ 12 - 0
serializer/personinfo.py

@@ -0,0 +1,12 @@
+from rest_framework import serializers
+from django.contrib.auth import get_user_model
+
+class PersonInfoSerializer(serializers.ModelSerializer):
+    full_name = serializers.ReadOnlyField()
+
+    class Meta:
+        model = get_user_model()
+        fields = ['full_name']
+
+    def validate(self, attrs):
+        return super().validate(attrs)

+ 7 - 0
serializer/preferreddrivers.py

@@ -0,0 +1,7 @@
+from rest_framework import serializers
+from dbsynce.models import Preferreddrivers
+
+class PreferreddriversSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = Preferreddrivers
+        fields= ['provider_id','client_id','id']

+ 5 - 1
urls.py

@@ -7,8 +7,12 @@ app_name = 'webservice_running'
 
 
 router = routers.DefaultRouter()
 router = routers.DefaultRouter()
 router.register(r'webservice', OrdersLocalMVS)
 router.register(r'webservice', OrdersLocalMVS)
+router.register(r'personinfo', PersonInfoMVS)
+router.register(r'frequentaddress', FrequentaddressMVS)
+router.register(r'favoritecontacts', FavoritecontactsMVS)
+router.register(r'preferreddrivers', PreferreddriversMVS)
 
 
 urlpatterns = [
 urlpatterns = [
     path('order_reg/', views.order_reg, name="order_reg"),
     path('order_reg/', views.order_reg, name="order_reg"),
     path('api/', include(router.urls), name="webservice_running_api"),
     path('api/', include(router.urls), name="webservice_running_api"),
-]
+]