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

Permet le téléchargement de l'attestation des déclarations en abandon #1393

Merged
merged 3 commits into from
Dec 19, 2024

Conversation

alemangui
Copy link
Collaborator

@alemangui alemangui commented Dec 17, 2024

Closes #1266

Contexte

Ce n'était pas possible de télécharger l'attestation des déclarations en abandon. L'état pré-abandon (observation ou objection) pouvait être utilisé pour avoir l'attestation.

Scope

Pour le calcul du template on utilisait seulement le statut de la déclaration. Cette PR fait un calcul supplémentaire si la déclaration se trouve en abandon :

template_status = declaration.status
        if template_status == status.ABANDONED:
            pre_abandon_statuses = [status.OBJECTION, status.OBSERVATION]
            template_status = (
                declaration.snapshots.filter(status__in=pre_abandon_statuses).latest("creation_date").status
            )

Bug fixes

J'en ai profité pour régler un petit bug que j'ai remarqué concernant les dates de l'attestation. Précédemment on calculait ces dates à partir du statut des snapshots, considérant par exemple qu'un snapshot avec le statut AWAITING_INSTRUCTION venait forcément d'une soumission de l'usager. Ceci n'est pas le cas car un refus de visa peut aussi générer un snapshot AWAITING_INSTRUCTION, néanmoins ce n'est pas celui là qu'on doit utiliser pour la date.

J'ai donc ajouté des filtres pour l'action du snapshot, histoire d'ignorer les refus de visa (ce sont les changements de la fonction get_context)

Démo

Screencast.from.2024-12-17.12-34-07.mp4

@alemangui alemangui requested a review from pletelli December 17, 2024 14:03
except Exception as e:
logger.error(f"Error obtaining certificate date for declaration {declaration.id}")
logger.exception(e)
date = declaration.creation_date

try:
submission_actions = [
Copy link
Collaborator

@pletelli pletelli Dec 19, 2024

Choose a reason for hiding this comment

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

Juste pour info : Je commence à me servir assez souvent dans metabase des catégories d'actions (submissions_action, ongoing_instruction_action, etc).
Je me demande si on ne devrait pas définir ça à un plus haut niveau à un moment donné

Copy link
Collaborator

Choose a reason for hiding this comment

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

Ah et je viens de capter du coup que ma catégorie submission n'est pas tout à fait exacte à cause du visa qui peut envoyer des AWAITING_INSTRUCTION

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Tout à fait, je pense que par la suite on pourra créer des groupes d'actions dans le modèle Snapshot pour nous faciliter la vie

Copy link
Collaborator

@pletelli pletelli left a comment

Choose a reason for hiding this comment

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

Le status.OBSERVATION ne génère pas de certificat ici. Et pourtant le bouton de téléchargement va s'afficher.

@alemangui
Copy link
Collaborator Author

alemangui commented Dec 19, 2024

Merci de ta vigilance sur ce comment @pletelli !

Dans le commit 66b568e j'ai réglé la situation des déclarations ABANDONED qui était auparavant en observation - et donc ne devraient pas afficher le bouton de téléchargement.

En deux mots, le passage en abandon ne génère pas de Snapshot (car pas lié à une action usager). Donc on peut regarder le statut du dernier snapshot pour savoir si précédemment la déclaration était en observation (pas de certificat) ou objection (certificat).

Backend

Côté backend c'est assez simple, dans la view on regarde dans template_status = declaration.snapshots.latest("creation_date").status.

Frontend

Dans le front seulement le composant HistoryTab avait accès aux snapshots (car jusqu'à maintenant ils n'étaient utilisés que là-bas). Afin de pouvoir passer les snapshots à DeclarationAlert (le composant qui affiche le bouton de téléchargement), il a fallu remonter l'appel aux snapshots un peu plus haut niveau, çad dans le index.vue de chaque page de visualisation de déclaration (visa, instruction, pro).

De cette façon DeclarationAlert peut aussi regarder le dernier snapshot et décider s'il doit afficher le bouton de téléchargement.

Pour après

À tenir en tête que dans ces views on commence à faire plusieurs appels API en parallèle (déclaration, info de la compagnie, snapshots, etc). Par la suite p-e ça vaudrait la peine d'enrichir le serializer de base pour qu'il contienne toutes ces infos dès le départ pour diminuer le nombre de requêtes.

@alemangui alemangui requested a review from pletelli December 19, 2024 10:29
@alemangui alemangui merged commit 95815a6 into staging Dec 19, 2024
5 checks passed
@alemangui alemangui deleted the 1266-declaration-abandon branch December 19, 2024 13:03
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.

En tant que déclarant, je souhaite voir le courrier d'objection en cas de mise en abandon de mon dossier
2 participants