Projet

Général

Profil

Development #5542

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

Ajouté par Jérôme Schneider il y a plus de 9 ans. Mis à jour il y a plus de 9 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Jérôme Schneider
Catégorie:
-
Version cible:
Début:
19 septembre 2014
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Tout est dans le titre.


Fichiers

Révisions associées

Révision 4c755abe (diff)
Ajouté par Jérôme Schneider il y a plus de 9 ans

backends: add last_connection_date and creation_date to update_or_create

Closes #5542

Historique

#1

Mis à jour par Jérôme Schneider il y a plus de 9 ans

#2

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

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

Mis à jour par Jérôme Schneider il y a plus de 9 ans

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

#4

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

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").

#6

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

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

#7

Mis à jour par Jérôme Schneider il y a plus de 9 ans

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

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

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

Mis à jour par Jérôme Schneider il y a plus de 9 ans

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

Mis à jour par Jérôme Schneider il y a plus de 9 ans

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

Mis à jour par Jérôme Schneider il y a plus de 9 ans

  • Statut changé de En cours à Résolu (à déployer)
  • % réalisé changé de 60 à 100

Appliqué par commit commit:4c755abe699f5f5cbf55c5299ed189c7724cee80.

#12

Mis à jour par Jérôme Schneider il y a plus de 9 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF