Projet

Général

Profil

Development #27707

Filtre Django |days:"+2" pour ajouter/soustraire des jours à une date

Ajouté par Pierre Cros il y a plus de 5 ans. Mis à jour il y a environ 5 ans.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
31 octobre 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:

Description

Bientôt dans la doc !

Si je veux enlever trois jours à la date du jour, je souhaite pouvoir écrire today|days:"-3"

Historique

#1

Mis à jour par Thomas Noël il y a plus de 5 ans

Ça serait plutôt quelque chose comme |add_days:"3" ; mais avant de lancer et un peu par curiosité, c'est quel usage ? Parce que pour les conditions, on utiliserait plutôt la notion d'âge (age_in_days) pour savoir si un truc aura lieu avant 2 jours, genre.

#4

Mis à jour par Stéphane Laget il y a plus de 5 ans

  • Ajouter 30 jours à une date :
    date(form_var_date_envoi_devis) + days(30)
    
#5

Mis à jour par Thomas Noël il y a plus de 5 ans

Je parlais vraiment juste du cas d'usage de "ajouter/soustraire des jours à une date" de ce ticket.

#7

Mis à jour par Pierre Cros il y a plus de 5 ans

RTFM ! https://doc-publik.entrouvert.com/admin-fonctionnel/parametrage-avance/expressions/
Ça vous permettra vraisemblablement de voir que j'écris pas ce qu'il faudrait


|days:"+-XXX" va permettre de soustraire ou d'ajouter des jours à une date. Pour déclencher une action 2 jours avant une date particulière (vérifier qu'on est à deux jours ou moins d'une échéance), on écrira par exemple form_var_date|days:"-2"|parse_date >= today|parse_date : cette condition deviendra vraie deux jours avant la date de la variable, elle sera fausse jusqu'à -2 jours avant la date de la variable.

Pour vérifier que la date se situe à plus de 30 jours avant la date du jour, on écrira form_var_date|days:"+30"|parse_date <= today|parse_date : cette condition sera vraie si la date de la variable est inférieure de 30 jours ou plus à la date du jour, fausse sinon.


#8

Mis à jour par Frédéric Péters il y a plus de 5 ans

form_var_date|days:"+30"|parse_date

Ça ne pourra pas être dans ce sens, on ajoutera 30 jours à une date, pas à un form_var_date dont on ne connait pas le type; plutôt donc form_var_date|parse_date|days:"+30".

Aussi, on préférera ajouter un nombre de jours, donc je dirais form_var_date|parse_date|days:30. (la syntaxe acceptera aussi days:+30 et days:-30, juste pas besoin des guillemets). Mais c'est un détail ici, ça ne m'ennuie pas d'également gérer la conversion de chaine en nombre ici.

#9

Mis à jour par Pierre Cros il y a plus de 5 ans

Cool, merci, doc corrigée.

#10

Mis à jour par Thomas Noël il y a plus de 5 ans

Frédéric Péters a écrit :

form_var_date|days:"+30"|parse_date

Ça ne pourra pas être dans ce sens, on ajoutera 30 jours à une date, pas à un form_var_date dont on ne connait pas le type; plutôt donc form_var_date|parse_date|days:"+30".

Je me dis qu'on pourrait, comme pour le templatetags date, être rusé et jouer le parse_date si nécessaire (if not isinstance(value, (datetime.datetime, datetime.date, datetime.time)): value = parse_date(value)). Un peu de magie ne fait pas de mal à ce niveau.

Aussi, on préférera ajouter un nombre de jours, donc je dirais form_var_date|parse_date|days:30. (la syntaxe acceptera aussi days:+30 et days:-30, juste pas besoin des guillemets). Mais c'est un détail ici, ça ne m'ennuie pas d'également gérer la conversion de chaine en nombre ici.

Yep.

Enfin, en relation avec #27709, je préférerai que le filtre se nomme « |addition_days » et qu'on ajoute en même temps « |substraction_days » qui sera plus facile à lire que « addition_days:"-2" »

#11

Mis à jour par Frédéric Péters il y a plus de 5 ans

|days

|addition_days

Sûr, modulo que je suis pour que les opérations soient exprimées par des verbes, du coup |add_days. (j'ai un message plus long sur le sujet sur la liste).

#13

Mis à jour par Thomas Noël il y a environ 5 ans

  • Statut changé de Nouveau à Rejeté

Géré dans #29337

Formats disponibles : Atom PDF