From 4db67be512b6465949bdbc9e0076f9bef312bb3c Mon Sep 17 00:00:00 2001 From: fjrodriguez Date: Wed, 5 Apr 2023 14:23:08 -0600 Subject: [PATCH] Devices get token correct --- Admin/settings.py | 2 +- Clientes/urls.py | 2 -- Clientes/views.py | 18 +++++++----------- Sistemas/serializers.py | 2 +- Sistemas/views.py | 25 +++++++++++++++---------- 5 files changed, 24 insertions(+), 25 deletions(-) diff --git a/Admin/settings.py b/Admin/settings.py index 11ba091..14d896d 100644 --- a/Admin/settings.py +++ b/Admin/settings.py @@ -126,7 +126,7 @@ if DEBUG: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', - 'NAME': 'cfdi_as', + 'NAME': 'cfdi_as2', 'USER': 'root', 'PASSWORD':os.getenv("BD_PASS"), 'HOST': '127.0.0.1', diff --git a/Clientes/urls.py b/Clientes/urls.py index a9e3fa5..b5029e2 100644 --- a/Clientes/urls.py +++ b/Clientes/urls.py @@ -9,7 +9,6 @@ from .views import ( send_timbres_Email, Retrive_Cliente_Email, PACS_Retrive_RFCS, - #API DRF saldo_funct2, @@ -25,7 +24,6 @@ urlpatterns = [ path('add_timbre/', add_timbre2.as_view(), name='add_timbre'), path('cancela_timbre/', CancelaTimbre.as_view(), name='cancela_timbre'), - path('timbres_cliente//', timbres_cliente, name='timbres_cliente'), path('cliente/update//',ClientesUpdateView.as_view(),name='update_cliente'), path('cliente/add/', ClientesCreateView.as_view(), name='add_cliente'), diff --git a/Clientes/views.py b/Clientes/views.py index f4cf50f..cf0a73f 100644 --- a/Clientes/views.py +++ b/Clientes/views.py @@ -383,11 +383,10 @@ def PACS_Retrive_RFCS(request): return JsonResponse({'PACS':timbres},status=status) - #-----------------------------------API VIEWS #-------------------------------------------- - class check_RFC(APIView): + """Verifica que el cliente pueda Timbrar""" permission_classes = (IsAuthenticated,ItsAdminToken,) def get(self,request): rfc = request.GET.get('RFC', None) @@ -405,28 +404,24 @@ class check_RFC(APIView): except Exception as E: return Response({'Error':f'check_RFC:{E} RFC:{rfc}','isError':True}) - class CancelaTimbre(APIView): - """API CLASS for upload the CFDI Version into the server""" - permissions_classes=[IsAuthenticated,] - + """API CLASS for upload the CFDI Version into the server""" + permissions_classes=[IsAuthenticated,ItsAdminToken] + def post(self,request,*args, **kwargs): UUID = request.data.get('UUID') try: timbre = Timbres.objects.get(uuid=UUID) obj={'uuid':f'{timbre.uuid}_','rfcc':timbre.rfcc,'fecha':timbre.fecha,'folio':timbre.folio, - 'serie':timbre.serie,'tipo':'Cancela','rfcp':timbre.rfcp,'modo':'Normal' - } + 'serie':timbre.serie,'tipo':'Cancela','rfcp':timbre.rfcp,'modo':'Normal'} cancelaTimbre = Timbres.objects.create(**obj) - + return Response({'success':True}) except Exception as ex: BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.CancelaTimbre') return Response({'Error':f'{ex}','isError':True}) - - class add_timbre(APIView): pass @@ -495,6 +490,7 @@ class ErroresTimbresListView(UserPassesTestMixin, LoginRequiredMixin,ListView): if not res: messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.') return res + class ClientesUpdateView(UserPassesTestMixin,LoginRequiredMixin,UpdateView): model= Clientes form_class=ClienteForm diff --git a/Sistemas/serializers.py b/Sistemas/serializers.py index 4d0a78e..4911d1b 100644 --- a/Sistemas/serializers.py +++ b/Sistemas/serializers.py @@ -2,7 +2,7 @@ from rest_framework import serializers from .models import Device, Sistema, sistemas_por_cliente from Clientes.models import Clientes -from django.db.models import Q +from django.db.models import Q class SistemaPrimaryKeyRelatedField(serializers.PrimaryKeyRelatedField): def to_internal_value(self,data): diff --git a/Sistemas/views.py b/Sistemas/views.py index 1a3d4ac..c65ef3f 100644 --- a/Sistemas/views.py +++ b/Sistemas/views.py @@ -22,6 +22,7 @@ from .models import sistemas_por_cliente, DeviceHistory,Device from .serializers import DeviceSerializer from .permissions import HasAuthorizationHeader from .models import Sistema, BitacoraErrores +from Clientes.models import Clientes from .forms import SistemaForm,sistemas_por_clienteForm from django.utils import timezone import re @@ -42,6 +43,8 @@ from .customStorage import CustomStorage from django.contrib.auth.decorators import login_required +from django.db.models import Q + @login_required def uploadZipViewHTML(request): if request.method=="GET": @@ -226,13 +229,17 @@ class GetDeviceToken(APIView): try: data = request.data sis = Sistema.objects.get(nombre_sistema=data.get('sistema')) + cli = Clientes.objects.get(RFC=data.get('client')) + print('cli.id',cli.id) device = Device.objects.filter( - client__RFC=data.get('client'), - device_name=data.get('device_name'), - ip_address=data.get('ip_address'), - sistema= sis.id,#data.get('sistema'), - macAddress=data.get('macAddress') + Q(client=cli.id) + #& Q(device_name=data.get('device_name')) + #& Q(ip_address=data.get('ip_address')) + #& Q(sistema= int(sis.id)) + #& Q(macAddress__icontains=data.get('macAddress')) ).first() + + print('device',device) if device is not None: token = {"token":str(device.token)} else: @@ -249,8 +256,8 @@ class GetDeviceToken(APIView): class RegisterDeviceView(APIView): """Registra al Device""" - permissions_classes = (permissions.AllowAny,) - + #permissions_classes = (permissions.AllowAny,) + permissions_classes=[IsAuthenticated, HasAuthorizationHeader] def post(self,request): try: serializer = DeviceSerializer(data=request.data,context={'request':request}) @@ -262,9 +269,7 @@ class RegisterDeviceView(APIView): except Exception as ex: BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.RegisterDeviceView') - return Response({'Error':f'{ex}','isError':True} - , status=status.HTTP_200_OK - ) + return Response({'Error':f'{ex}','isError':True}, status=status.HTTP_200_OK) class AuthenticateDeviceView(APIView): """Autentica al device"""