Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Marta Miranda
/
boletin_api
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Enzo Yair
2023-09-12 07:04:05 -0300
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
b985804bafb5303b2fa69f45cc0a1a3d39c5f711
b985804b
1 parent
a467e570
correcion de errores
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
55 additions
and
36 deletions
project/apps/edicto/admin.py
project/apps/edicto/api.py
project/apps/edicto/constants.py
project/apps/edicto/exceptions.py
project/apps/edicto/precio.py
project/apps/edicto/admin.py
View file @
b985804
...
...
@@ -9,9 +9,9 @@ from .models import Edicto, Precio
class
PrecioAdmin
(
admin
.
ModelAdmin
):
def
save_model
(
self
,
request
,
obj
,
form
,
change
):
precios_activos
=
Precio
.
objects
.
filter
(
vigencia_hasta__gte
=
timezone
.
now
()
.
date
())
today
=
timezone
.
now
()
.
date
()
precios_activos
=
Precio
.
objects
.
filter
(
vigencia_hasta__gte
=
today
)
if
not
change
:
today
=
timezone
.
now
()
.
date
()
if
obj
.
vigencia_desde
<=
today
and
not
precios_activos
.
exists
():
obj
.
save
()
else
:
...
...
project/apps/edicto/api.py
View file @
b985804
from
rest_framework
import
viewsets
,
filters
,
mixins
,
status
from
django.shortcuts
import
get_object_or_404
from
django_filters.rest_framework
import
DjangoFilterBackend
from
rest_framework.response
import
Response
from
rest_framework.permissions
import
IsAuthenticated
...
...
@@ -10,6 +9,7 @@ from .models import Edicto, Precio, ComprobantePago
from
.serializer
import
EdictoSerializer
,
PrecioSerializer
,
PagoSerializer
,
ComprobanteSerializer
from
.filters
import
EdictoFilter
,
PrecioFilter
from
.permissions
import
IsAdminOrAuthorized
from
.exceptions
import
UsuarioNoAuthorizedException
,
EdictoNotFoundException
,
PrecioNotFoundException
from
.utils
import
contador
from
.precio
import
calculadora
...
...
@@ -67,15 +67,17 @@ class PagoViewSets(viewsets.ModelViewSet):
try
:
edicto
=
Edicto
.
objects
.
get
(
estado
=
'pendiente_de_pago'
)
if
edicto
.
usuario
!=
self
.
request
.
user
:
raise
UsuarioNoAut
orizado
raise
UsuarioNoAut
horizedException
precio
=
Precio
.
objects
.
latest
(
'id'
)
monto
=
calculadora
(
edicto
,
precio
)
serializer
.
validated_data
.
update
({
'monto'
:
monto
,
'edicto'
:
edicto
})
serializer
.
save
()
except
(
Edicto
.
DoesNotExist
,
Precio
.
DoesNotExist
):
raise
EdictoOPrecioNoEncontrado
except
Edicto
.
DoesNotExist
:
raise
EdictoNotFoundException
except
Precio
.
DoesNotExist
:
raise
PrecioNotFoundException
class
ComprobanteViewSets
(
mixins
.
CreateModelMixin
,
...
...
project/apps/edicto/constants.py
View file @
b985804
from
django.utils.translation
import
gettext_lazy
as
_
INICIADO
=
'iniciado'
PENDIENTE_DE_PAGO
=
'pendiente_de_pago'
PENDIENTE_REVISION
=
'pendiente_revision'
PENDIENTE_PAGO
=
'pendiente_de_pago'
PENDIENTE_PAGO_REVISION
=
'pendiente_pago_revision'
PUBLICADO
=
'publicado'
APROBADO
=
'aprobado'
RECHAZADO
=
'rechazado'
...
...
@@ -9,13 +11,14 @@ RECHAZADO = 'rechazado'
STATUS_CHOICE
=
[
(
INICIADO
,
_
(
'iniciado'
)),
(
PENDIENTE_DE_PAGO
,
_
(
'pendiente_de_pago'
)),
(
PENDIENTE_REVISION
,
_
(
'pendiente_revision'
)),
(
PENDIENTE_PAGO
,
_
(
'pendiente_pago'
)),
(
PENDIENTE_PAGO_REVISION
,
_
(
'pendiente_pago_revision'
)),
(
PUBLICADO
,
_
(
'publicado'
)),
(
APROBADO
,
_
(
'aprobado'
)),
(
RECHAZADO
,
_
(
'rechazado'
)),
]
EXTENSIONES_VALIDAS
=
"pdf"
,
...
...
project/apps/edicto/exceptions.py
0 → 100644
View file @
b985804
from
rest_framework.exceptions
import
APIException
class
EdictoNotFoundException
(
APIException
):
status_code
=
404
default_detail
=
"El edicto no se encontró."
class
PrecioNotFoundException
(
APIException
):
status_code
=
404
default_detail
=
"El precio más reciente no se encontró."
class
UsuarioNoAuthorizedException
(
APIException
):
status_code
=
403
default_detail
=
"el usuario no posee permiso para crear un pago para este edicto."
...
...
project/apps/edicto/precio.py
View file @
b985804
...
...
@@ -5,35 +5,33 @@ from datetime import datetime, time
def
calculadora
(
edicto
,
precio
):
try
:
with
transaction
.
atomic
():
organismo
=
edicto
.
usuario
.
organismo
es_publico
=
organismo
.
es_publico
if
organismo
else
False
sellos
=
edicto
.
cantidad_sellos
palabras
=
edicto
.
cantidad_palabras
copias
=
edicto
.
cantidad_copias
publicar
=
edicto
.
dias_publicar
precio_valores
=
{
'precio_palabra'
:
precio
.
precio
,
'precio_ejemplar'
:
precio
.
precio_ejemplar
,
'vigencia_desde'
:
precio
.
vigencia_desde
,
'vigencia_hasta'
:
precio
.
vigencia_hasta
,
}
current_datetime
=
timezone
.
now
()
.
replace
(
tzinfo
=
None
)
vigencia_desde
=
datetime
.
combine
(
precio_valores
[
'vigencia_desde'
],
time
.
min
)
vigencia_hasta
=
datetime
.
combine
(
precio_valores
[
'vigencia_hasta'
],
time
.
max
)
if
not
(
vigencia_desde
<=
current_datetime
<=
vigencia_hasta
):
raise
ValueError
(
"El precio seleccionado no se encuentra dentro de las fechas permitidas."
)
organismo
=
edicto
.
usuario
.
organismo
es_publico
=
organismo
.
es_publico
if
organismo
else
False
sellos
=
edicto
.
cantidad_sellos
palabras
=
edicto
.
cantidad_palabras
copias
=
edicto
.
cantidad_copias
publicar
=
edicto
.
dias_publicar
precio_valores
=
{
'precio_palabra'
:
precio
.
precio
,
'precio_ejemplar'
:
precio
.
precio_ejemplar
,
'vigencia_desde'
:
precio
.
vigencia_desde
,
'vigencia_hasta'
:
precio
.
vigencia_hasta
,
}
current_datetime
=
timezone
.
now
()
.
replace
(
tzinfo
=
None
)
vigencia_desde
=
datetime
.
combine
(
precio_valores
[
'vigencia_desde'
],
time
.
min
)
vigencia_hasta
=
datetime
.
combine
(
precio_valores
[
'vigencia_hasta'
],
time
.
max
)
result_palabra
=
(
sellos
+
palabras
)
*
precio_valores
[
'precio'
]
result_ejemplar
=
\
(
copias
*
precio_valores
[
'precio_ejemplar'
])
+
(
publicar
*
precio_valores
[
'precio_ejemplar'
])
if
not
(
vigencia_desde
<=
current_datetime
<=
vigencia_hasta
):
raise
ValueError
(
"El precio seleccionado no se encuentra dentro de las fechas permitidas."
)
if
es_publico
:
resultado
=
result_ejemplar
+
result_palabra
/
2
else
:
resultado
=
result_ejemplar
+
result_palabra
result_palabra
=
(
sellos
+
palabras
)
*
precio_valores
[
'precio'
]
result_ejemplar
=
(
copias
*
precio_valores
[
'precio_ejemplar'
])
+
(
publicar
*
precio_valores
[
'precio_ejemplar'
])
if
es_publico
:
resultado
=
result_ejemplar
+
result_palabra
/
2
else
:
resultado
=
result_ejemplar
+
result_palabra
return
resultado
except
ValueError
as
values
:
raise
ValueError
(
"Los valores proporcionados son incorrectos: "
+
str
(
values
))
\ No newline at end of file
raise
ValueError
(
"Los valores proporcionados son incorrectos: "
+
str
(
values
))
...
...
Please
register
or
login
to post a comment