Facturation: ranger les campagnes de facturation dans une régie (#74516) #29

Merged
lguerin merged 5 commits from wip/74516-invoicing-attach-campaign-to-regie into main 2023-03-10 08:52:49 +01:00
Owner
No description provided.
Author
Owner

0001: ajout de la FK Regie sur le model Campaign, première migration pour virer toutes les données (pas de legacy à garder, on peut tout jeter), migration qui ajoute le champ, minimum de modif dans le code et les tests pour que le commit soit passant
0002: déplacement de juste la vue des éléments non facturés, parce que c'est la seule vue complètement indépendante des autres, donc facile
0003: déplacement de toutes les autres vues, d'un bloc, parce que héritage des templates etc tout dépend de tout
0004: simplification des filtres sur les pages de détail et journal d'un pool, pour supprimer le filtre régie

0001: ajout de la FK Regie sur le model Campaign, première migration pour virer toutes les données (pas de legacy à garder, on peut tout jeter), migration qui ajoute le champ, minimum de modif dans le code et les tests pour que le commit soit passant 0002: déplacement de juste la vue des éléments non facturés, parce que c'est la seule vue complètement indépendante des autres, donc facile 0003: déplacement de toutes les autres vues, d'un bloc, parce que héritage des templates etc tout dépend de tout 0004: simplification des filtres sur les pages de détail et journal d'un pool, pour supprimer le filtre régie
lguerin force-pushed wip/74516-invoicing-attach-campaign-to-regie from 1f8bf02d99 to 7bc98843b2 2023-02-23 14:45:39 +01:00 Compare
lguerin added 1 commit 2023-03-03 10:47:01 +01:00
Owner

Je commence à relire, wish me luck.

Je commence à relire, wish me luck.
pmarillonnet requested changes 2023-03-08 15:09:39 +01:00
pmarillonnet left a comment
Owner

Voilà quelques petits trucs attrapés au passage. Je me concentre sur la forme parce que je n’ai pas les billes pour comprendre la logique métier, partie sur laquelle ma relecture est tout à fait complaisante :)

Voilà quelques petits trucs attrapés au passage. Je me concentre sur la forme parce que je n’ai pas les billes pour comprendre la logique métier, partie sur laquelle ma relecture est tout à fait complaisante :)
@ -0,0 +1,28 @@
from django.db import migrations
Owner

Ok, je comprends la nécessité du nettoyage ici, mais n’y a-t-il pas des instances en recettes où des données ont déjà été créées à des fins de tests, par Stef ou quelqu’un d’autre, et qu’il faudrait sauvegarder dans un coin avant d’exécuter cette migration ?

Ok, je comprends la nécessité du nettoyage ici, mais n’y a-t-il pas des instances en recettes où des données ont déjà été créées à des fins de tests, par Stef ou quelqu’un d’autre, et qu’il faudrait sauvegarder dans un coin avant d’exécuter cette migration ?
Author
Owner

non pas de données à conserver, et c'était écrit dans la description du ticket :)

non pas de données à conserver, et c'était écrit dans la description du ticket :)
Owner

Arf désolé j’ai loupé ça.

Arf désolé j’ai loupé ça.
lguerin marked this conversation as resolved
@ -0,0 +12,4 @@
migrations.AddField(
model_name='campaign',
name='regie',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='invoicing.Regie'),
Owner

Ok, mais il faut alors dans la RegieDeleteView attraper les erreurs (django.db.ProtectedError) levées à la tentative de suppression alors qu’il existe encore des Campaign liées. Je ne vois ça nulle part (et la DeleteView django de base héritée ne gère pas cela du tout), je loupe un truc ?
Si c’est effectivement un oubli, sans doute qu’un petit test en plus serait le bienvenu.

Ok, mais il faut alors dans la RegieDeleteView attraper les erreurs (`django.db.ProtectedError`) levées à la tentative de suppression alors qu’il existe encore des Campaign liées. Je ne vois ça nulle part (et la DeleteView django de base héritée ne gère pas cela du tout), je loupe un truc ? Si c’est effectivement un oubli, sans doute qu’un petit test en plus serait le bienvenu.
Author
Owner

Justement j'ai choisi de mettre PROTECT pour garantir que rien n'est supprimé si ce n'est pas explicitement géré par le code.
Un delete sauvage d'une régie n'est pas possible, l'orm vérifie les relations et balance une erreur avant de tenter la suppression
(l'orm ne délègue pas la gestion des FK et des relations à la DB, il le gère lui-même et se comporte en fonction du on_delete).

Les données de facturation étant sensibles, je préfère lever une erreur et ne pas laisser passer un delete irréfléchi.
(et une campagne n'a pas vocation à être supprimée, on doit conserver les données de facturation)

Justement j'ai choisi de mettre PROTECT pour garantir que rien n'est supprimé si ce n'est pas explicitement géré par le code. Un delete sauvage d'une régie n'est pas possible, l'orm vérifie les relations et balance une erreur avant de tenter la suppression (l'orm ne délègue pas la gestion des FK et des relations à la DB, il le gère lui-même et se comporte en fonction du on_delete). Les données de facturation étant sensibles, je préfère lever une erreur et ne pas laisser passer un delete irréfléchi. (et une campagne n'a pas vocation à être supprimée, on doit conserver les données de facturation)
Owner

Ok, à dérouler le code de Lingo puis de la DeleteView de base Django, j’étais dans l’impression que la RegieDeleteView sur une régie qui est encore liée à des campagnes allait lancer une bête trace python au lieu d’une erreur applicative propre. Je loupe un truc ?

Ok, à dérouler le code de Lingo puis de la DeleteView de base Django, j’étais dans l’impression que la RegieDeleteView sur une régie qui est encore liée à des campagnes allait lancer une bête trace python au lieu d’une erreur applicative propre. Je loupe un truc ?
Author
Owner

ha zut il y a une vue de suppression de régie ? bien vu :)
je m'en vais donc interdire la suppression de régie si campagne ou facture liées.

ha zut il y a une vue de suppression de régie ? bien vu :) je m'en vais donc interdire la suppression de régie si campagne ou facture liées.
Author
Owner

commit ajouté

commit ajouté
Owner

¡Maravilloso!

¡Maravilloso!
@ -59,1 +61,4 @@
<div aria-labelledby="tab-campaigns" hidden="" id="panel-campaigns" role="tabpanel" tabindex="0">
<ul class="objects-list single-links">
{% for campaign in campaigns %}
Owner

Dans le gabarit initial que ce bout de gabarit remplace, il y avait un message lorsque cette liste d’objets était vide (“This site doesn't have any campaign yet. […]“). Est-ce volontaire de l’avoir laissé de coté dans cette nouvelle version ?

Dans le gabarit initial que ce bout de gabarit remplace, il y avait un message lorsque cette liste d’objets était vide (“This site doesn't have any campaign yet. […]“). Est-ce volontaire de l’avoir laissé de coté dans cette nouvelle version ?
Author
Owner

Dans le template précédent, on avait une liste de campagnes et c'est tout.
Là on est dans un onglet sur la page de détail d'une régie.

Sur la page de détail d'une campagne, dans l'onglet pool il n'y a pas on plus de message lorsque par de pools.

Si tu insistes je peux ajouter ça pour les campagnes et pour les pools (pour que ce soit homogène)

Dans le template précédent, on avait une liste de campagnes et c'est tout. Là on est dans un onglet sur la page de détail d'une régie. Sur la page de détail d'une campagne, dans l'onglet pool il n'y a pas on plus de message lorsque par de pools. Si tu insistes je peux ajouter ça pour les campagnes et pour les pools (pour que ce soit homogène)
Owner

Non, je ne connais pas assez le métier pour insister, je signalais juste ce qui me semblait être une incohérence de forme, mais il s’avère que c’est délibéré. Ok pour moi.

Non, je ne connais pas assez le métier pour insister, je signalais juste ce qui me semblait être une incohérence de forme, mais il s’avère que c’est délibéré. Ok pour moi.
lguerin marked this conversation as resolved
lguerin requested review from pmarillonnet 2023-03-08 19:21:24 +01:00
lguerin added 1 commit 2023-03-09 10:50:12 +01:00
gitea/lingo/pipeline/head This commit looks good Details
33381e97fa
invoicing: can not delete non empty regie (#74516)
pmarillonnet approved these changes 2023-03-09 11:00:30 +01:00
lguerin merged commit b5cab26269 into main 2023-03-10 08:52:49 +01:00
lguerin deleted branch wip/74516-invoicing-attach-campaign-to-regie 2023-03-10 08:52:49 +01:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/lingo#29
No description provided.