Allow editing the Department field for a Subdepartment

This commit is contained in:
Lance Edgar 2023-02-03 16:00:14 -06:00
parent 320aaab4b3
commit eddbfcab36

View file

@ -2,7 +2,7 @@
################################################################################ ################################################################################
# #
# Rattail -- Retail Software Framework # Rattail -- Retail Software Framework
# Copyright © 2010-2022 Lance Edgar # Copyright © 2010-2023 Lance Edgar
# #
# This file is part of Rattail. # This file is part of Rattail.
# #
@ -24,10 +24,12 @@
Subdepartment Views Subdepartment Views
""" """
from __future__ import unicode_literals, absolute_import import sqlalchemy as sa
from rattail.db import model from rattail.db import model
from deform import widget as dfwidget
from tailbone.db import Session from tailbone.db import Session
from tailbone.views import MasterView from tailbone.views import MasterView
@ -104,9 +106,34 @@ class SubdepartmentView(MasterView):
super(SubdepartmentView, self).configure_form(f) super(SubdepartmentView, self).configure_form(f)
f.remove_field('products') f.remove_field('products')
# TODO: figure out this dang department situation.. # department
f.remove_field('department_uuid') if self.creating or self.editing:
if 'department' in f.fields:
f.replace('department', 'department_uuid')
departments = self.get_departments()
dept_values = [(d.uuid, "{} {}".format(d.number, d.name))
for d in departments]
require_department = False
if not require_department:
dept_values.insert(0, ('', "(none)"))
f.set_widget('department_uuid',
dfwidget.SelectWidget(values=dept_values))
f.set_label('department_uuid', "Department")
else:
f.set_readonly('department') f.set_readonly('department')
f.set_renderer('department', self.render_department)
def get_departments(self):
"""
Returns the list of departments to be exposed in a drop-down.
"""
model = self.model
return self.Session.query(model.Department)\
.filter(sa.or_(
model.Department.product == True,
model.Department.product == None))\
.order_by(model.Department.name)\
.all()
def get_merge_data(self, subdept): def get_merge_data(self, subdept):
return { return {