fix: some fixes for wutta people view

This commit is contained in:
Lance Edgar 2024-08-22 19:21:48 -05:00
parent 4c3e3aeb6a
commit 29531c83c4
3 changed files with 41 additions and 12 deletions

View file

@ -24,9 +24,10 @@
Core Grid Classes
"""
from urllib.parse import urlencode
import warnings
import inspect
import logging
import warnings
from urllib.parse import urlencode
import sqlalchemy as sa
from sqlalchemy import orm
@ -858,9 +859,13 @@ class Grid(WuttaGrid):
settings['page'] = self.page
if self.filterable:
for filtr in self.iter_filters():
settings['filter.{}.active'.format(filtr.key)] = filtr.default_active
settings['filter.{}.verb'.format(filtr.key)] = filtr.default_verb
settings['filter.{}.value'.format(filtr.key)] = filtr.default_value
defaults = self.filter_defaults.get(filtr.key, {})
settings[f'filter.{filtr.key}.active'] = defaults.get('active',
filtr.default_active)
settings[f'filter.{filtr.key}.verb'] = defaults.get('verb',
filtr.default_verb)
settings[f'filter.{filtr.key}.value'] = defaults.get('value',
filtr.default_value)
# If user has default settings on file, apply those first.
if self.user_has_defaults():
@ -1239,7 +1244,7 @@ class Grid(WuttaGrid):
view = None
for action in self.actions:
if action.key == 'view':
return action.click_handler
return getattr(action, 'click_handler', None)
def set_filters_sequence(self, filters, only=False):
"""
@ -1475,10 +1480,22 @@ class Grid(WuttaGrid):
# leverage configured rendering logic where applicable;
# otherwise use "raw" data value as string
value = self.obtain_value(rowobj, name)
if self.renderers and name in self.renderers:
value = self.renderers[name](rowobj, name)
else:
value = self.obtain_value(rowobj, name)
renderer = self.renderers[name]
# TODO: legacy renderer callables require 2 args,
# but wuttaweb callables require 3 args
sig = inspect.signature(renderer)
required = [param for param in sig.parameters.values()
if param.default == param.empty]
if len(required) == 2:
# TODO: legacy renderer
value = renderer(rowobj, name)
else: # the future
value = renderer(rowobj, name, value)
if value is None:
value = ""