se agrega mas campos a log de usuarios
parent
3ff0eb4898
commit
8644561155
|
@ -1,6 +1,6 @@
|
|||
from rest_framework import viewsets
|
||||
from .. import models, serializers
|
||||
from django.db import models as dj_models
|
||||
from api import models, serializers
|
||||
from django.db.models import Max
|
||||
|
||||
class AplicacionViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.Aplicacion.objects.all()
|
||||
|
@ -10,7 +10,7 @@ class AplicacionViewSet(viewsets.ModelViewSet):
|
|||
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_aplicacion', None):
|
||||
max_id = models.Aplicacion.objects.aggregate(dj_models.Max('id_aplicacion'))['id_aplicacion__max']
|
||||
max_id = models.Aplicacion.objects.aggregate(Max('id_aplicacion'))['id_aplicacion__max']
|
||||
new_id = max_id + 1 if max_id is not None else 1
|
||||
request.data['id_aplicacion'] = new_id
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
from rest_framework import viewsets
|
||||
from .. import models, serializers
|
||||
from django.db import models as dj_models
|
||||
from django.db.models import Max
|
||||
|
||||
class ComunaViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.Comuna.objects.all()
|
||||
|
@ -10,7 +10,7 @@ class ComunaViewSet(viewsets.ModelViewSet):
|
|||
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_comuna', None):
|
||||
max_id = models.Comuna.objects.aggregate(dj_models.Max('id_comuna'))['id_comuna__max']
|
||||
max_id = models.Comuna.objects.aggregate(Max('id_comuna'))['id_comuna__max']
|
||||
new_id = max_id + 1 if max_id is not None else 1
|
||||
request.data['id_comuna'] = new_id
|
||||
|
||||
|
|
|
@ -1,12 +1,9 @@
|
|||
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.decorators import action
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from django.core.files.storage import FileSystemStorage
|
||||
from django.core.files import File
|
||||
from django.http import FileResponse, HttpResponse
|
||||
from rest_framework import status
|
||||
from api import models , serializers
|
||||
from decouple import config
|
||||
import os
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
from rest_framework import viewsets
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.decorators import action
|
||||
from .. import models, serializers
|
||||
from api import models, serializers
|
||||
|
||||
class LetreroLUR_ViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.LetreroLUR.objects.all()
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
|
||||
from rest_framework import viewsets
|
||||
# from rest_framework.response import Response
|
||||
from rest_framework.decorators import action, api_view
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.filters import OrderingFilter
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from django.db import connection
|
||||
from api import models, serializers
|
||||
from django.http import JsonResponse, HttpResponse
|
||||
from django.forms.models import model_to_dict
|
||||
from django.http import JsonResponse
|
||||
from os import getenv
|
||||
import redis
|
||||
import json
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
|
||||
from django.http import JsonResponse
|
||||
from rest_framework.decorators import action, api_view, schema
|
||||
from rest_framework.decorators import action, api_view
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.db.models import F, Subquery, Value
|
||||
from django.db.models.functions import Coalesce
|
||||
|
||||
from ..models import Paradero, ParaderoImagen
|
||||
from ..models import Linea, GtfsShape, GtfsTrips
|
||||
from api.models import Paradero
|
||||
from api.models import GtfsShape, GtfsTrips
|
||||
from logging import error
|
||||
|
||||
google_api_key = 'AIzaSyDnFO9w_SsodjBuY5tOK8-kQJns_l5klQ4'
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.decorators import action
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from rest_framework.filters import OrderingFilter
|
||||
from rest_framework import status
|
||||
from rest_framework.status import HTTP_400_BAD_REQUEST
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from django.db.models import Max
|
||||
from django.db import transaction
|
||||
from api import models, serializers
|
||||
import logging
|
||||
|
||||
|
@ -26,14 +27,53 @@ class OperadorViewSet(viewsets.ModelViewSet):
|
|||
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
# Comprueba si 'id_operador' está presente en la petición y no está vacío
|
||||
id_operador = request.data.get('id_operador')
|
||||
if not id_operador:
|
||||
# Si 'id_operador' no está presente o está vacío, retorna un error 400
|
||||
return Response(
|
||||
{"error": "No se puede crear el operador: 'id_operador' no proporcionado."},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
# Comprueba si 'id_operador' está presente en la petición y no está vacío
|
||||
id_operador = request.data.get('id_operador')
|
||||
if not id_operador:
|
||||
# Si 'id_operador' no está presente o está vacío, retorna un error 400
|
||||
return Response(
|
||||
"No se puede crear el operador: 'id_operador' no proporcionado.",
|
||||
status=HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
# Si 'id_operador' está presente, procede con la creación normal
|
||||
return super().create(request, *args, **kwargs)
|
||||
try:
|
||||
with transaction.atomic():
|
||||
operador = models.Operador(
|
||||
id_operador = id_operador,
|
||||
nombre_operador = request.data.get('nombre_operador'),
|
||||
vigente = request.data.get('vigente'),
|
||||
)
|
||||
operador.save()
|
||||
|
||||
# se crea el rol para el operador
|
||||
max_id = models.Rol.objects.aggregate(Max('id_rol'))['id_rol__max']
|
||||
|
||||
rol = models.Rol(
|
||||
id_rol = max_id + 1,
|
||||
nombre_rol = f'Rol {operador.nombre_operador}'
|
||||
)
|
||||
rol.save()
|
||||
|
||||
rol_operador = models.RolOperador(
|
||||
id_rol = rol,
|
||||
id_operador = operador
|
||||
)
|
||||
rol_operador.save()
|
||||
|
||||
return Response({
|
||||
'id_operador': operador.id_operador,
|
||||
'nombre_operador': operador.nombre_operador,
|
||||
'vigente': operador.vigente,
|
||||
})
|
||||
except Exception as ex:
|
||||
transaction.rollback()
|
||||
return Response(str(ex), status=HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
def destroy(self, request, pk=None):
|
||||
try:
|
||||
with transaction.atomic():
|
||||
models.RolOperador.objects.filter(id_operador=pk).delete()
|
||||
return super().destroy(request, pk)
|
||||
except Exception as ex:
|
||||
return Response(str(ex), status=HTTP_400_BAD_REQUEST)
|
||||
|
|
|
@ -12,7 +12,6 @@ class ParaderoViewSet(viewsets.ModelViewSet):
|
|||
|
||||
@action(detail=False, methods=['get'])
|
||||
def count(self, request, pk=None):
|
||||
|
||||
queryset = Paradero.objects.all()
|
||||
|
||||
if 'vigente' in request.GET and request.GET['vigente'] == '1':
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.decorators import action
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from rest_framework import status
|
||||
from .. import models , serializers
|
||||
from django.db import models as dj_models
|
||||
from django.db.models import Max
|
||||
from api import models , serializers
|
||||
|
||||
class RedTransporteViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.RedTransporte.objects.all()
|
||||
|
@ -17,7 +14,7 @@ class RedTransporteViewSet(viewsets.ModelViewSet):
|
|||
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_red', None):
|
||||
max_id = models.RedTransporte.objects.aggregate(dj_models.Max('id_red'))['id_red__max']
|
||||
max_id = models.RedTransporte.objects.aggregate(Max('id_red'))['id_red__max']
|
||||
new_id = max_id + 1 if max_id is not None else 1
|
||||
request.data['id_red'] = new_id
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
from rest_framework import viewsets
|
||||
from .. import models, serializers
|
||||
from api import models, serializers
|
||||
|
||||
class RegionViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.Region.objects.all()
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from rest_framework import viewsets
|
||||
from .. import models, serializers
|
||||
from django.db import models as dj_models
|
||||
from rest_framework.response import Response
|
||||
from api import models, serializers
|
||||
from django.db.models import Max
|
||||
|
||||
class RolViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.Rol.objects.all()
|
||||
|
@ -9,8 +10,14 @@ class RolViewSet(viewsets.ModelViewSet):
|
|||
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']
|
||||
max_id = models.Rol.objects.aggregate(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)
|
||||
|
||||
def destroy(self, request, pk=None):
|
||||
try:
|
||||
return super().destroy(request, pk)
|
||||
except Exception as ex:
|
||||
return Response(str(ex), status=400)
|
|
@ -1,5 +1,5 @@
|
|||
from rest_framework import viewsets
|
||||
from .. import models, serializers
|
||||
from api import models, serializers
|
||||
import logging
|
||||
|
||||
class RolAplicacionViewSet(viewsets.ModelViewSet):
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
from rest_framework import viewsets
|
||||
from .. import models, serializers
|
||||
from api import models, serializers
|
||||
|
||||
class TipoTratamientoPersonaViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.TipoTratamientoPersona.objects.all()
|
||||
|
|
|
@ -24,7 +24,7 @@ class UsuarioViewSet(viewsets.ModelViewSet):
|
|||
def create(self, request):
|
||||
try:
|
||||
login = self.request.jwt_info['login']
|
||||
usuario_session = models.Usuario.objects.filter(login=login)
|
||||
usuario_session = models.Usuario.objects.filter(login=login).first()
|
||||
|
||||
with transaction.atomic():
|
||||
input = json.loads(request.body)
|
||||
|
@ -36,7 +36,7 @@ class UsuarioViewSet(viewsets.ModelViewSet):
|
|||
if id_tipo_tratamiento:
|
||||
tipo_tratamiento = models.TipoTratamientoPersona.objects.filter(id_tipo_tratamiento = id_tipo_tratamiento).first()
|
||||
|
||||
if not persona:
|
||||
if persona == None:
|
||||
persona = models.Persona(
|
||||
rut = input['rut'],
|
||||
dv = input['dv'],
|
||||
|
@ -55,6 +55,9 @@ class UsuarioViewSet(viewsets.ModelViewSet):
|
|||
persona.id_tipo_tratamiento = tipo_tratamiento
|
||||
persona.save()
|
||||
|
||||
if persona == None:
|
||||
raise ValueError('Persona no creada')
|
||||
|
||||
rol = models.Rol.objects.filter(id_rol=input.get('id_rol',None)).first()
|
||||
if rol == None:
|
||||
raise ValueError('Rol no encontrado')
|
||||
|
@ -67,32 +70,37 @@ class UsuarioViewSet(viewsets.ModelViewSet):
|
|||
)
|
||||
usuario.save()
|
||||
|
||||
save_log_usuario(accion_tabla='create', rut_tabla=persona.rut, rut_usuario_ejecutor=usuario_session.rut.rut)
|
||||
|
||||
if input['clave']:
|
||||
logging.error('Modificar clave de usuario')
|
||||
usuario.clave = make_password(input['clave'])
|
||||
usuario.save()
|
||||
|
||||
return Response({
|
||||
'rut': persona.rut,
|
||||
'dv': persona.dv,
|
||||
'nombres': persona.nombres,
|
||||
'apellido_a': persona.apellido_a,
|
||||
'apellido_b': persona.apellido_b,
|
||||
'email': persona.email,
|
||||
'login': usuario.login,
|
||||
'vigente': usuario.vigente,
|
||||
})
|
||||
save_log_usuario(
|
||||
accion_tabla='create',
|
||||
rut_tabla=persona.rut,
|
||||
login_tabla=usuario.login,
|
||||
rut_ejecutor=usuario_session.rut.rut,
|
||||
login_ejecutor=usuario_session.login
|
||||
)
|
||||
|
||||
except ValueError as e:
|
||||
transaction.rollback()
|
||||
return HttpResponse(str(e), status = 400)
|
||||
return Response({
|
||||
'rut': persona.rut,
|
||||
'dv': persona.dv,
|
||||
'nombres': persona.nombres,
|
||||
'apellido_a': persona.apellido_a,
|
||||
'apellido_b': persona.apellido_b,
|
||||
'email': persona.email,
|
||||
'login': usuario.login,
|
||||
'vigente': usuario.vigente,
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
except ValueError as ex:
|
||||
transaction.rollback()
|
||||
print(e)
|
||||
return HttpResponse(str(e), status = 500)
|
||||
return HttpResponse(str(ex), status = 400)
|
||||
|
||||
except Exception as ex:
|
||||
transaction.rollback()
|
||||
return HttpResponse(str(ex), status = 500)
|
||||
|
||||
|
||||
def partial_update(self, request, *args, **kwargs):
|
||||
|
@ -119,7 +127,13 @@ class UsuarioViewSet(viewsets.ModelViewSet):
|
|||
usuario.clave = make_password(input['clave'])
|
||||
usuario.save()
|
||||
|
||||
save_log_usuario(accion_tabla='update', rut_tabla=persona.rut, rut_usuario_ejecutor=usuario_session.rut.rut)
|
||||
save_log_usuario(
|
||||
accion_tabla='update',
|
||||
rut_tabla=persona.rut,
|
||||
login_tabla=usuario.login,
|
||||
rut_ejecutor=usuario_session.rut.rut,
|
||||
login_ejecutor=usuario_session.login
|
||||
)
|
||||
|
||||
return Response({
|
||||
'rut': persona.rut,
|
||||
|
@ -142,6 +156,26 @@ class UsuarioViewSet(viewsets.ModelViewSet):
|
|||
return HttpResponse(str(e), status = 500)
|
||||
|
||||
|
||||
def destroy(self, request, pk=None):
|
||||
try:
|
||||
login = self.request.jwt_info['login']
|
||||
usuario_session = models.Usuario.objects.filter(login=login).first()
|
||||
usuario = models.Usuario.objects.filter(login=pk).first()
|
||||
data = super().destroy(request, usuario.rut.rut)
|
||||
|
||||
save_log_usuario(
|
||||
accion_tabla='delete',
|
||||
rut_tabla=usuario.rut.rut,
|
||||
login_tabla=usuario.login,
|
||||
rut_ejecutor=usuario_session.rut.rut,
|
||||
login_ejecutor=usuario_session.login
|
||||
)
|
||||
|
||||
return data
|
||||
except Exception as ex:
|
||||
return Response(str(ex), status=400)
|
||||
|
||||
|
||||
@action(detail=False, methods=['post'])
|
||||
def permisos(self, request):
|
||||
input = {}
|
||||
|
|
|
@ -12,6 +12,8 @@ class LogConsultaDispositivo(Document):
|
|||
|
||||
class LogTablaUsuario(Document):
|
||||
accion_tabla = StringField(required=True)
|
||||
rut_usuario_tabla = StringField(required=True)
|
||||
rut_usuario_ejecutor = StringField(required=True)
|
||||
rut_tabla = StringField(required=True)
|
||||
login_tabla = StringField(required=True)
|
||||
rut_ejecutor = StringField(required=True)
|
||||
login_ejecutor = StringField(required=True)
|
||||
fecha_hora = DateTimeField(required=True)
|
|
@ -28,16 +28,18 @@ def save_log_dispositivo(id_dispositivo, accion_url):
|
|||
return False
|
||||
|
||||
|
||||
def save_log_usuario(accion_tabla, rut_tabla, rut_usuario_ejecutor):
|
||||
def save_log_usuario(accion_tabla, rut_tabla, login_tabla, rut_ejecutor, login_ejecutor):
|
||||
try:
|
||||
print(rut_tabla, flush=True)
|
||||
print(rut_usuario_ejecutor, flush=True)
|
||||
print(rut_ejecutor, flush=True)
|
||||
|
||||
# connect(db=dbname, host=dbhost, port=dbport, username=dbuser, password=dbpass, authentication_source='admin')
|
||||
nuevo_registro = LogTablaUsuario(
|
||||
accion_tabla = accion_tabla,
|
||||
rut_usuario_tabla = str(rut_tabla),
|
||||
rut_usuario_ejecutor = str(rut_usuario_ejecutor),
|
||||
rut_tabla = str(rut_tabla),
|
||||
login_tabla = str(login_tabla),
|
||||
rut_ejecutor = str(rut_ejecutor),
|
||||
login_ejecutor = str(login_ejecutor),
|
||||
fecha_hora = datetime.datetime.now()
|
||||
)
|
||||
nuevo_registro.save()
|
||||
|
|
Loading…
Reference in New Issue