From fb06055b11beaac1eca238681a176baa59c1ddde Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Wed, 5 Jul 2023 11:25:33 +0200 Subject: [PATCH] Window: Fix save for windows version. --- src/Model/Study.py | 18 ++++++++++++------ src/tools.py | 9 +++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/Model/Study.py b/src/Model/Study.py index a732cb86..ff806264 100644 --- a/src/Model/Study.py +++ b/src/Model/Study.py @@ -4,6 +4,8 @@ import os import shutil from datetime import datetime +from tools import timer, timestamp + from Model.DB import SQLModel from Model.Saved import SavedStatus from Model.Serializable import Serializable @@ -69,11 +71,15 @@ class Study(SQLModel): fdir, fname = os.path.split(self.filename) if self._old_save_id == 0: + old_dir = os.path.join(fdir, "__old__") + if os.name == "nt": + old_dir = old_dir.replace("/", "\\") + try: - os.makedirs(os.path.join(fdir, "__old__")) + os.makedirs(old_dir) except FileExistsError as e: - shutil.rmtree(os.path.join(fdir, "__old__")) - os.makedirs(os.path.join(fdir, "__old__")) + shutil.rmtree(old_dir) + os.makedirs(old_dir) except Exception as e: print(e) @@ -227,9 +233,9 @@ class Study(SQLModel): self.execute(f"UPDATE info SET value='{self._sql_format(self.name)}' WHERE key='name'") self.execute(f"UPDATE info SET value='{self._sql_format(self.description)}' WHERE key='description'") self.execute(f"UPDATE info SET value='{self._time_system}' WHERE key='time_system'") - self.execute(f"UPDATE info SET value='{self._date.timestamp()}' WHERE key='date'") - self.execute(f"UPDATE info SET value='{self.creation_date.timestamp()}' WHERE key='creation_date'") - self.execute(f"UPDATE info SET value='{self.last_save_date.timestamp()}' WHERE key='last_save_date'") + self.execute(f"UPDATE info SET value='{timestamp(self._date)}' WHERE key='date'") + self.execute(f"UPDATE info SET value='{timestamp(self.creation_date)}' WHERE key='creation_date'") + self.execute(f"UPDATE info SET value='{timestamp(self.last_save_date)}' WHERE key='last_save_date'") self._save_submodel([self._river]) self.commit() diff --git a/src/tools.py b/src/tools.py index 34c4b9b2..410cb799 100644 --- a/src/tools.py +++ b/src/tools.py @@ -1,9 +1,11 @@ # -*- coding: utf-8 -*- +import os import time import sqlite3 import traceback +from datetime import datetime from pathlib import Path from colorama import Fore @@ -135,6 +137,13 @@ def flatten(lst): return reduce(list.__add__, lst) +def timestamp(dt:datetime): + # Fix timestamp for some windows version. + # - Issue : (https://bugs.python.org/issue29097) + if os.name == 'nt': + return (dt - datetime(1970, 1, 1)).total_seconds() + return dt.timestamp() + def old_pamhyr_date_to_timestamp(date:str): v = date.split(":") if len(v) != 4: -- GitLab