Project

General

Profile

Development #5542

Backends: ajouter l'option last_connection_date et creation_date dans le update_or_create

Added by Jérôme Schneider about 5 years ago. Updated almost 5 years ago.

Status:
Fermé
Priority:
Normal
Assignee:
Jérôme Schneider
Category:
-
Target version:
Start date:
19 Sep 2014
Due date:
% Done:

100%

Patch proposed:
Yes
Planning:
No

Description

Tout est dans le titre.

0001-backends-add-last_connection_date-and-creation_date-.patch View (5.14 KB) Jérôme Schneider, 19 Sep 2014 02:13 PM

0001-backends-add-last_connection_date-and-creation_date-.patch View (5.88 KB) Jérôme Schneider, 19 Sep 2014 03:17 PM

0001-backends-add-last_connection_date-and-creation_date-.patch View (5.84 KB) Jérôme Schneider, 19 Sep 2014 04:28 PM

Associated revisions

Revision 4c755abe (diff)
Added by Jérôme Schneider about 5 years ago

backends: add last_connection_date and creation_date to update_or_create

Closes #5542

History

#1 Updated by Jérôme Schneider about 5 years ago

#2 Updated by Frédéric Péters about 5 years ago

On ne peut pas passer la valeur par défaut comme ça, démonstration avec ce script, qui affichera deux fois la même heure.

#! /usr/bin/env python

from datetime import datetime
import time

def print_time(t=datetime.utcnow()):
    print t

print_time()
time.sleep(10)
print_time()

#3 Updated by Jérôme Schneider about 5 years ago

Zut je pensais que c'était exécuté à chaque appelle j'aurais du vérifier ! Une nouvelle version qui corrige le problème.

#4 Updated by Frédéric Péters about 5 years ago

Perso je préfère de loin avoir les paramètres nommés et avoir "if creation_date is None: creation_date = datetime.utcnow()" dans le corps de la méthode, plutôt que passer par kwargs. (ou creation_date = creation_date or datetime.utcnow() si on veut ça sur une ligne sans "if").

#5 Updated by Jérôme Schneider about 5 years ago

Un nouveau patch sans kwargs.

#6 Updated by Frédéric Péters about 5 years ago

Dans le backend sql tu utilises datetime.utcnow() dans le patch mais c'est datetime.now() qui est utilisé dans update_last_connection.

#7 Updated by Jérôme Schneider about 5 years ago

Ca me semble mieux de migrer en utc surtout avec l'utilisation de plusieurs backends. Je pensais changer le now en utcnow dans le prochain commit. Après je ne suis pas sur d'avoir fait le bon choix.

#8 Updated by Frédéric Péters about 5 years ago

Il y a aussi des datetime.now() dans le models.py.

    creation_date = Column(DateTime, default=datetime.now(), nullable=False)
    last_connection = Column(DateTime, default=datetime.now())

À lire rapidement la doc de sqlalchemy, par défaut il considère les colonnes de type datetime sans timezone, tout pourrait ainsi être passé à utcnow() (bien sûr il faudrait idéalement convertir les données existantes, mais passons); j'ai aussi regardé vite fait et jamais on n'utilise dans l'UI ces champs, tu confirmes ?

#9 Updated by Jérôme Schneider about 5 years ago

On Fri, Sep 19, 2014 at 05:01:20PM +0200, wrote:

À lire rapidement la doc de sqlalchemy, par défaut il considère les colonnes de type datetime sans timezone, tout pourrait ainsi être passé à utcnow() (bien sûr il faudrait idéalement convertir les données existantes, mais passons); j'ai aussi regardé vite fait et jamais on n'utilise dans l'UI ces champs, tu confirmes ?

Oui je confirme. L'idée de base c'était de faire des statistiques pour
Isabelle mais finalement c'est tombé à l'eau.
Je ne l'utilise que pour débuger actuellement.

#10 Updated by Jérôme Schneider about 5 years ago

C'est poussé. J'ouvre un autre ticket pour le soucis de date.

commit 4c755abe699f5f5cbf55c5299ed189c7724cee80
Author: Jérôme Schneider <jschneider@entrouvert.com>
Date:   Fri Sep 19 16:24:53 2014 +0200

    backends: add last_connection_date and creation_date to update_or_create

    Closes #5542

#11 Updated by Jérôme Schneider about 5 years ago

  • % Done changed from 60 to 100
  • Status changed from En cours to Résolu (à déployer)

Appliqué par commit commit:4c755abe699f5f5cbf55c5299ed189c7724cee80.

#12 Updated by Jérôme Schneider almost 5 years ago

  • Status changed from Résolu (à déployer) to Fermé

Also available in: Atom PDF