Add new "v3" grids, refactor all views to use them
or at least that's the idea..hopefully we caught them all
This commit is contained in:
parent
f244c2934b
commit
5b1ae27a10
71 changed files with 2679 additions and 2030 deletions
|
@ -129,7 +129,7 @@ class MasterView(View):
|
|||
return self.redirect(self.request.current_route_url(_query=None))
|
||||
|
||||
# Stash some grid stats, for possible use when generating URLs.
|
||||
if grid.pageable and grid.pager:
|
||||
if grid.pageable and hasattr(grid, 'pager'):
|
||||
self.first_visible_grid_index = grid.pager.first_item
|
||||
|
||||
# Return grid only, if partial page was requested.
|
||||
|
@ -170,6 +170,15 @@ class MasterView(View):
|
|||
"""
|
||||
return getattr(cls, 'mobile_grid_factory', MobileGrid)
|
||||
|
||||
@classmethod
|
||||
def get_mobile_row_grid_factory(cls):
|
||||
"""
|
||||
Must return a callable to be used when creating new mobile grid
|
||||
instances. Instead of overriding this, you can set
|
||||
:attr:`mobile_grid_factory`. Default factory is :class:`MobileGrid`.
|
||||
"""
|
||||
return getattr(cls, 'mobile_row_grid_factory', MobileGrid)
|
||||
|
||||
@classmethod
|
||||
def get_mobile_grid_key(cls):
|
||||
"""
|
||||
|
@ -643,7 +652,7 @@ class MasterView(View):
|
|||
kwargs.setdefault('request', self.request)
|
||||
kwargs.setdefault('model_class', self.model_row_class)
|
||||
kwargs = self.make_mobile_row_grid_kwargs(**kwargs)
|
||||
factory = self.get_mobile_grid_factory()
|
||||
factory = self.get_mobile_row_grid_factory()
|
||||
grid = factory(**kwargs)
|
||||
self.configure_mobile_row_grid(grid)
|
||||
grid.load_settings()
|
||||
|
@ -703,7 +712,7 @@ class MasterView(View):
|
|||
kwargs['instance'] = parent
|
||||
kwargs = self.make_row_grid_kwargs(**kwargs)
|
||||
key = '{}.{}'.format(self.get_grid_key(), self.request.matchdict[self.get_model_key()])
|
||||
factory = self.get_grid_factory()
|
||||
factory = self.get_row_grid_factory()
|
||||
grid = factory(key, self.request, data=data, model_class=self.model_row_class, **kwargs)
|
||||
self._preconfigure_row_grid(grid)
|
||||
self.configure_row_grid(grid)
|
||||
|
@ -1253,6 +1262,15 @@ class MasterView(View):
|
|||
"""
|
||||
return getattr(cls, 'grid_factory', AlchemyGrid)
|
||||
|
||||
@classmethod
|
||||
def get_row_grid_factory(cls):
|
||||
"""
|
||||
Must return a callable to be used when creating new row grid instances.
|
||||
Instead of overriding this, you can set :attr:`row_grid_factory`.
|
||||
Default factory is :class:`AlchemyGrid`.
|
||||
"""
|
||||
return getattr(cls, 'row_grid_factory', AlchemyGrid)
|
||||
|
||||
@classmethod
|
||||
def get_grid_key(cls):
|
||||
"""
|
||||
|
@ -1787,12 +1805,14 @@ class MasterView(View):
|
|||
def configure_row_fieldset(self, fs):
|
||||
fs.configure()
|
||||
|
||||
def get_row_action_url(self, action, row):
|
||||
def get_row_action_url(self, action, row, mobile=False):
|
||||
"""
|
||||
Generate a URL for the given action on the given row.
|
||||
"""
|
||||
return self.request.route_url('{}.{}'.format(self.get_row_route_prefix(), action),
|
||||
**self.get_row_action_route_kwargs(row))
|
||||
route_name = '{}.{}'.format(self.get_row_route_prefix(), action)
|
||||
if mobile:
|
||||
route_name = 'mobile.{}'.format(route_name)
|
||||
return self.request.route_url(route_name, **self.get_row_action_route_kwargs(row))
|
||||
|
||||
def get_row_action_route_kwargs(self, row):
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue