From 27fce173cefef545e19bd834171d1c685d853fb8 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Tue, 26 Mar 2024 11:48:52 -0500 Subject: [PATCH] Fix how row grid values are fetched, for row proxy objects per changes coming in SQLAlchemy 2.0 --- tailbone/grids/core.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tailbone/grids/core.py b/tailbone/grids/core.py index 7a0d00e3..41964648 100644 --- a/tailbone/grids/core.py +++ b/tailbone/grids/core.py @@ -2,7 +2,7 @@ ################################################################################ # # Rattail -- Retail Software Framework -# Copyright © 2010-2023 Lance Edgar +# Copyright © 2010-2024 Lance Edgar # # This file is part of Rattail. # @@ -33,7 +33,6 @@ from sqlalchemy import orm from rattail.db.types import GPCType from rattail.util import prettify, pretty_boolean, pretty_quantity -from rattail.time import localtime import webhelpers2_grid from pyramid.renderers import render @@ -478,6 +477,11 @@ class Grid(object): :returns: The value, or ``None`` if no value was found. """ + # TODO: this seems a little hacky, is there a better way? + # nb. this may only be relevant for import/export batch view? + if isinstance(obj, sa.engine.Row): + return obj._mapping[column_name] + try: return obj[column_name] except KeyError: @@ -503,7 +507,8 @@ class Grid(object): value = self.obtain_value(obj, column_name) if value is None: return "" - value = localtime(self.request.rattail_config, value) + app = self.request.rattail_config.get_app() + value = app.localtime(value) return raw_datetime(self.request.rattail_config, value) def render_enum(self, obj, column_name): @@ -1724,7 +1729,7 @@ class CustomWebhelpersGrid(webhelpers2_grid.Grid): self.renderers = kwargs.pop('renderers', {}) self.linked_columns = kwargs.pop('linked_columns', []) self.extra_record_class = kwargs.pop('extra_record_class', None) - super(CustomWebhelpersGrid, self).__init__(itemlist, columns, **kwargs) + super().__init__(itemlist, columns, **kwargs) def generate_header_link(self, column_number, column, label_text):