From f0d67ae4eb62bc507950738b2162a55295d0d831 Mon Sep 17 00:00:00 2001 From: rexcom28 Date: Thu, 4 May 2023 08:37:48 -0600 Subject: [PATCH] DeviceA24 model abstract --- IMMEX/models.py | 25 ++++++++++++++++++++++++- IMMEX/serializers.py | 6 +++++- IMMEX/views.py | 21 ++++++++++++++++----- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/IMMEX/models.py b/IMMEX/models.py index 69cdf65..c210576 100644 --- a/IMMEX/models.py +++ b/IMMEX/models.py @@ -1,6 +1,9 @@ from django.db import models +from django.contrib.auth.models import User from Sistemas.models import Sistema +from rest_framework.authtoken.models import Token +import re class ClientesA24(models.Model): RFC = models.CharField(max_length=13, unique=True) @@ -22,4 +25,24 @@ class Sistemas_por_cliente_A24(models.Model): ordering= ('-cliente','id_sistema') unique_together = ('id_sistema', 'cliente') - \ No newline at end of file +class DeviceA24(models.Model): + clienteA24 = models.ForeignKey(ClientesA24, related_name='cliA24',on_delete=models.CASCADE) + deviceName = models.CharField(max_length=255) + deviceOS = models.CharField(max_length=255) + deviceIP = models.GenericIPAddressField() + token = models.ForeignKey(Token, on_delete=models.CASCADE, blank=True,null=True) + username = models.ForeignKey(User, on_delete=models.CASCADE) + sistema = models.ForeignKey(Sistema, on_delete=models.CASCADE) + MAC = models.CharField(max_length=30, blank=True, null=True) + dataBase = models.CharField(max_length=40, blank=True,null=True) + + class Meta: + ordering = ('username',) + abstract =True + + def generate_username(self): + username_ = f"A24_{self.clienteA24}_{self.deviceName}_{self.MAC}" + username_ = re.sub(r'\W+', '', username_) + + if User.objects.filter(username=username_).exists(): + pass \ No newline at end of file diff --git a/IMMEX/serializers.py b/IMMEX/serializers.py index 5b62537..9845e56 100644 --- a/IMMEX/serializers.py +++ b/IMMEX/serializers.py @@ -4,4 +4,8 @@ from .models import ClientesA24 class ClientesA24Serailizer(serializers.ModelSerializer): class Meta: model =ClientesA24 - fields = ('RFC', 'Nombre','Activo','fecha_baja',) \ No newline at end of file + fields = ('RFC', 'Nombre','Activo','fecha_baja',) + + +class SerialiazerA24(serializers.ModelSerializer): + pass \ No newline at end of file diff --git a/IMMEX/views.py b/IMMEX/views.py index 7b7ebee..14664c2 100644 --- a/IMMEX/views.py +++ b/IMMEX/views.py @@ -2,7 +2,7 @@ from django.shortcuts import render from django.http import JsonResponse from django.urls import reverse_lazy -from Sistemas.models import Sistema +from Sistemas.models import Sistema, BitacoraErrores from .models import Sistemas_por_cliente_A24, ClientesA24 from django.views.generic.edit import CreateView from django.views.generic.list import ListView @@ -14,9 +14,9 @@ from .serializers import ClientesA24Serailizer from rest_framework.views import APIView from rest_framework.response import Response - +from rest_framework import status from rest_framework.permissions import IsAuthenticated -from Sistemas.permissions import ItsAdminToken +from Sistemas.permissions import ItsAdminToken, HasAuthorizationHeader import urllib.parse import traceback @@ -72,7 +72,7 @@ class ClientesIMMEX_CreateView(CreateView): """---------API VIEWS---------""" class Check_IMMEX_RFC(APIView): """Verifica que el cliente pueda Timbrar""" - permission_classes = (IsAuthenticated,ItsAdminToken,) + permission_classes = [IsAuthenticated,ItsAdminToken] def post(self,request,*args, **kwargs): rfc= request.data.get('RFC') @@ -88,4 +88,15 @@ class Check_IMMEX_RFC(APIView): return Response({'Error':f'{serializer.errors}','isError':True},status=200) return Response(serializer.data) except Exception as E: - return Response({'Error':f'check_RFC:{E} RFC:{rfc}','isError':True}) \ No newline at end of file + return Response({'Error':f'check_RFC:{E} RFC:{rfc}','isError':True}) + +class RegisterIMMEX_Device_APIView(APIView): + """Register IMMEX Devices""" + permissions_classes=[IsAuthenticated, ItsAdminToken] + def post(self,request): + try: + serializer = SerialiazerA24(data=request.data, context={'request':request}) + 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)