Skip to content

Commit

Permalink
capter l'erreur OgoingAvenantError et rediriger plutôt qu'afficher un…
Browse files Browse the repository at this point in the history
…e erreur
  • Loading branch information
kolok committed Jan 31, 2025
1 parent 8e0672b commit 9aecbd5
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 5 deletions.
8 changes: 4 additions & 4 deletions conventions/services/avenants.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@ def __init__(self):
def create_avenant(request: HttpRequest, convention_uuid: UUID) -> dict[str, Any]:
parent_convention = (
Convention.objects.prefetch_related("programme")
# .prefetch_related("lot")
.prefetch_related("avenants").get(uuid=convention_uuid)
.prefetch_related("avenants")
.get(uuid=convention_uuid)
)
if parent_convention.is_avenant():
parent_convention = (
Convention.objects.prefetch_related("programme")
# .prefetch_related("lot")
.prefetch_related("avenants").get(id=parent_convention.parent_id)
.prefetch_related("avenants")
.get(id=parent_convention.parent_id)
)

if request.method == "POST":
Expand Down
23 changes: 22 additions & 1 deletion conventions/views/avenants.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,14 @@
from django.views.decorators.http import require_http_methods

from conventions.forms import AvenantSearchForm
from conventions.models.choices import ConventionStatut
from conventions.models.convention import Convention
from conventions.permissions import (
currentrole_permission_required,
currentrole_permission_required_view_function,
)
from conventions.services.avenants import (
OngoingAvenantError,
complete_avenants_for_avenant,
create_avenant,
remove_avenant_type_from_avenant,
Expand All @@ -26,7 +29,25 @@
@login_required
@currentrole_permission_required("convention.add_convention")
def new_avenant(request: HttpRequest, convention_uuid: UUID) -> HttpResponse:
result = create_avenant(request, convention_uuid)
try:
result = create_avenant(request, convention_uuid)
except OngoingAvenantError:
convention = Convention.objects.get(uuid=convention_uuid)
last_avenant = (
convention.avenants.filter(
statut__in=[
ConventionStatut.PROJET.label,
ConventionStatut.INSTRUCTION.label,
ConventionStatut.CORRECTION.label,
]
)
.order_by("-cree_le")
.first()
)
return HttpResponseRedirect(
reverse("conventions:recapitulatif", args=[last_avenant.uuid])
)

if result["success"] == ReturnStatus.SUCCESS:
convention = result["convention"]
target_pathname = None
Expand Down

0 comments on commit 9aecbd5

Please sign in to comment.