Enzo Yair

correcion de errores

@@ -9,9 +9,9 @@ from .models import Edicto, Precio @@ -9,9 +9,9 @@ from .models import Edicto, Precio
9 9
10 class PrecioAdmin(admin.ModelAdmin): 10 class PrecioAdmin(admin.ModelAdmin):
11 def save_model(self, request, obj, form, change): 11 def save_model(self, request, obj, form, change):
12 - precios_activos = Precio.objects.filter(vigencia_hasta__gte=timezone.now().date())  
13 - if not change:  
14 today = timezone.now().date() 12 today = timezone.now().date()
  13 + precios_activos = Precio.objects.filter(vigencia_hasta__gte=today)
  14 + if not change:
15 if obj.vigencia_desde <= today and not precios_activos.exists(): 15 if obj.vigencia_desde <= today and not precios_activos.exists():
16 obj.save() 16 obj.save()
17 else: 17 else:
1 from rest_framework import viewsets, filters, mixins, status 1 from rest_framework import viewsets, filters, mixins, status
2 -from django.shortcuts import get_object_or_404  
3 from django_filters.rest_framework import DjangoFilterBackend 2 from django_filters.rest_framework import DjangoFilterBackend
4 from rest_framework.response import Response 3 from rest_framework.response import Response
5 from rest_framework.permissions import IsAuthenticated 4 from rest_framework.permissions import IsAuthenticated
@@ -10,6 +9,7 @@ from .models import Edicto, Precio, ComprobantePago @@ -10,6 +9,7 @@ from .models import Edicto, Precio, ComprobantePago
10 from .serializer import EdictoSerializer, PrecioSerializer, PagoSerializer, ComprobanteSerializer 9 from .serializer import EdictoSerializer, PrecioSerializer, PagoSerializer, ComprobanteSerializer
11 from .filters import EdictoFilter, PrecioFilter 10 from .filters import EdictoFilter, PrecioFilter
12 from .permissions import IsAdminOrAuthorized 11 from .permissions import IsAdminOrAuthorized
  12 +from .exceptions import UsuarioNoAuthorizedException, EdictoNotFoundException,PrecioNotFoundException
13 from .utils import contador 13 from .utils import contador
14 from .precio import calculadora 14 from .precio import calculadora
15 15
@@ -67,15 +67,17 @@ class PagoViewSets(viewsets.ModelViewSet): @@ -67,15 +67,17 @@ class PagoViewSets(viewsets.ModelViewSet):
67 try: 67 try:
68 edicto = Edicto.objects.get(estado='pendiente_de_pago') 68 edicto = Edicto.objects.get(estado='pendiente_de_pago')
69 if edicto.usuario != self.request.user: 69 if edicto.usuario != self.request.user:
70 - raise UsuarioNoAutorizado 70 + raise UsuarioNoAuthorizedException
71 71
72 precio = Precio.objects.latest('id') 72 precio = Precio.objects.latest('id')
73 monto = calculadora(edicto, precio) 73 monto = calculadora(edicto, precio)
74 74
75 serializer.validated_data.update({'monto': monto, 'edicto': edicto}) 75 serializer.validated_data.update({'monto': monto, 'edicto': edicto})
76 serializer.save() 76 serializer.save()
77 - except (Edicto.DoesNotExist, Precio.DoesNotExist):  
78 - raise EdictoOPrecioNoEncontrado 77 + except Edicto.DoesNotExist:
  78 + raise EdictoNotFoundException
  79 + except Precio.DoesNotExist:
  80 + raise PrecioNotFoundException
79 81
80 82
81 class ComprobanteViewSets(mixins.CreateModelMixin, 83 class ComprobanteViewSets(mixins.CreateModelMixin,
1 from django.utils.translation import gettext_lazy as _ 1 from django.utils.translation import gettext_lazy as _
2 2
3 INICIADO = 'iniciado' 3 INICIADO = 'iniciado'
4 -PENDIENTE_DE_PAGO = 'pendiente_de_pago' 4 +PENDIENTE_REVISION = 'pendiente_revision'
  5 +PENDIENTE_PAGO = 'pendiente_de_pago'
  6 +PENDIENTE_PAGO_REVISION = 'pendiente_pago_revision'
5 PUBLICADO = 'publicado' 7 PUBLICADO = 'publicado'
6 APROBADO = 'aprobado' 8 APROBADO = 'aprobado'
7 RECHAZADO = 'rechazado' 9 RECHAZADO = 'rechazado'
@@ -9,13 +11,14 @@ RECHAZADO = 'rechazado' @@ -9,13 +11,14 @@ RECHAZADO = 'rechazado'
9 11
10 STATUS_CHOICE = [ 12 STATUS_CHOICE = [
11 (INICIADO, _('iniciado')), 13 (INICIADO, _('iniciado')),
12 - (PENDIENTE_DE_PAGO, _('pendiente_de_pago')), 14 + (PENDIENTE_REVISION, _('pendiente_revision')),
  15 + (PENDIENTE_PAGO, _('pendiente_pago')),
  16 + (PENDIENTE_PAGO_REVISION, _('pendiente_pago_revision')),
13 (PUBLICADO, _('publicado')), 17 (PUBLICADO, _('publicado')),
14 (APROBADO, _('aprobado')), 18 (APROBADO, _('aprobado')),
15 (RECHAZADO, _('rechazado')), 19 (RECHAZADO, _('rechazado')),
16 ] 20 ]
17 21
18 -  
19 EXTENSIONES_VALIDAS = "pdf", 22 EXTENSIONES_VALIDAS = "pdf",
20 23
21 24
  1 +from rest_framework.exceptions import APIException
  2 +
  3 +
  4 +class EdictoNotFoundException(APIException):
  5 + status_code = 404
  6 + default_detail = "El edicto no se encontró."
  7 +
  8 +
  9 +class PrecioNotFoundException(APIException):
  10 + status_code = 404
  11 + default_detail = "El precio más reciente no se encontró."
  12 +
  13 +
  14 +class UsuarioNoAuthorizedException(APIException):
  15 + status_code = 403
  16 + default_detail = "el usuario no posee permiso para crear un pago para este edicto."
@@ -5,7 +5,6 @@ from datetime import datetime, time @@ -5,7 +5,6 @@ from datetime import datetime, time
5 5
6 def calculadora(edicto, precio): 6 def calculadora(edicto, precio):
7 try: 7 try:
8 - with transaction.atomic():  
9 organismo = edicto.usuario.organismo 8 organismo = edicto.usuario.organismo
10 es_publico = organismo.es_publico if organismo else False 9 es_publico = organismo.es_publico if organismo else False
11 sellos = edicto.cantidad_sellos 10 sellos = edicto.cantidad_sellos
@@ -21,12 +20,12 @@ def calculadora(edicto, precio): @@ -21,12 +20,12 @@ def calculadora(edicto, precio):
21 current_datetime = timezone.now().replace(tzinfo=None) 20 current_datetime = timezone.now().replace(tzinfo=None)
22 vigencia_desde = datetime.combine(precio_valores['vigencia_desde'], time.min) 21 vigencia_desde = datetime.combine(precio_valores['vigencia_desde'], time.min)
23 vigencia_hasta = datetime.combine(precio_valores['vigencia_hasta'], time.max) 22 vigencia_hasta = datetime.combine(precio_valores['vigencia_hasta'], time.max)
  23 +
24 if not (vigencia_desde <= current_datetime <= vigencia_hasta): 24 if not (vigencia_desde <= current_datetime <= vigencia_hasta):
25 raise ValueError("El precio seleccionado no se encuentra dentro de las fechas permitidas.") 25 raise ValueError("El precio seleccionado no se encuentra dentro de las fechas permitidas.")
26 26
27 result_palabra = (sellos + palabras) * precio_valores['precio'] 27 result_palabra = (sellos + palabras) * precio_valores['precio']
28 - result_ejemplar = \  
29 - (copias * precio_valores['precio_ejemplar']) + (publicar * precio_valores['precio_ejemplar']) 28 + result_ejemplar = (copias * precio_valores['precio_ejemplar']) + (publicar * precio_valores['precio_ejemplar'])
30 29
31 if es_publico: 30 if es_publico:
32 resultado = result_ejemplar + result_palabra / 2 31 resultado = result_ejemplar + result_palabra / 2
@@ -35,5 +34,4 @@ def calculadora(edicto, precio): @@ -35,5 +34,4 @@ def calculadora(edicto, precio):
35 34
36 return resultado 35 return resultado
37 except ValueError as values: 36 except ValueError as values:
38 -  
39 raise ValueError("Los valores proporcionados son incorrectos: " + str(values)) 37 raise ValueError("Los valores proporcionados son incorrectos: " + str(values))