avance mantenedor roles

francisco/photos
Francisco Sandoval 2024-01-07 13:16:13 -03:00
parent 3331a4df7f
commit d42149192f
6 changed files with 60 additions and 16 deletions

View File

@ -8,8 +8,8 @@ POST {{server}}/auth/
Content-Type: application/json Content-Type: application/json
{ {
"username": "0", "username": "usuario1",
"password": "0" "password": "usuario1"
} }
### ###
@ -22,5 +22,10 @@ Authorization: Bearer {{token}}
### ###
GET {{server}}/paraderos-image/??id_paradero=42318 GET {{server}}/paraderos-image/?id_paradero=42318
Authorization: Bearer {{token}} Authorization: Bearer {{token}}
###
# @name permisos
POST {{server}}/usuarios/permisos/
Authorization: Bearer {{token}}

View File

@ -130,6 +130,11 @@ class RolAplicacionSerializer(serializers.ModelSerializer):
model = models.RolAplicacion model = models.RolAplicacion
fields = '__all__' fields = '__all__'
class RolLineaSerializer(serializers.ModelSerializer):
class Meta:
model = models.RolLinea
fields = '__all__'
class LetreroLUR_Serializer(serializers.ModelSerializer): class LetreroLUR_Serializer(serializers.ModelSerializer):
class Meta: class Meta:
model = models.LetreroLUR model = models.LetreroLUR

View File

@ -5,6 +5,7 @@ from api.views import usuario, auth, aplicacion, tipo, persona, comuna, region,
from api.views import mapa, linea, letrero_lur, operador from api.views import mapa, linea, letrero_lur, operador
from api.views import paradero_imagen, linea_paradero from api.views import paradero_imagen, linea_paradero
from api.views import dispositivo from api.views import dispositivo
from api.views import rol_linea
# from api.views import proto # from api.views import proto
router = routers.DefaultRouter() router = routers.DefaultRouter()
@ -27,6 +28,7 @@ router.register('letreros-lur', letrero_lur.LetreroLUR_ViewSet)
router.register('operadores', operador.OperadorViewSet) router.register('operadores', operador.OperadorViewSet)
router.register('roles', rol.RolViewSet) router.register('roles', rol.RolViewSet)
router.register('rolyaplicacion', rolaplicacion.RolAplicacionViewSet, basename='rol_aplicacion') router.register('rolyaplicacion', rolaplicacion.RolAplicacionViewSet, basename='rol_aplicacion')
router.register('roles-lineas', rol_linea.RolLineaViewSet, basename='rol_linea')
urlpatterns = [ urlpatterns = [
path('', include(router.urls)), path('', include(router.urls)),

View File

@ -1,6 +1,16 @@
from rest_framework import viewsets from rest_framework import viewsets
from .. import models, serializers from .. import models, serializers
from django.db import models as dj_models
class RolViewSet(viewsets.ModelViewSet): class RolViewSet(viewsets.ModelViewSet):
queryset = models.Rol.objects.all() queryset = models.Rol.objects.all()
serializer_class = serializers.RolSerializer serializer_class = serializers.RolSerializer
def create(self, request, *args, **kwargs):
# se indica que si no se indico el id, entonces sea el maximo + 1
if not request.data.get('id_rol', None):
max_id = models.Rol.objects.aggregate(dj_models.Max('id_rol'))['id_rol__max']
new_id = max_id + 1 if max_id is not None else 1
request.data['id_rol'] = new_id
return super().create(request, *args, **kwargs)

View File

@ -0,0 +1,14 @@
from rest_framework import viewsets
from .. import models, serializers
import logging
class RolLineaViewSet(viewsets.ModelViewSet):
serializer_class = serializers.RolLineaSerializer
def get_queryset(self):
id_rol = self.request.query_params.get('id_rol') # Obtener el valor del parámetro id_rol desde la solicitud
if id_rol is not None:
return models.RolLinea.objects.filter(id_rol=id_rol)
return models.RolLinea.objects.all()

View File

@ -153,17 +153,25 @@ class UsuarioViewSet(viewsets.ModelViewSet):
return HttpResponse(str(e), status = 500) return HttpResponse(str(e), status = 500)
@action(detail=False, methods=['post']) @action(detail=False, methods=['post'])
def permiso(self, request): def permisos(self, request):
input = json.loads(request.body) login = request.jwt_info['login']
logging.error(request.jwt_info) usuario = models.Usuario.objects.filter(login=login).first()
usuario = models.Usuario.objects.filter(login=input['login']) registros = models.RolAplicacion.objects.filter(id_rol=usuario.id_rol)
aplicaciones = []
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({
'id_aplicacion': registro.id_aplicacion.id_aplicacion,
'path_app': registro.id_aplicacion.path_app,
'nombre_app': registro.id_aplicacion.nombre_app,
'escritura': escritura
})
return JsonResponse({ return JsonResponse({ "aplicaciones": aplicaciones })
"path": input['path'],
"permisos": {
"": 1,
"MensajeParadero": "No considerar, uso futuro"
}
})