Antes de actualizar

This commit is contained in:
fjrodriguez
2023-02-24 12:26:21 -06:00
parent 4b5b044de9
commit 4983cdc8fa
8 changed files with 108 additions and 21 deletions

View File

@@ -71,7 +71,7 @@ class Clientes(models.Model):
year = today.year year = today.year
return Timbres.objects.filter(rfcc=self.RFC, created_at__year=str(year),created_at__month=str(month)).count() return Timbres.objects.filter(rfcc=self.RFC, created_at__year=str(year),created_at__month=str(month)).count()
class Meta: class Meta:
ordering = ('-Activo','-conteo_mes','RFC') ordering = ('-Activo','-conteo_mes','RFC',)
def __str__(self): def __str__(self):
return self.Nombre return self.Nombre

View File

@@ -450,9 +450,7 @@ class check_host(APIView):
permission_classes = (IsAuthenticated,ItsAdminToken,) permission_classes = (IsAuthenticated,ItsAdminToken,)
def post(self,request, format=None): def post(self,request, format=None):
data = request.data data = request.data
return Response(data) return Response(data)
#---------------------------CLASS BASED VIEWS #---------------------------CLASS BASED VIEWS
#-------------------------------------------- #--------------------------------------------
class ErroresTimbresListView(LoginRequiredMixin,ListView): class ErroresTimbresListView(LoginRequiredMixin,ListView):

View File

@@ -7,7 +7,6 @@ from django.contrib.auth.models import BaseUserManager
import re import re
class BitacoraErrores(models.Model): class BitacoraErrores(models.Model):
LEVEL_CHOICES = [ LEVEL_CHOICES = [
(1,'Critical'), (1,'Critical'),
@@ -21,6 +20,8 @@ class BitacoraErrores(models.Model):
timestamp = models.DateTimeField(auto_now_add=True) timestamp = models.DateTimeField(auto_now_add=True)
traceback = models.TextField(null=True,blank=True) traceback = models.TextField(null=True,blank=True)
view = models.CharField(max_length=150,null=True,blank=True) view = models.CharField(max_length=150,null=True,blank=True)
class Meta:
ordering= ('-timestamp',)
def __str__(self): def __str__(self):
return f"{self.get_level_display()}: {self.message}" return f"{self.get_level_display()}: {self.message}"

View File

@@ -4,18 +4,21 @@ from .views import (
#CVB #CVB
SistemasXCliente_ListView, SistemasXCliente_ListView,
SistemasBitacora_ListView,
SistemasXCliente_DetailView, SistemasXCliente_DetailView,
UsersConnectedList, UsersConnectedList,
SistemasxCliente_CreateView, SistemasxCliente_CreateView,
#DRF APIViews #DRF APIViews
RegisterDeviceView, RegisterDeviceView,
GetDeviceToken,
AuthenticateDeviceView, AuthenticateDeviceView,
LogoutView, LogoutView,
CheckVersionView, CheckVersionView,
UploadZipVersionView, UploadZipVersionView,
Sistema_CreateView, Sistema_CreateView,
#function #function
download_version_FromServer, download_version_FromServer,
uploadZipViewHTML, uploadZipViewHTML,
@@ -23,10 +26,12 @@ from .views import (
) )
urlpatterns = [ urlpatterns = [
path('',SistemasXCliente_ListView.as_view(),name='lista_sistmas'), path('',SistemasXCliente_ListView.as_view(),name='lista_sistmas'),
path('bitacora/',SistemasBitacora_ListView.as_view(),name='lista_sistmas_bitacora'),
path('detail/<str:pk>/',SistemasXCliente_DetailView.as_view(),name='detail_sistemas'), path('detail/<str:pk>/',SistemasXCliente_DetailView.as_view(),name='detail_sistemas'),
path('create_sistemas_form/',Sistema_CreateView.as_view(), name='create_sistemas_form'), path('create_sistemas_form/',Sistema_CreateView.as_view(), name='create_sistemas_form'),
path('crearSistema/',SistemasxCliente_CreateView.as_view(), name='create_sistemas'), path('crearSistema/',SistemasxCliente_CreateView.as_view(), name='create_sistemas'),
path('registerPC/',RegisterDeviceView.as_view(),name='register_PC'), path('registerPC/',RegisterDeviceView.as_view(),name='register_PC'),
path('getTokenPC/',GetDeviceToken.as_view(),name='getToken_PC'),
path('authenticatePC/',AuthenticateDeviceView.as_view(), name="authenticateDevice"), path('authenticatePC/',AuthenticateDeviceView.as_view(), name="authenticateDevice"),
path('logout/', LogoutView.as_view(), name='logout_sistemas'), path('logout/', LogoutView.as_view(), name='logout_sistemas'),
path('usuariosConectados/', UsersConnectedList.as_view(), name='lista_usuarios'), path('usuariosConectados/', UsersConnectedList.as_view(), name='lista_usuarios'),

View File

@@ -102,10 +102,15 @@ class UploadZipVersionView(APIView):
def download_version_FromServer(request): def download_version_FromServer(request):
"""""" """"""
try: try:
sys= request.GET.get('sys')
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print('BASE_DIR',BASE_DIR) if sys:
filename=f'{sys}.zip'
else:
filename = 'CFDI.zip' filename = 'CFDI.zip'
filepath = f'{BASE_DIR }/downloadSystems/{filename}' filepath = f'{BASE_DIR }/downloadSystems/{filename}'
#path = open(filepath, 'r') #path = open(filepath, 'r')
with open(filepath, 'rb') as path: with open(filepath, 'rb') as path:
mime_type, _ = mimetypes.guess_type(filepath) mime_type, _ = mimetypes.guess_type(filepath)
@@ -159,6 +164,18 @@ class SistemasXCliente_ListView(UserPassesTestMixin,LoginRequiredMixin, ListView
messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.') messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.')
return res return res
class SistemasBitacora_ListView(UserPassesTestMixin,LoginRequiredMixin, ListView):
model = BitacoraErrores
paginate_by = 5
template_name = 'Sistemas/Xclientes/listaBitacora.html'
def test_func(self):
res = self.request.user.groups.filter(name= 'admin_soft')
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 SistemasXCliente_DetailView(UserPassesTestMixin,LoginRequiredMixin, DetailView): class SistemasXCliente_DetailView(UserPassesTestMixin,LoginRequiredMixin, DetailView):
model = sistemas_por_cliente model = sistemas_por_cliente
template_name= 'Sistemas/Xclientes/detail.html' template_name= 'Sistemas/Xclientes/detail.html'
@@ -177,7 +194,6 @@ class SistemasXCliente_DetailView(UserPassesTestMixin,LoginRequiredMixin, Detail
context['devices'] = Device.objects.filter(sistema=sistema, client=cliente.id) context['devices'] = Device.objects.filter(sistema=sistema, client=cliente.id)
return context return context
class SistemasxCliente_CreateView(CreateView): class SistemasxCliente_CreateView(CreateView):
model = sistemas_por_cliente model = sistemas_por_cliente
fields = ['id_sistema', 'cliente', 'num_licencias'] fields = ['id_sistema', 'cliente', 'num_licencias']
@@ -199,11 +215,37 @@ class Sistema_CreateView(CreateView):
return JsonResponse(data) return JsonResponse(data)
''' '''
========================= API Views ========================= API Views
''' '''
class GetDeviceToken(APIView):
authentication_classes= [TokenAuthentication]
permissions_classes=[IsAuthenticated, HasAuthorizationHeader]
def post(self,request):
try:
data = request.data
device = Device.objects.filter(
client__RFC=data.get('client'),
device_name=data.get('device_name'),
ip_address=data.get('ip_address'),
sistema=data.get('sistema'),
macAddress=data.get('macAddress')
).first()
if device is not None:
token = {"token":str(device.token)}
else:
token = {"token":""}
return Response(token)
except Exception as ex:
BitacoraErrores.objects.create(
level=2,
message=str(ex),
traceback=traceback.format_exc(),
view='Sistemas.GetDeviceToken'
)
return Response(
{'Error':f'{ex}','isError':True}
, status=status.HTTP_200_OK)
class RegisterDeviceView(APIView): class RegisterDeviceView(APIView):
permissions_classes = (permissions.AllowAny,) permissions_classes = (permissions.AllowAny,)
@@ -217,13 +259,12 @@ class RegisterDeviceView(APIView):
else: else:
return Response({'Error':f'{serializer.errors}','isError':True}, status=status.HTTP_200_OK) return Response({'Error':f'{serializer.errors}','isError':True}, status=status.HTTP_200_OK)
except Exception as ex: except Exception as ex:
BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.RegisterDeviceView') BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(),
view='Sistemas.RegisterDeviceView')
return Response( return Response(
{'Error':f'{ex}','isError':True} {'Error':f'{ex}','isError':True}
, status=status.HTTP_200_OK) , status=status.HTTP_200_OK)
class AuthenticateDeviceView(APIView): class AuthenticateDeviceView(APIView):
authentication_classes= [TokenAuthentication] authentication_classes= [TokenAuthentication]
permissions_classes=[IsAuthenticated, HasAuthorizationHeader] permissions_classes=[IsAuthenticated, HasAuthorizationHeader]
@@ -248,8 +289,8 @@ class AuthenticateDeviceView(APIView):
BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.AuthenticateDeviceView') BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.AuthenticateDeviceView')
return Response( return Response(
{'Error':f'{ex}','isError':True} {'Error':f'{ex}','isError':True}
, status=status.HTTP_200_OK) , status=status.HTTP_200_OK
)
class LogoutView(APIView): class LogoutView(APIView):
authentication_classes = (TokenAuthentication,) authentication_classes = (TokenAuthentication,)

View File

@@ -0,0 +1,40 @@
{% extends "base.html" %}
{% block title %}
Sistemas Errores Bitacora Lista
{% endblock title %}
{% block content %}
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">Error</th>
<th scope="col">Vista</th>
<th scope="col">--</th>
<th scope="col">--</th>
<th>--</th>
</tr>
</thead>
<tbody>
{% for row in object_list %}
<tr>
<th scope="row">{{row.message}}</th>
<td>{{row.view}}</td>
<td>--</td>
<td>--</td>
{% comment %}
<td><a href="{% url 'detail_sistemas' row.id %}" class="btn btn-info">Detalles</a></td>
{% endcomment %}
</tr>
{% endfor %}
</tbody>
</table>
{% endblock content %}

View File

@@ -65,7 +65,9 @@
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
{% if request.user.is_superuser %} {% if request.user.is_superuser %}
<a class="dropdown-item" href="{% url 'ErroresTimbresList' %}">Lista Errores</a> <a class="dropdown-item" href="{% url 'ErroresTimbresList' %}">Lista Errores Timbres</a>
<a class="dropdown-item" href="{% url 'lista_sistmas_bitacora' %}">Lista Errores Bitacora</a>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
{% endif %} {% endif %}