wuttapos/wuttapos/controls/deptlookup.py
2023-10-11 18:40:11 -05:00

68 lines
2 KiB
Python

# -*- coding: utf-8; -*-
################################################################################
#
# WuttaPOS -- Pythonic Point of Sale System
# Copyright © 2023 Lance Edgar
#
# This file is part of WuttaPOS.
#
# WuttaPOS is free software: you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation, either version 3 of the License, or (at your option) any later
# version.
#
# WuttaPOS is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# WuttaPOS. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
WuttaPOS - department lookup control
"""
from .lookup import WuttaLookup
class WuttaDepartmentLookup(WuttaLookup):
def __init__(self, *args, **kwargs):
# nb. this forces first query
kwargs.setdefault('initial_search', '')
kwargs.setdefault('allow_empty_query', True)
super().__init__(*args, **kwargs)
def get_results_columns(self):
return [
"Number",
"Name",
]
def get_results(self, session, entry):
model = self.app.model
query = session.query(model.Department)\
.order_by(model.Department.number)
if entry:
query = query.filter(model.Department.name.ilike(f'%{entry}%'))
departments = []
for dept in query:
departments.append({
'uuid': dept.uuid,
'number': str(dept.number),
'name': dept.name,
})
return departments
def make_result_row(self, dept):
return [
dept['number'],
dept['name'],
]