Add basic support for Person quickie lookup

shows profile view if person is found
This commit is contained in:
Lance Edgar 2023-06-17 15:11:13 -05:00
parent d77de76c97
commit 12eeb5df97
7 changed files with 109 additions and 5 deletions

View file

@ -478,9 +478,6 @@ class MasterView(View):
the given object, or ``None``.
"""
def quickie(self):
raise NotImplementedError
def get_quickie_url(self):
route_prefix = self.get_route_prefix()
return self.request.route_url('{}.quickie'.format(route_prefix))
@ -492,6 +489,30 @@ class MasterView(View):
def get_quickie_placeholder(self):
pass
def quickie(self):
"""
Quickie search - tries to do a simple lookup based on a key
value. If a record is found, user is redirected to its view.
"""
entry = self.request.params.get('entry', '').strip()
if not entry:
self.request.session.flash("No search criteria specified", 'error')
return self.redirect(self.request.get_referrer())
obj = self.do_quickie_lookup(entry)
if not obj:
model_title = self.get_model_title()
self.request.session.flash(f"{model_title} not found: {entry}", 'error')
return self.redirect(self.request.get_referrer())
return self.redirect(self.get_quickie_result_url(obj))
def do_quickie_lookup(self, entry):
pass
def get_quickie_result_url(self, obj):
return self.get_action_url('view', obj)
def make_row_grid(self, factory=None, key=None, data=None, columns=None, **kwargs):
"""
Make and return a new (configured) rows grid instance.
@ -2422,7 +2443,7 @@ class MasterView(View):
context['product_key_field'] = self.get_product_key_field()
context['product_key_label'] = self.get_product_key_label()
if self.expose_quickie_search:
if self.should_expose_quickie_search():
context['quickie'] = self.get_quickie_context()
if self.grid_index: