se filtran lineas si usuario no es superuser

francisco/photos
Francisco Sandoval 2024-01-08 21:08:31 -03:00
parent 840f0449d6
commit 9d1507f445
2 changed files with 22 additions and 6 deletions

View File

@ -5,7 +5,8 @@ from rest_framework.decorators import action, api_view
from django_filters.rest_framework import DjangoFilterBackend
from django.db import connection
from .. import models, serializers
from django.http import JsonResponse
from django.http import JsonResponse, HttpResponse
from django.forms.models import model_to_dict
from os import getenv
import redis
import json
@ -18,6 +19,19 @@ class LineaViewSet(viewsets.ModelViewSet):
filter_backends = [DjangoFilterBackend]
filterset_fields = ['id_operador', 'route_short_name', 'route_long_name', 'vigente']
def list(self, request, pk=None, *args, **kwargs):
login = request.jwt_info['login']
usuario = models.Usuario.objects.filter(login=login).first()
if usuario.superuser == False:
rol_lineas = models.RolLinea.objects.filter(id_rol=usuario.id_rol)
lineas = []
for row in rol_lineas:
lineas.append(model_to_dict(row.id_linea))
return JsonResponse(lineas, safe=False)
else:
return super().list(request, pk, *args, **kwargs)
@action(detail=False, methods=['get'])
def proto(self, request, pk=None):

View File

@ -160,15 +160,20 @@ class UsuarioViewSet(viewsets.ModelViewSet):
login = request.jwt_info['login']
usuario = models.Usuario.objects.filter(login=login).first()
escritura = usuario.superuser
if 'path' in input:
path = input.get('path')
aplicacion = models.Aplicacion.objects.filter(path_app=path).first()
rol_aplicacion = models.RolAplicacion.objects.filter(id_rol=usuario.id_rol, id_aplicacion=aplicacion.id_aplicacion).first()
if escritura == False:
rol_aplicacion = models.RolAplicacion.objects.filter(id_rol=usuario.id_rol, id_aplicacion=aplicacion.id_aplicacion).first()
escritura = rol_aplicacion.solo_visualizar == False
return JsonResponse({
'path_app': path,
'nombre_app': aplicacion.nombre_app,
'escritura': rol_aplicacion.solo_visualizar == False
'escritura': escritura
})
else:
registros = models.RolAplicacion.objects.filter(id_rol=usuario.id_rol)
@ -176,9 +181,6 @@ class UsuarioViewSet(viewsets.ModelViewSet):
for registro in registros:
if registro.id_aplicacion.vigente:
rol_app = models.RolAplicacion.objects.filter(id_rol=registro.id_rol, id_aplicacion=registro.id_aplicacion).first()
escritura = True
if rol_app != None:
escritura = rol_app.solo_visualizar != True
aplicaciones.append({
'path_app': registro.id_aplicacion.path_app,