diff --git a/tailbone/views/batch/inventory.py b/tailbone/views/batch/inventory.py index 1932cf97..f1d0dd4b 100644 --- a/tailbone/views/batch/inventory.py +++ b/tailbone/views/batch/inventory.py @@ -37,7 +37,7 @@ from rattail.db import model, api from rattail.db.util import make_full_description from rattail.time import localtime from rattail.gpc import GPC -from rattail.util import pretty_quantity +from rattail.util import pretty_quantity, OrderedDict import colander from deform import widget as dfwidget @@ -176,18 +176,15 @@ class InventoryBatchView(BatchMasterView): def get_available_modes(self): permission_prefix = self.get_permission_prefix() - modes = dict(self.enum.INVENTORY_MODE) - if not self.request.has_perm('{}.create.replace'.format(permission_prefix)): - if hasattr(self.enum, 'INVENTORY_MODE_REPLACE'): - modes.pop(self.enum.INVENTORY_MODE_REPLACE, None) - if hasattr(self.enum, 'INVENTORY_MODE_REPLACE_ADJUST'): - modes.pop(self.enum.INVENTORY_MODE_REPLACE_ADJUST, None) - if not self.handler.allow_zero_all or not self.request.has_perm('{}.create.zero'.format(permission_prefix)): - if hasattr(self.enum, 'INVENTORY_MODE_ZERO_ALL'): - modes.pop(self.enum.INVENTORY_MODE_ZERO_ALL, None) - if not self.handler.allow_variance or not self.request.has_perm('{}.create.variance'.format(permission_prefix)): - if hasattr(self.enum, 'INVENTORY_MODE_VARIANCE'): - modes.pop(self.enum.INVENTORY_MODE_VARIANCE, None) + if self.request.is_root: + modes = self.handler.get_count_modes() + else: + modes = self.handler.get_allowed_count_modes( + self.Session(), self.request.user, + permission_prefix=permission_prefix) + + modes = OrderedDict([(mode['code'], mode['label']) + for mode in modes]) return modes def configure_form(self, f):