From 8d2c18b6af98977ff45651bdff3f55ef239267f9 Mon Sep 17 00:00:00 2001 From: Dylan Jeannin Date: Mon, 7 Sep 2026 12:10:45 +0200 Subject: [PATCH] Timeseries: fix problem with copy/paste data in timeseries for the date mode --- .../BoundaryConditionAdisTS.py | 7 +++++-- .../BoundaryConditionTemperature.py | 7 +++++-- src/View/BoundaryCondition/Edit/Table.py | 15 ++++++++------- src/View/BoundaryConditionsAdisTS/Edit/Table.py | 13 +++++++------ .../BoundaryConditionsTemperature/Edit/Table.py | 13 +++++++------ src/View/LateralContribution/Edit/Table.py | 13 +++++++------ src/View/WeatherParameters/Edit/Table.py | 13 +++++++------ 7 files changed, 46 insertions(+), 35 deletions(-) diff --git a/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py b/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py index f8387adc..8539cb99 100644 --- a/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py +++ b/src/Model/BoundaryConditionsAdisTS/BoundaryConditionAdisTS.py @@ -531,7 +531,7 @@ class BoundaryConditionAdisTS(SQLSubModel): new_0 = self._types[0](data[0].replace(",", ".")) new_1 = self._types[1](data[1].replace(",", ".")) - return (new_0, new_1) + return Data(new_0, new_1, types=self._types, status=self._status) def add(self, index: int): value = Data( @@ -543,7 +543,10 @@ class BoundaryConditionAdisTS(SQLSubModel): return value def insert(self, index: int, value): - self._data.insert(index, value) + if value in self._data: + value.set_as_not_deleted() + else: + self._data.insert(index, value) self.modified() def delete_i(self, indexes): diff --git a/src/Model/BoundaryConditionsTemperature/BoundaryConditionTemperature.py b/src/Model/BoundaryConditionsTemperature/BoundaryConditionTemperature.py index 31b0d7f2..86bd0fad 100644 --- a/src/Model/BoundaryConditionsTemperature/BoundaryConditionTemperature.py +++ b/src/Model/BoundaryConditionsTemperature/BoundaryConditionTemperature.py @@ -419,7 +419,7 @@ class BoundaryConditionTemperature(SQLSubModel): new_0 = self._types[0](data[0].replace(",", ".")) new_1 = self._types[1](data[1].replace(",", ".")) - return (new_0, new_1) + return Data(new_0, new_1, types=self._types, status=self._status) def add(self, index: int): value = Data( @@ -431,7 +431,10 @@ class BoundaryConditionTemperature(SQLSubModel): return value def insert(self, index: int, value): - self._data.insert(index, value) + if value in self._data: + value.set_as_not_deleted() + else: + self._data.insert(index, value) self.modified() def delete_i(self, indexes): diff --git a/src/View/BoundaryCondition/Edit/Table.py b/src/View/BoundaryCondition/Edit/Table.py index bbde866e..fa38587f 100644 --- a/src/View/BoundaryCondition/Edit/Table.py +++ b/src/View/BoundaryCondition/Edit/Table.py @@ -24,7 +24,7 @@ from datetime import date, time, datetime, timedelta from tools import ( trace, timer, timestamp_to_old_pamhyr_date, - old_pamhyr_date_to_timestamp, format_datetime + old_pamhyr_date_to_timestamp, format_datetime, parse_datetime ) from View.Tools.PamhyrTable import PamhyrTableModel @@ -238,17 +238,18 @@ class TableModel(PamhyrTableModel): if len(data) == 0: return + try: + rows = [self._data.new_from_data(header, d) for d in data] + except (ValueError, TypeError, IndexError) as error: + logger.warning(error) + return False + self.layoutAboutToBeChanged.emit() self._undo.push( PasteCommand( self._data, row, - list( - map( - lambda d: self._data.new_from_data(header, d), - data - ) - ) + rows ) ) diff --git a/src/View/BoundaryConditionsAdisTS/Edit/Table.py b/src/View/BoundaryConditionsAdisTS/Edit/Table.py index 99c82c9f..3788b624 100644 --- a/src/View/BoundaryConditionsAdisTS/Edit/Table.py +++ b/src/View/BoundaryConditionsAdisTS/Edit/Table.py @@ -169,17 +169,18 @@ class TableModel(PamhyrTableModel): if len(data) == 0: return + try: + rows = [self._data.new_from_data(header, d) for d in data] + except (ValueError, TypeError, IndexError) as error: + logger.warning(error) + return False + self.layoutAboutToBeChanged.emit() self._undo.push( PasteCommand( self._data, row, - list( - map( - lambda d: self._data.new_from_data(header, d), - data - ) - ) + rows ) ) diff --git a/src/View/BoundaryConditionsTemperature/Edit/Table.py b/src/View/BoundaryConditionsTemperature/Edit/Table.py index 7854d91a..9b729507 100644 --- a/src/View/BoundaryConditionsTemperature/Edit/Table.py +++ b/src/View/BoundaryConditionsTemperature/Edit/Table.py @@ -169,17 +169,18 @@ class TableModel(PamhyrTableModel): if len(data) == 0: return + try: + rows = [self._data.new_from_data(header, d) for d in data] + except (ValueError, TypeError, IndexError) as error: + logger.warning(error) + return False + self.layoutAboutToBeChanged.emit() self._undo.push( PasteCommand( self._data, row, - list( - map( - lambda d: self._data.new_from_data(header, d), - data - ) - ) + rows ) ) diff --git a/src/View/LateralContribution/Edit/Table.py b/src/View/LateralContribution/Edit/Table.py index 94b2c39f..0c5cf648 100644 --- a/src/View/LateralContribution/Edit/Table.py +++ b/src/View/LateralContribution/Edit/Table.py @@ -184,17 +184,18 @@ class TableModel(PamhyrTableModel): if len(data) == 0: return + try: + rows = [self._data.new_from_data(header, d) for d in data] + except (ValueError, TypeError, IndexError) as error: + logger.warning(error) + return False + self.layoutAboutToBeChanged.emit() self._undo.push( PasteCommand( self._data, row, - list( - map( - lambda d: self._data.new_from_data(header, d), - data - ) - ) + rows ) ) diff --git a/src/View/WeatherParameters/Edit/Table.py b/src/View/WeatherParameters/Edit/Table.py index 91e3ca0f..76cb0190 100644 --- a/src/View/WeatherParameters/Edit/Table.py +++ b/src/View/WeatherParameters/Edit/Table.py @@ -175,17 +175,18 @@ class TableModel(PamhyrTableModel): if len(data) == 0: return + try: + rows = [self._data.new_from_data(header, d) for d in data] + except (ValueError, TypeError, IndexError) as error: + logger.warning(error) + return False + self.layoutAboutToBeChanged.emit() self._undo.push( PasteCommand( self._data, row, - list( - map( - lambda d: self._data.new_from_data(header, d), - data - ) - ) + rows ) )