Add custom Stores master view, plus master for CORE Stores

This commit is contained in:
Lance Edgar 2021-01-27 22:23:07 -06:00
parent 5269aaa610
commit 21465c1600
4 changed files with 163 additions and 6 deletions

View file

@ -2,7 +2,7 @@
################################################################################ ################################################################################
# #
# Rattail -- Retail Software Framework # Rattail -- Retail Software Framework
# Copyright © 2010-2020 Lance Edgar # Copyright © 2010-2021 Lance Edgar
# #
# This file is part of Rattail. # This file is part of Rattail.
# #
@ -123,6 +123,11 @@ def make_corepos_menu(request):
'url': url('corepos.parameters'), 'url': url('corepos.parameters'),
'perm': 'corepos.parameters.list', 'perm': 'corepos.parameters.list',
}, },
{
'title': "Stores",
'url': url('corepos.stores'),
'perm': 'corepos.stores.list',
},
{'type': 'sep'}, {'type': 'sep'},
{ {
'title': "Transaction Details", 'title': "Transaction Details",
@ -134,13 +139,13 @@ def make_corepos_menu(request):
office_url = core_office_url(request.rattail_config) office_url = core_office_url(request.rattail_config)
if office_url: if office_url:
corepos_menu['items'].extend([ corepos_menu['items'].insert(
{'type': 'sep'}, 0, {
{
'title': "Go to CORE Office", 'title': "Go to CORE Office",
'url': '{}/'.format(office_url), 'url': '{}/'.format(office_url),
'target': '_blank', 'target': '_blank',
}, })
]) corepos_menu['items'].insert(
1, {'type': 'sep'})
return corepos_menu return corepos_menu

View file

@ -29,6 +29,7 @@ from .master import CoreOfficeMasterView
def includeme(config): def includeme(config):
config.include('tailbone_corepos.views.corepos.parameters') config.include('tailbone_corepos.views.corepos.parameters')
config.include('tailbone_corepos.views.corepos.stores')
config.include('tailbone_corepos.views.corepos.departments') config.include('tailbone_corepos.views.corepos.departments')
config.include('tailbone_corepos.views.corepos.subdepartments') config.include('tailbone_corepos.views.corepos.subdepartments')
config.include('tailbone_corepos.views.corepos.superdepartments') config.include('tailbone_corepos.views.corepos.superdepartments')

View file

@ -0,0 +1,88 @@
# -*- coding: utf-8; -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2021 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail 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.
#
# Rattail 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
# Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
CORE-POS store views
"""
from corepos.db.office_op import model as corepos
from .master import CoreOfficeMasterView
class StoreView(CoreOfficeMasterView):
"""
Base class for store views.
"""
model_class = corepos.Store
model_title = "CORE-POS Store"
url_prefix = '/core-pos/stores'
route_prefix = 'corepos.stores'
labels = {
'db_host': "DB Host",
'db_driver': "DB Driver",
'db_user': "DB User",
'db_password': "DB Password",
'trans_db': "Transactions DB",
'op_db': "Operational DB",
'web_service_url': "Web Service URL",
}
grid_columns = [
'id',
'description',
'push',
'pull',
'has_own_items',
]
form_fields = [
'id',
'description',
'db_host',
'db_driver',
# TODO: should maybe expose these for admin only?
# 'db_user',
# 'db_password',
'trans_db',
'op_db',
'push',
'pull',
'has_own_items',
'web_service_url',
]
def configure_grid(self, g):
super(StoreView, self).configure_grid(g)
# must add this b/c id is technically just a synonym
g.set_sorter('id', corepos.Store.storeID)
g.set_sort_defaults('id')
g.set_link('id')
g.set_link('description')
def includeme(config):
StoreView.defaults(config)

View file

@ -0,0 +1,63 @@
# -*- coding: utf-8; -*-
################################################################################
#
# Rattail -- Retail Software Framework
# Copyright © 2010-2021 Lance Edgar
#
# This file is part of Rattail.
#
# Rattail 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.
#
# Rattail 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
# Rattail. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
"""
Store Views
"""
from tailbone.views import stores as base
class StoreView(base.StoresView):
"""
Master view for the Store class.
"""
labels = {
'corepos_id': "CORE-POS ID",
}
@property
def form_fields(self):
fields = super(StoreView, self).form_fields
return fields + [
'corepos_id',
]
def query(self, session):
query = super(StoreView, self).query(session)
model = self.model
return query.outerjoin(model.CoreStore)
def configure_grid(self, g):
super(StoreView, self).configure_grid(g)
model = self.model
g.set_filter('corepos_id', model.CoreStore.corepos_id)
def get_version_child_classes(self):
model = self.model
return super(StoreView, self).get_version_child_classes() + [
model.CoreStore,
]
def includeme(config):
StoreView.defaults(config)