• This project
    • Loading...
  • Sign in

Marta Miranda / boletin_api

Logo codes
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
Closed
Merge Request !37 opened 2023-09-11 12:40:36 UTC by Enzo Yair@Ecardenez

Feature/#48 crear dos enpoints para comprobantepago

Edited 2023-09-12 13:44:02 UTC
Request to merge feature/#48_crear_dos_enpoints_para_comprobantepago into develop
×

Check out, review, and merge locally

Step 1. Fetch and check out the branch for this merge request

git fetch origin
git checkout -b feature/#48_crear_dos_enpoints_para_comprobantepago origin/feature/#48_crear_dos_enpoints_para_comprobantepago

Step 2. Review the changes locally

Step 3. Merge the branch and fix any conflicts that come up

git checkout develop
git merge --no-ff feature/#48_crear_dos_enpoints_para_comprobantepago

Step 4. Push the result of the merge to GitLab

git push origin develop

Note that pushing to GitLab requires write access to this repository.

Tip: You can also checkout merge requests locally by following these guidelines

Closed by Enzo Yair 2023-09-12 13:44:02 UTC

The changes were not merged into develop.

  • Discussion 9
  • Commits 12
  • Changes 15
  • Enzo Yair
    @Ecardenez 2023-09-11 12:43:34 UTC

    Added 1 commit:

    • a467e570 - correcion de return en modelo edicto
  • Avatar
    Martín Miranda
    @debianitram started a discussion on an outdated diff 2023-09-11 13:11:44 UTC
    Toggle discussion
    project/apps/edicto/admin.py
    from django.contrib import admin
    from django.core.exceptions import ValidationError
    from django.utils import timezone
     
    from .models import Edicto, Precio
     
    # Register your models here.
     
    admin.site.register(Precio)
    class PrecioAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
    precios_activos = Precio.objects.filter(vigencia_hasta__gte=timezone.now().date())
    • Martín Miranda
      @debianitram commented 2023-09-11 13:11:44 UTC
      Developer

      Acá puedes calcular sólo una vez today

      today = timezone.now().date()

      y luego utilizarlo en la query de precios_activos y después en la condición obj.bigencia_desde <= today

  • Avatar
    Martín Miranda
    @debianitram started a discussion on an outdated diff 2023-09-11 13:14:06 UTC
    Toggle discussion
    project/apps/edicto/api.py
    ordering_fields = ('usuario', )
    ordering = 'usuario'
    queryset = Precio.objects.all()
    class PagoViewSets(viewsets.ModelViewSet):
    serializer_class = PagoSerializer
    permission_classes = [IsAuthenticated, IsAdminOrAuthorized]
    queryset = ComprobantePago.objects.all()
    def perform_create(self, serializer):
    try:
    edicto = Edicto.objects.get(estado='pendiente_de_pago')
    if edicto.usuario != self.request.user:
    raise UsuarioNoAutorizado
    • Martín Miranda
      @debianitram commented 2023-09-11 13:14:06 UTC
      Developer

      Donde haz definido UsuarioNoAutorizado? esa clase existe? Por favor utiliza en primera instancia las excepciones ya creadas en el framework: https://www.django-rest-framework.org/api-guide/exceptions/

    • Martín Miranda
      @debianitram commented 2023-09-12 13:10:42 UTC
      Developer

      Por favor utiliza: PermissionDenied(detail="Aquí el detalle que quieras")

  • Avatar
    Martín Miranda
    @debianitram started a discussion on an outdated diff 2023-09-11 13:15:46 UTC
    Toggle discussion
    project/apps/edicto/api.py
    permission_classes = [IsAuthenticated, IsAdminOrAuthorized]
    queryset = ComprobantePago.objects.all()
    def perform_create(self, serializer):
    try:
    edicto = Edicto.objects.get(estado='pendiente_de_pago')
    if edicto.usuario != self.request.user:
    raise UsuarioNoAutorizado
    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
    • Martín Miranda
      @debianitram commented 2023-09-11 13:15:46 UTC
      Developer

      Idem al comentario anterior. Qué IDE utilizas? Por que el editor debería indicarte que esos nombres (EdictoOPrecioNoEncontrado, UsuarioNoAutorizado) no existen. Por favor si no utilizas PyCharm, te recomiendo que lo hagas ... Creo que la mayoría de los chicos en la oficina lo utiliza para los proyecto Python.

    • Martín Miranda
      @debianitram commented 2023-09-12 13:13:05 UTC
      Developer

      Por favor utiliza:

      NotFound(detail="Aquí el mensaje que quieras relacionado con que no se encontró el edicto")

  • Avatar
    Martín Miranda
    @debianitram started a discussion on an outdated diff 2023-09-11 13:17:31 UTC
    Toggle discussion
    project/apps/edicto/precio.py
    result_ejemplar = (copias * precio_ejemplar) + (publicar * precio_ejemplar)
    if organismo:
    resultado = result_ejemplar + result_palabra / 2
    else:
    resultado = result_ejemplar + result_palabra
    precio_resultado = ComprobantePago(edicto=edicto, resultado=resultado)
    precio_resultado.save()
    return precio_resultado
    from datetime import datetime, time
    def calculadora(edicto, precio):
    try:
    with transaction.atomic():
    • Martín Miranda
      @debianitram commented 2023-09-11 13:17:31 UTC
      Developer

      Por qué utilizas esto? A donde se ejecuta una transacción dentro de éste método?

    • Martín Miranda
      @debianitram commented 2023-09-11 13:19:09 UTC
      Developer

      https://docs.djangoproject.com/en/4.2/topics/db/transactions/

  • Enzo Yair
    @Ecardenez 2023-09-12 10:04:13 UTC

    Added 1 commit:

    • b985804b - correcion de errores
  • Enzo Yair
    @Ecardenez 2023-09-12 10:17:30 UTC

    Added 1 commit:

    • d550baa9 - eliminacion de comentarios
  • Avatar
    Martín Miranda
    @debianitram started a discussion on the diff 2023-09-12 13:13:17 UTC
    Toggle discussion
    project/apps/edicto/api.py
    def perform_create(self, serializer):
    try:
    edicto = Edicto.objects.get(estado='pendiente_de_pago')
    if edicto.usuario != self.request.user:
    raise UsuarioNoAuthorizedException
    precio = Precio.objects.latest('id')
    monto = calculadora(edicto, precio)
    serializer.validated_data.update({'monto': monto, 'edicto': edicto})
    serializer.save()
    except Edicto.DoesNotExist:
    raise EdictoNotFoundException
    except Precio.DoesNotExist:
    raise PrecioNotFoundException
    • Martín Miranda
      @debianitram commented 2023-09-12 13:13:17 UTC
      Developer

      Por favor utiliza:

      NotFound(detail="Aquí el mensaje que quieras relacionado con que no se encontró el precio")

  • Avatar
    Martín Miranda
    @debianitram started a discussion on the diff 2023-09-12 13:16:11 UTC
    Toggle discussion
    project/apps/edicto/exceptions.py 0 → 100644
    from rest_framework.exceptions import APIException
    • Martín Miranda
      @debianitram commented 2023-09-12 13:16:11 UTC
      Developer

      Te recomiendo que utilices las excepciones que ya existen en el framework, siempre y cuando no sea algo particular del negocio para luego ser controladas.

      Imagina que luego tengas otro modelo y necesites emitir un error 404, vas a tener que crear otra excepción, cuando ya existe la excepción NotFound que representa esto que estás haciendo aquí.

      Esto es un principio en la programación: "Don't repeat yourself"

  • Enzo Yair
    @Ecardenez 2023-09-12 13:44:02 UTC

    Status changed to closed

  • Please register or login to post a comment
Enzo Yair
Assignee
Enzo Yair @Ecardenez
Assign to
None
Milestone
None
Assign milestone
1
1 participant
Reference: mvmiranda/boletin_api!37