validaciones se realiza a nivel de model
parent
7948c00e9d
commit
3953603b06
|
@ -5,7 +5,10 @@
|
|||
# * Make sure each ForeignKey and OneToOneField has `on_delete` set to the desired behavior
|
||||
# * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
|
||||
# Feel free to rename the models, but don't rename db_table values or field names.
|
||||
from typing import Collection, Optional
|
||||
from django.db import models
|
||||
from .validaciones import rut_valido
|
||||
import logging
|
||||
|
||||
|
||||
class Aplicacion(models.Model):
|
||||
|
@ -218,6 +221,14 @@ class Persona(models.Model):
|
|||
managed = False
|
||||
db_table = 'persona'
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
# validacion se realiza solo si se esta creando el registro
|
||||
if self._state.adding:
|
||||
rut_completo = f'{self.rut}-{self.dv}'
|
||||
if not rut_valido(rut_completo):
|
||||
raise Exception(f'RUT {rut_completo}, no es valido!')
|
||||
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
class Region(models.Model):
|
||||
id_region = models.IntegerField(primary_key=True)
|
||||
|
@ -316,6 +327,19 @@ class Usuario(models.Model):
|
|||
managed = False
|
||||
db_table = 'usuario'
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
# validacion se realiza solo si se esta creando el registro
|
||||
if self._state.adding:
|
||||
condition = models.Q(login=self.login) | models.Q(rut=self.rut)
|
||||
usuario = Usuario.objects.filter(condition).first()
|
||||
if usuario:
|
||||
if usuario.login == self.login:
|
||||
raise Exception(f"Usuario [{self.login}] ya existe!")
|
||||
else:
|
||||
raise Exception(f"Usuario con RUT [{self.rut}] ya existe!")
|
||||
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
|
||||
class UsuarioRol(models.Model):
|
||||
login = models.ForeignKey(Usuario, models.DO_NOTHING, db_column='login', blank=True, null=True)
|
||||
|
|
|
@ -39,11 +39,12 @@ def jwt_login(request):
|
|||
return HttpResponse('Acceso no valido', status=400)
|
||||
|
||||
ahora = datetime.utcnow()
|
||||
# manana = ahora + timedelta(days=1)
|
||||
# manana = manana.replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
manana = ahora + timedelta(days=1)
|
||||
manana = manana.replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
|
||||
payload = {
|
||||
'exp': ahora + timedelta(minutes=60),
|
||||
'iat': ahora,
|
||||
'exp': manana, # ahora + timedelta(minutes=60),
|
||||
'login': usuario['login']
|
||||
}
|
||||
token = jwt.encode(payload, private_key, algorithm="HS256")
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from rest_framework import viewsets, mixins
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import viewsets
|
||||
from .. import models, serializers
|
||||
from django.http import HttpResponse
|
||||
import logging
|
||||
|
||||
class PersonaViewSet(viewsets.ModelViewSet):
|
||||
queryset = models.Persona.objects.all()
|
||||
|
@ -9,3 +9,12 @@ class PersonaViewSet(viewsets.ModelViewSet):
|
|||
|
||||
def destroy(self, request, pk=None):
|
||||
return HttpResponse('No permitido eliminar', status=405)
|
||||
|
||||
def create(self, request):
|
||||
try:
|
||||
super().create(request)
|
||||
except Exception as e:
|
||||
# logging.warning(e.detail['rut'][0])
|
||||
if e.detail['rut']:
|
||||
return HttpResponse(e.detail['rut'][0], status=400)
|
||||
return HttpResponse(e, status=400)
|
|
@ -1,15 +1,11 @@
|
|||
|
||||
from django.db import transaction
|
||||
from django.http import HttpResponse
|
||||
from django.http import JsonResponse
|
||||
from django.core.serializers import serialize
|
||||
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.decorators import action, api_view, schema
|
||||
|
||||
from .. import models, schemas, serializers
|
||||
from ..validaciones import rut_valido
|
||||
import json
|
||||
|
||||
class UsuarioViewSet(viewsets.ModelViewSet):
|
||||
|
@ -18,27 +14,15 @@ class UsuarioViewSet(viewsets.ModelViewSet):
|
|||
schema = schemas.UsuarioSchema()
|
||||
|
||||
def retrieve(self, request, pk=None):
|
||||
print({ 'pk': pk })
|
||||
data = super().retrieve(request, pk)
|
||||
print({ 'data': data })
|
||||
return data
|
||||
|
||||
def create(self, request):
|
||||
try:
|
||||
with transaction.atomic():
|
||||
input = json.loads(request.body)
|
||||
rut_completo = f"{input['rut']}-{input.get('dv','?')}"
|
||||
|
||||
if not rut_valido(rut_completo):
|
||||
raise ValueError(f"RUT [{input['rut']}] no valido!")
|
||||
|
||||
usuario = models.Usuario.objects.filter(login = input['login']).first()
|
||||
if usuario:
|
||||
raise ValueError(f"Usuario [{input['login']}] ya existe!")
|
||||
|
||||
usuario = models.Usuario.objects.filter(rut = input['rut']).first()
|
||||
if usuario:
|
||||
raise ValueError(f"Usuario con RUT [{input['rut']}] ya existe!")
|
||||
# validaciones se realiza a nivel del model
|
||||
|
||||
persona = models.Persona.objects.filter(rut = input['rut']).first()
|
||||
id_tipo_tratamiento = input.get('id_tipo_tratamiento',None)
|
||||
|
|
Loading…
Reference in New Issue