fix: dashboard changed on calculation (#14450)
This commit is contained in:
parent
0b9fd24cf3
commit
e05a70fc82
|
|
@ -71,7 +71,8 @@ class DashboardDAO(BaseDAO):
|
|||
if isinstance(id_or_slug_or_dashboard, str)
|
||||
else id_or_slug_or_dashboard
|
||||
)
|
||||
return dashboard.changed_on
|
||||
# drop microseconds in datetime to match with last_modified header
|
||||
return dashboard.changed_on.replace(microsecond=0)
|
||||
|
||||
@staticmethod
|
||||
def get_dashboard_and_slices_changed_on( # pylint: disable=invalid-name
|
||||
|
|
@ -91,7 +92,11 @@ class DashboardDAO(BaseDAO):
|
|||
else id_or_slug_or_dashboard
|
||||
)
|
||||
dashboard_changed_on = DashboardDAO.get_dashboard_changed_on(dashboard)
|
||||
slices_changed_on = max([slc.changed_on for slc in dashboard.slices])
|
||||
slices = dashboard.slices
|
||||
slices_changed_on = max(
|
||||
[slc.changed_on for slc in slices]
|
||||
+ ([datetime.fromtimestamp(0)] if len(slices) == 0 else [])
|
||||
)
|
||||
# drop microseconds in datetime to match with last_modified header
|
||||
return max(dashboard_changed_on, slices_changed_on).replace(microsecond=0)
|
||||
|
||||
|
|
@ -113,8 +118,10 @@ class DashboardDAO(BaseDAO):
|
|||
else id_or_slug_or_dashboard
|
||||
)
|
||||
dashboard_changed_on = DashboardDAO.get_dashboard_changed_on(dashboard)
|
||||
datasources = dashboard.datasources
|
||||
datasources_changed_on = max(
|
||||
[datasource.changed_on for datasource in dashboard.datasources]
|
||||
[datasource.changed_on for datasource in datasources]
|
||||
+ ([datetime.fromtimestamp(0)] if len(datasources) == 0 else [])
|
||||
)
|
||||
# drop microseconds in datetime to match with last_modified header
|
||||
return max(dashboard_changed_on, datasources_changed_on).replace(microsecond=0)
|
||||
|
|
|
|||
|
|
@ -86,10 +86,9 @@ class TestDashboardDAO(SupersetTestCase):
|
|||
session = db.session()
|
||||
dashboard = session.query(Dashboard).filter_by(slug="world_health").first()
|
||||
|
||||
assert dashboard.changed_on == DashboardDAO.get_dashboard_changed_on(dashboard)
|
||||
assert dashboard.changed_on == DashboardDAO.get_dashboard_changed_on(
|
||||
"world_health"
|
||||
)
|
||||
changed_on = dashboard.changed_on.replace(microsecond=0)
|
||||
assert changed_on == DashboardDAO.get_dashboard_changed_on(dashboard)
|
||||
assert changed_on == DashboardDAO.get_dashboard_changed_on("world_health")
|
||||
|
||||
old_changed_on = dashboard.changed_on
|
||||
|
||||
|
|
@ -104,7 +103,14 @@ class TestDashboardDAO(SupersetTestCase):
|
|||
DashboardDAO.set_dash_metadata(dashboard, data)
|
||||
session.merge(dashboard)
|
||||
session.commit()
|
||||
assert old_changed_on < DashboardDAO.get_dashboard_changed_on(dashboard)
|
||||
new_changed_on = DashboardDAO.get_dashboard_changed_on(dashboard)
|
||||
assert old_changed_on.replace(microsecond=0) < new_changed_on
|
||||
assert new_changed_on == DashboardDAO.get_dashboard_and_datasets_changed_on(
|
||||
dashboard
|
||||
)
|
||||
assert new_changed_on == DashboardDAO.get_dashboard_and_slices_changed_on(
|
||||
dashboard
|
||||
)
|
||||
|
||||
DashboardDAO.set_dash_metadata(dashboard, original_data)
|
||||
session.merge(dashboard)
|
||||
|
|
|
|||
Loading…
Reference in New Issue