diff --git a/docker/01_create_tables.sql b/docker/01_create_tables.sql index f899403..c7bbb37 100644 --- a/docker/01_create_tables.sql +++ b/docker/01_create_tables.sql @@ -244,9 +244,12 @@ create table if not exists ROL_APLICACION ( ID_APLICACION INT4 not null, ID_ROL INT4 not null, SOLO_VISUALIZAR BOOL null, - constraint PK_ROL_APLICACION primary key (ID_APLICACION, ID_ROL) + ID_ROL_APP SERIAL4 not null, + CONSTRAINT rol_aplicacion_pk PRIMARY KEY (ID_ROL_APP) ); +CREATE UNIQUE INDEX rol_aplicacion_id_aplicacion_idx ON ROL_APLICACION USING btree (ID_APLICACION, ID_ROL); + /*==============================================================*/ /* Table: TIPO_DISPOSITIVO */ /*==============================================================*/ diff --git a/project/api/models.py b/project/api/models.py index c3ec96b..c2891fe 100755 --- a/project/api/models.py +++ b/project/api/models.py @@ -263,7 +263,8 @@ class Rol(models.Model): class RolAplicacion(models.Model): - id_aplicacion = models.OneToOneField(Aplicacion, models.DO_NOTHING, db_column='id_aplicacion', primary_key=True) # The composite primary key (id_aplicacion, id_rol) found, that is not supported. The first column is selected. + id_rol_app = models.AutoField(primary_key=True) + id_aplicacion = models.ForeignKey(Aplicacion, models.DO_NOTHING, db_column='id_aplicacion') # The composite primary key (id_aplicacion, id_rol) found, that is not supported. The first column is selected. id_rol = models.ForeignKey(Rol, models.DO_NOTHING, db_column='id_rol') solo_visualizar = models.BooleanField(blank=True, null=True) diff --git a/project/api/serializers.py b/project/api/serializers.py index 284958d..4c9562b 100755 --- a/project/api/serializers.py +++ b/project/api/serializers.py @@ -87,4 +87,14 @@ class UsuarioSerializer(serializers.ModelSerializer): class AuthSerializer(serializers.Serializer): username = serializers.CharField(required=True) - password = serializers.CharField(required=True, style={'input_type':'password'}) \ No newline at end of file + password = serializers.CharField(required=True, style={'input_type':'password'}) + +class RolSerializer(serializers.ModelSerializer): + class Meta: + model = models.Rol + fields = '__all__' + +class RolAplicacionSerializer(serializers.ModelSerializer): + class Meta: + model = models.RolAplicacion + fields = '__all__' \ No newline at end of file diff --git a/project/api/urls.py b/project/api/urls.py index bbcdd9b..7eeb5ba 100755 --- a/project/api/urls.py +++ b/project/api/urls.py @@ -1,7 +1,7 @@ from django.urls import path, include from rest_framework import routers # from api import views -from api.views import usuario, auth, aplicacion, tipo, persona, comuna, region, paradero +from api.views import usuario, auth, aplicacion, tipo, persona, comuna, region, paradero, rol, rolaplicacion from api.views import mapa, linea, operador router = routers.DefaultRouter() @@ -18,6 +18,8 @@ router.register('regiones', region.RegionViewSet) router.register('paraderos', paradero.ParaderoViewSet) router.register('lineas', linea.LineaViewSet) router.register('operadores', operador.OperadorViewSet) +router.register('roles', rol.RolViewSet) +router.register('rolyaplicacion', rolaplicacion.RolAplicacionViewSet, basename='rol_aplicacion') urlpatterns = [ path('', include(router.urls)), diff --git a/project/api/views/rol.py b/project/api/views/rol.py new file mode 100644 index 0000000..4a7bf52 --- /dev/null +++ b/project/api/views/rol.py @@ -0,0 +1,6 @@ +from rest_framework import viewsets +from .. import models, serializers + +class RolViewSet(viewsets.ModelViewSet): + queryset = models.Rol.objects.all() + serializer_class = serializers.RolSerializer \ No newline at end of file diff --git a/project/api/views/rolaplicacion.py b/project/api/views/rolaplicacion.py new file mode 100644 index 0000000..be4225e --- /dev/null +++ b/project/api/views/rolaplicacion.py @@ -0,0 +1,16 @@ +from rest_framework import viewsets +from .. import models, serializers +import logging + +class RolAplicacionViewSet(viewsets.ModelViewSet): + serializer_class = serializers.RolAplicacionSerializer + + + + 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.RolAplicacion.objects.filter(id_rol=id_rol) + + return models.RolAplicacion.objects.all() \ No newline at end of file