/
home
/
liman
/
liman-backend
/
conversation
/
File Upload :
llllll
Current File: /home/liman/liman-backend/conversation/api.py
from django.http import JsonResponse from rest_framework.decorators import api_view from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.response import Response from rest_framework import status, viewsets from rest_framework.decorators import permission_classes as permissionclasses from limanAuth.models import User from permissions.permissions import PermissionLevel from utility.table_engine.src.table_engine import TableEngine from .serializers import * # ---------------- Document ---------------- class AdminConversationView(viewsets.ModelViewSet): serializer_class = ConversationSerializer queryset = Conversation.objects.all() access_level = 100 permission_classes = [PermissionLevel] http_method_names = ['get', 'post', 'patch', 'update', 'delete'] def create(self, request): try: _inp = request.dict conversation = ConversationSerializer(data=_inp) if conversation.is_valid(): conversation.save() for reminder in _inp['reminders']: reminder['conversation'] = conversation.instance.pk item = ReminderSerializer(data=reminder) if item.is_valid(): item.save() else: conversation.instance.delete() return Response(data=item.errors, status=422) return Response(data=conversation.data, status=200) else: return Response(data=conversation.errors, status=422) except Exception as e: return Response(str(e), status=500) @staticmethod @api_view(['POST']) @permissionclasses([PermissionLevel]) def table(request): table_engine = TableEngine( Conversation.objects.all(), request.bodyDict).init_cols( ["id", "customer__user__first_name"]).execute() return JsonResponse(table_engine) class BuiltConversation(viewsets.ModelViewSet): serializer_class = BuiltConversation queryset = Conversation.objects.all() permission_classes = [IsAuthenticated] http_method_names = ['get', 'post', 'patch', 'update', 'delete'] def create(self, request): try: _inp = request.dict _inp['creator'] = request.user.pk user = User.objects.filter(pk=_inp['user']).first() if user.customer not in request.user.porter.customers.all(): return Response(data="مشتری مورد نظر یافت نشد.", status=404) conversation = ConversationSerializer(data=_inp) if conversation.is_valid(): conversation.save() for reminder in _inp['reminders']: reminder['conversation'] = conversation.instance.pk item = ReminderSerializer(data=reminder) if item.is_valid(): item.save() else: conversation.instance.delete() return Response(data=item.errors, status=422) return Response(data=conversation.data, status=200) else: return Response(data=conversation.errors, status=422) except Exception as e: return Response(str(e), status=500) @staticmethod @api_view(['POST']) @permissionclasses([PermissionLevel]) def table(request): table_engine = TableEngine( Conversation.objects.filter(creator=request.user), request.bodyDict).init_cols( ["id", "customer__user__first_name"]).execute() print(table_engine) for item in table_engine['rows'][0]: item['reminders'] = ReminderSerializer(instance=Reminder.objects.filter(conversation=item['id']), many=True).data return JsonResponse(table_engine) def get_queryset(self): user = self.request.user return Conversation.objects.filter(creator=user) class MyConversationView(viewsets.ModelViewSet): serializer_class = ConversationSerializer queryset = Conversation.objects.all() permission_classes = [IsAuthenticated] http_method_names = ['get'] @staticmethod @api_view(['POST']) @permissionclasses([IsAuthenticated]) def table(request): table_engine = TableEngine( Conversation.objects.filter(user=request.user), request.bodyDict).init_cols( ["id", "customer__user__first_name"]).execute() return JsonResponse(table_engine) def get_queryset(self): user = self.request.user return Conversation.objects.filter(user=user) # ---------------- Reminder ---------------- class AdminReminderView(viewsets.ModelViewSet): serializer_class = ReminderSerializer queryset = Reminder.objects.all() access_level = 100 permission_classes = [PermissionLevel] http_method_names = ['get', 'post', 'patch', 'update', 'delete'] @staticmethod @api_view(['POST']) @permissionclasses([PermissionLevel]) def table(request): table_engine = TableEngine( Reminder.objects.all(), request.bodyDict).init_cols( ["id", "title"]).execute() return JsonResponse(table_engine) class BuiltReminderView(viewsets.ModelViewSet): serializer_class = ReminderPKField queryset = Reminder.objects.all() permission_classes = [IsAuthenticated] http_method_names = ['get', 'post', 'patch', 'update', 'delete'] def get_queryset(self): user = self.request.user return Reminder.objects.filter(conversation__creator__id=user.pk)
Copyright ©2k19 -
Hexid
|
Tex7ure