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
{
"username": "0",
"password": "0"
"username": "usuario1",
"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}}
###
# @name permisos
POST {{server}}/usuarios/permisos/
Authorization: Bearer {{token}}

View File

@ -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

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 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)),

View File

@ -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
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)
@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
return JsonResponse({
"path": input['path'],
"permisos": {
"": 1,
"MensajeParadero": "No considerar, uso futuro"
}
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({ "aplicaciones": aplicaciones })