Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(Admin des Besoins): Demande de modification ou clôture d'un besoin #1596

Open
wants to merge 24 commits into
base: master
Choose a base branch
from

Conversation

chloend
Copy link
Contributor

@chloend chloend commented Dec 17, 2024

DDB = dépôt(s) de besoin

Quoi ?

Permettre de demander des modifications sur un DDB ou de le clôturer si nécessaire.

Pourquoi ?

Actuellement, les admins sont contraints de mettre une mention "HS" sur le titre des besoins afin de les trier. Cela leur permettra de gagner du temps et d'améliorer le suivi des DDB.

Comment ?

1. Modèle Tender

  • Ajout de l'attribut email_sent_for_modification : un booléen à False par défaut

Ajout de deux méthodes :

  • reset_modification_request : réinitialise les champs email_sent_for_modification et/ou changes_information lorsque des modifications ont été apportées et que le statut du besoin passe de "brouillon" à "publié".
  • set_modification_request : sauvegarde les champs email_sent_for_modification, status et logs après avoir cliqué sur le bouton d'envoi de modification dans l'admin.

2. Modèle Conversation

a. Ajout deux de TemplateTransactional dans une migration :
  • TENDERS_AUTHOR_MODIFICATION_REQUEST : template de mail de demande de modification d'un DDB
  • TENDERS_AUTHOR_REJECT_MESSAGE : template de mail de rejet du DDB

Captures d'écran (optionnel)

  • Capture des besoins avec mention "HS"
  • Capture des besoins avec le champ email_sent_for_modification à True
  • Capture des besoins dont le statut est "rejeté".

Autre (optionnel)

  • À la demande de @SebastienReuiller, j'ai remplacé toutes les références à "@beta.gouv.fr" par "@inclusion.gouv.fr"

@chloend chloend force-pushed the chloend/tender-hs branch 5 times, most recently from dbc29a9 to 3e3e43c Compare December 30, 2024 18:23
@chloend chloend requested a review from Guilouf December 31, 2024 11:48
lemarche/tenders/admin.py Outdated Show resolved Hide resolved
lemarche/www/tenders/tasks.py Outdated Show resolved Hide resolved
lemarche/www/tenders/tasks.py Outdated Show resolved Hide resolved
lemarche/utils/urls.py Outdated Show resolved Hide resolved
lemarche/www/tenders/tasks.py Outdated Show resolved Hide resolved
lemarche/www/tenders/tasks.py Outdated Show resolved Hide resolved
lemarche/tenders/admin.py Outdated Show resolved Hide resolved
@chloend chloend marked this pull request as ready for review January 16, 2025 05:48
@chloend chloend requested review from Guilouf and madjid-asa January 16, 2025 05:48
Copy link
Contributor

@SebastienReuiller SebastienReuiller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Super fonctionnalité, bravo !
Je t'ai fait quelques retours ;)

@@ -81,6 +81,10 @@ def perform_create(self, serializer: TenderSerializer):
source=tender_source,
import_raw_object=self.request.data,
)
# Check before adding logs or resetting modification request
if tender.status == tender_constants.STATUS_PUBLISHED:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne suis pas sûr de l'utilité de ce if vu que status est affecté juste au dessus.

recipient_email = tender.author.email
recipient_name = tender.author.full_name

tender_update_url = reverse("tenders:update", kwargs={"slug": tender.slug})
Copy link
Contributor

@SebastienReuiller SebastienReuiller Jan 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne pense pas que tu obtienne l'URL absolue en faisant ça, je pense qu'il faut que tu appel la fonction "get_domain_url" comme un peu plus haut.

@@ -802,6 +840,10 @@ def response_change(self, request, obj: Tender):
# we don't need to send it in the crm, parteners manage them
self.message_user(request, "Ce dépôt de besoin a été validé. Il sera envoyé aux partenaires :)")
return HttpResponseRedirect(".")
if request.POST.get("_send_modification_request"):
return self.handle_email_sent_for_modification(request, obj)
if obj.status == tender_constants.STATUS_REJECTED:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pour moi, le status est à juste titre en lecture seule, donc je ne vois pas comment on peut tomber dans ce cas ? Ta volonté était bien de permettre le rejet depuis l'admin ou uniquement après l'expiration de la demande de modifications ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants