diff --git a/docs/rest/login.rest b/docs/rest/login.rest index 94dd73f..05c375e 100644 --- a/docs/rest/login.rest +++ b/docs/rest/login.rest @@ -8,8 +8,8 @@ POST {{server}}/auth/ Content-Type: application/json { - "username": "0", - "password": "0" + "username": "usuario1", + "password": "usuario1" } ### @@ -22,5 +22,10 @@ Authorization: Bearer {{token}} ### -GET {{server}}/paraderos-image/??id_paradero=42318 -Authorization: Bearer {{token}} \ No newline at end of file +GET {{server}}/paraderos-image/?id_paradero=42318 +Authorization: Bearer {{token}} + +### +# @name permisos +POST {{server}}/usuarios/permisos/ +Authorization: Bearer {{token}} diff --git a/project/api/serializers.py b/project/api/serializers.py index e913924..edca5f2 100755 --- a/project/api/serializers.py +++ b/project/api/serializers.py @@ -130,6 +130,11 @@ class RolAplicacionSerializer(serializers.ModelSerializer): model = models.RolAplicacion fields = '__all__' +class RolLineaSerializer(serializers.ModelSerializer): + class Meta: + model = models.RolLinea + fields = '__all__' + class LetreroLUR_Serializer(serializers.ModelSerializer): class Meta: model = models.LetreroLUR diff --git a/project/api/urls.py b/project/api/urls.py index 51709f9..700b560 100755 --- a/project/api/urls.py +++ b/project/api/urls.py @@ -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 paradero_imagen, linea_paradero from api.views import dispositivo +from api.views import rol_linea # from api.views import proto router = routers.DefaultRouter() @@ -27,6 +28,7 @@ router.register('letreros-lur', letrero_lur.LetreroLUR_ViewSet) router.register('operadores', operador.OperadorViewSet) router.register('roles', rol.RolViewSet) router.register('rolyaplicacion', rolaplicacion.RolAplicacionViewSet, basename='rol_aplicacion') +router.register('roles-lineas', rol_linea.RolLineaViewSet, basename='rol_linea') urlpatterns = [ path('', include(router.urls)), diff --git a/project/api/views/rol.py b/project/api/views/rol.py index 4a7bf52..2ca6e20 100755 --- a/project/api/views/rol.py +++ b/project/api/views/rol.py @@ -1,6 +1,16 @@ from rest_framework import viewsets from .. import models, serializers +from django.db import models as dj_models class RolViewSet(viewsets.ModelViewSet): queryset = models.Rol.objects.all() - serializer_class = serializers.RolSerializer \ No newline at end of file + 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) \ No newline at end of file diff --git a/project/api/views/rol_linea.py b/project/api/views/rol_linea.py new file mode 100644 index 0000000..af87624 --- /dev/null +++ b/project/api/views/rol_linea.py @@ -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() \ No newline at end of file diff --git a/project/api/views/usuario.py b/project/api/views/usuario.py index 1f75894..893d868 100755 --- a/project/api/views/usuario.py +++ b/project/api/views/usuario.py @@ -153,17 +153,25 @@ class UsuarioViewSet(viewsets.ModelViewSet): return HttpResponse(str(e), status = 500) @action(detail=False, methods=['post']) - def permiso(self, request): - input = json.loads(request.body) + def permisos(self, request): + login = request.jwt_info['login'] - logging.error(request.jwt_info) - usuario = models.Usuario.objects.filter(login=input['login']) + usuario = models.Usuario.objects.filter(login=login).first() + 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({ - "path": input['path'], - "permisos": { - "": 1, - "MensajeParadero": "No considerar, uso futuro" - } - }) \ No newline at end of file + return JsonResponse({ "aplicaciones": aplicaciones }) \ No newline at end of file