Cambios de Device model

This commit is contained in:
fjrodriguez
2023-01-30 09:07:10 -06:00
parent b69f6dbb98
commit e5aab94cf6
6 changed files with 174 additions and 7 deletions

View File

@@ -8,22 +8,76 @@ from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
from rest_framework import status, permissions
from django.contrib.auth.models import User
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from .models import sistemas_por_cliente, DeviceHistory,Device
from .serializers import DeviceSerializer
from .permissions import HasAuthorizationHeader
from django.utils import timezone
import re
class SistemasXCliente_ListView(ListView):
from rest_framework.authtoken.models import Token
from django.utils import timezone
from datetime import timedelta
from django.contrib.sessions.models import Session
def get_logged_in_users():
sessions = Session.objects.filter(expire_date__gte=timezone.now())
# Get all non-expired tokens
#tokens = Token.objects.filter(created__gte=timezone.now() - timedelta(hours=1))
tokens = Token.objects.all()
# Get a list of logged-in user ids
uid_list = [token.user_id for token in tokens]
# Get the logged-in users
users = User.objects.filter(id__in=uid_list)
for user,session in zip(users,sessions):
user.session_data = session.get_decoded()
user.session_expire = session.expire_date
return users
class UsersConnectedList(UserPassesTestMixin,LoginRequiredMixin,ListView):
model = User
template_name= 'Sistemas/Usuarios/lista.html'
def get_queryset(self):
return get_logged_in_users()
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_ListView(UserPassesTestMixin,LoginRequiredMixin, ListView):
model = sistemas_por_cliente
paginate_by = 5
template_name = 'Sistemas/Xclientes/lista.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(DetailView):
class SistemasXCliente_DetailView(UserPassesTestMixin,LoginRequiredMixin, DetailView):
model = sistemas_por_cliente
template_name= 'Sistemas/Xclientes/detail.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
'''
========================= API Views
'''
class RegisterDeviceView(APIView):
permissions_classes = (permissions.AllowAny,)
@@ -44,7 +98,7 @@ class RegisterDeviceView(APIView):
class AuthenticateDeviceView(APIView):
authentication_classes= [TokenAuthentication]
permissions_classes=[IsAuthenticated]
permissions_classes=[IsAuthenticated, HasAuthorizationHeader]
def get(self, request):
try:
@@ -66,6 +120,7 @@ class AuthenticateDeviceView(APIView):
{'Error':f'{e}','isError':True}
, status=status.HTTP_200_OK)
class LogoutView(APIView):
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,HasAuthorizationHeader,)