Antes de actualizar
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|
||||||
|
|||||||
@@ -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'),
|
||||||
|
|||||||
@@ -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']
|
||||||
@@ -202,8 +218,34 @@ class Sistema_CreateView(CreateView):
|
|||||||
========================= 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,)
|
||||||
|
|||||||
40
Templates/Sistemas/Xclientes/listaBitacora.html
Normal file
40
Templates/Sistemas/Xclientes/listaBitacora.html
Normal 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 %}
|
||||||
|
|
||||||
@@ -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 %}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user