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

Retirer l’heure de fin des diagnostics d’éligibilité et utiliser uniquement la date #5210

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

francoisfreitag
Copy link
Contributor

🤔 Pourquoi ?

Un datetime n’a pas vraiment de sens pour les diagnostics d’éligibilité. On n’affiche jamais les heures/minutes/secondes aux utilisateurs, et la date d’expiration est administrative, ce n’est pas un point dans le temps.

Using a datetime doesn’t make much sense, we’re dealing with
administrative periods.

test_update_diagnosis_extend_the_validity_only_when_we_have_the_same_author_and_the_same_criteria
was modified because the updated diagnosis (only author) has a pretty
good chance of expiring the same day.
@francoisfreitag
Copy link
Contributor Author

Ça fait un gros UPDATE sur 1M de lignes, qui met 2-3 secondes à s’exécuter sur ma machine. Sûrement un peu moins sur notre super base de données musclée.

@francoisfreitag francoisfreitag changed the title Utiliser un DateField pour EligibilityDiagnosis.expires_at Retirer l’heure de fin des diagnostics d’éligibilité et utiliser uniquement la date Dec 6, 2024
Copy link
Contributor

@xavfernandez xavfernandez left a comment

Choose a reason for hiding this comment

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

Cela me semble être une bonne idée 👍

migrations.AlterField(
model_name="eligibilitydiagnosis",
name="expires_at",
field=models.DateField(db_index=True, verbose_name="date d'expiration"),
Copy link
Contributor

Choose a reason for hiding this comment

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

Est-ce que la migration se passe bien ?
Dans le sens où un diag qui expire à "JOUR 23h50UTC" (donc "JOUR+1 00h50 CET" actuellement) doit avoir comme date d'expiration convertie en "JOUR+1".
Si ce n'est pas le cas, il faudrait idéalement d'abord adapter les heures pour que la conversion se fasse bien ensuite.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

On s’en fiche, on n’est pas à un jour près sur les dates. Le diag a une durée très arbitraire, pas grave si on arrondit mal dans un cas limite.
https://www.notion.so/plateforme-inclusion/Mise-en-conformit-du-fonctionnement-des-dates-du-PASS-IAE-prolongation-suspension-7b0dbd5e87e045f1acc2f2352e0e3aec

@xavfernandez
Copy link
Contributor

Ça fait un gros UPDATE sur 1M de lignes, qui met 2-3 secondes à s’exécuter sur ma machine. Sûrement un peu moins sur notre super base de données musclée.

Ça pourrait lui faire du bien de découper la migration en deux pour n'avoir un LOCK que sur une seule table à la fois ?

@francoisfreitag
Copy link
Contributor Author

Il n’y a que 10K diag d’éligibilité GEIQ, ils ne pèsent pas dans la balance.

@francoisfreitag
Copy link
Contributor Author

C’est aussi une table peu mise à jour.

@@ -66,7 +66,7 @@ class AbstractEligibilityDiagnosisModel(models.Model):
)
created_at = models.DateTimeField(verbose_name="date de création", default=timezone.now, db_index=True)
updated_at = models.DateTimeField(verbose_name="date de modification", auto_now=True, db_index=True)
expires_at = models.DateTimeField(verbose_name="date d'expiration", db_index=True)
expires_at = models.DateField(verbose_name="date d'expiration", db_index=True)
Copy link
Contributor

Choose a reason for hiding this comment

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

Je me demande si un petit help_text expliquant que le diag n'est donc plus valide à cette date ne serait pas le bienvenu.

"expires_at": "2022-08-08T10:57:46.994Z",
"job_seeker": 21,
"updated_at": "2022-02-08T10:57:47.028Z"
{
Copy link
Contributor

Choose a reason for hiding this comment

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

Tu as utilisé le script itou/fixtures/django/dumpdata.sh ? Ou au moins jq . --sort-keys "$file" ?
J'ai l'impression que l’indentation change :suspect:

@@ -76,12 +76,12 @@ def __str__(self):

def save(self, *args, **kwargs):
if not self.expires_at:
self.expires_at = self.created_at + relativedelta(months=self.EXPIRATION_DELAY_MONTHS)
self.expires_at = timezone.localdate(self.created_at) + relativedelta(months=self.EXPIRATION_DELAY_MONTHS)
Copy link
Contributor

Choose a reason for hiding this comment

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

Est-ce que mettre une vérification sur le type expires_at et raise en test si on récupère un datetime ne serait pas une bonne idée ?

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

Successfully merging this pull request may close these issues.

2 participants