Add some basic support for Catapult integration
can view their data directly in web app, and import to rattail tables
This commit is contained in:
parent
a18852f204
commit
0a4ae38f88
18
setup.py
18
setup.py
|
@ -62,12 +62,29 @@ requires = [
|
||||||
#
|
#
|
||||||
# package # low high
|
# package # low high
|
||||||
|
|
||||||
|
# TODO: must cap this for now, b/c it breaks Catapult integration?!
|
||||||
|
# (something about "Syntax error near 'ROWS'" with grid queries)
|
||||||
|
'SQLAlchemy<1.3', # 1.2.19
|
||||||
|
|
||||||
'psycopg2', # 2.8.5
|
'psycopg2', # 2.8.5
|
||||||
'rattail', # 0.9.130
|
'rattail', # 0.9.130
|
||||||
'Tailbone', # 0.8.97
|
'Tailbone', # 0.8.97
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
extras = {
|
||||||
|
|
||||||
|
'catapult': [
|
||||||
|
#
|
||||||
|
# package # low high
|
||||||
|
|
||||||
|
'onager', # 0.2.8
|
||||||
|
'rattail-onager', # 0.2.1
|
||||||
|
'tailbone-onager', # 0.2.3
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name = "tailbone-theo",
|
name = "tailbone-theo",
|
||||||
version = __version__,
|
version = __version__,
|
||||||
|
@ -91,6 +108,7 @@ setup(
|
||||||
],
|
],
|
||||||
|
|
||||||
install_requires = requires,
|
install_requires = requires,
|
||||||
|
extras_require = extras,
|
||||||
packages = find_packages(),
|
packages = find_packages(),
|
||||||
include_package_data = True,
|
include_package_data = True,
|
||||||
|
|
||||||
|
|
|
@ -40,3 +40,7 @@ class TheoConfig(ConfigExtension):
|
||||||
|
|
||||||
# Theo comes with its own menu for web app
|
# Theo comes with its own menu for web app
|
||||||
config.setdefault('tailbone', 'menus', 'theo.web.menus')
|
config.setdefault('tailbone', 'menus', 'theo.web.menus')
|
||||||
|
|
||||||
|
|
||||||
|
def integrate_catapult(config):
|
||||||
|
return config.getbool('theo', 'integrate_catapult', default=False)
|
||||||
|
|
|
@ -26,6 +26,8 @@ Theo web app
|
||||||
|
|
||||||
from tailbone import app
|
from tailbone import app
|
||||||
|
|
||||||
|
from theo.config import integrate_catapult
|
||||||
|
|
||||||
|
|
||||||
def main(global_config, **settings):
|
def main(global_config, **settings):
|
||||||
"""
|
"""
|
||||||
|
@ -42,6 +44,11 @@ def main(global_config, **settings):
|
||||||
rattail_config = app.make_rattail_config(settings)
|
rattail_config = app.make_rattail_config(settings)
|
||||||
pyramid_config = app.make_pyramid_config(settings)
|
pyramid_config = app.make_pyramid_config(settings)
|
||||||
|
|
||||||
|
# maybe add catapult integrations
|
||||||
|
if integrate_catapult(rattail_config):
|
||||||
|
from tailbone_onager.db import CatapultSession
|
||||||
|
CatapultSession.configure(bind=rattail_config.catapult_engine)
|
||||||
|
|
||||||
# bring in the rest of Theo
|
# bring in the rest of Theo
|
||||||
pyramid_config.include('theo.web.static')
|
pyramid_config.include('theo.web.static')
|
||||||
pyramid_config.include('theo.web.subscribers')
|
pyramid_config.include('theo.web.subscribers')
|
||||||
|
|
|
@ -24,152 +24,208 @@
|
||||||
Web Menus
|
Web Menus
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from theo.config import integrate_catapult
|
||||||
|
|
||||||
|
|
||||||
def simple_menus(request):
|
def simple_menus(request):
|
||||||
url = request.route_url
|
url = request.route_url
|
||||||
|
rattail_config = request.rattail_config
|
||||||
|
|
||||||
menus = [
|
include_catapult = integrate_catapult(rattail_config)
|
||||||
{
|
|
||||||
'title': "Orders",
|
orders_menu = {
|
||||||
'type': 'menu',
|
'title': "Orders",
|
||||||
'items': [
|
'type': 'menu',
|
||||||
# {
|
'items': [
|
||||||
# 'title': "New Order",
|
# {
|
||||||
# 'url': url('custorders.new'),
|
# 'title': "New Order",
|
||||||
# 'perm': 'custorders.create',
|
# 'url': url('custorders.new'),
|
||||||
# },
|
# 'perm': 'custorders.create',
|
||||||
|
# },
|
||||||
{
|
{
|
||||||
'title': "All Orders",
|
'title': "All Orders",
|
||||||
'url': url('custorders'),
|
'url': url('custorders'),
|
||||||
'perm': 'custorders.list',
|
'perm': 'custorders.list',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'title': "All Items",
|
'title': "All Items",
|
||||||
'url': url('custorders.items'),
|
'url': url('custorders.items'),
|
||||||
'perm': 'custorders.items.list',
|
'perm': 'custorders.items.list',
|
||||||
},
|
},
|
||||||
# {
|
# {
|
||||||
# 'title': "Configuration",
|
# 'title': "Configuration",
|
||||||
# 'url': url('custorders.config'),
|
# 'url': url('custorders.config'),
|
||||||
# 'perm': 'custorders.configure',
|
# 'perm': 'custorders.configure',
|
||||||
# },
|
# },
|
||||||
],
|
],
|
||||||
},
|
}
|
||||||
{
|
|
||||||
'title': "People",
|
people_menu = {
|
||||||
|
'title': "People",
|
||||||
|
'type': 'menu',
|
||||||
|
'items': [
|
||||||
|
{
|
||||||
|
'title': "Customers",
|
||||||
|
'url': url('customers'),
|
||||||
|
'perm': 'customers.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Employees",
|
||||||
|
'url': url('employees'),
|
||||||
|
'perm': 'employees.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "All People",
|
||||||
|
'url': url('people'),
|
||||||
|
'perm': 'people.list',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
products_menu = {
|
||||||
|
'title': "Products",
|
||||||
|
'type': 'menu',
|
||||||
|
'items': [
|
||||||
|
{
|
||||||
|
'title': "Products",
|
||||||
|
'url': url('products'),
|
||||||
|
'perm': 'products.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Departments",
|
||||||
|
'url': url('departments'),
|
||||||
|
'perm': 'departments.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Subdepartments",
|
||||||
|
'url': url('subdepartments'),
|
||||||
|
'perm': 'subdepartments.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Brands",
|
||||||
|
'url': url('brands'),
|
||||||
|
'perm': 'brands.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Vendors",
|
||||||
|
'url': url('vendors'),
|
||||||
|
'perm': 'vendors.list',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
if include_catapult:
|
||||||
|
catapult_menu = {
|
||||||
|
'title': "Catapult",
|
||||||
'type': 'menu',
|
'type': 'menu',
|
||||||
'items': [
|
'items': [
|
||||||
{
|
|
||||||
'title': "Customers",
|
|
||||||
'url': url('customers'),
|
|
||||||
'perm': 'customers.list',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': "Employees",
|
|
||||||
'url': url('employees'),
|
|
||||||
'perm': 'employees.list',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': "All People",
|
|
||||||
'url': url('people'),
|
|
||||||
'perm': 'people.list',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': "Products",
|
|
||||||
'type': 'menu',
|
|
||||||
'items': [
|
|
||||||
{
|
|
||||||
'title': "Products",
|
|
||||||
'url': url('products'),
|
|
||||||
'perm': 'products.list',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
'title': "Departments",
|
'title': "Departments",
|
||||||
'url': url('departments'),
|
'url': url('catapult.departments'),
|
||||||
'perm': 'departments.list',
|
'perm': 'catapult.departments.list',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'title': "Subdepartments",
|
'title': "Terminals",
|
||||||
'url': url('subdepartments'),
|
'url': url('catapult.terminals'),
|
||||||
'perm': 'subdepartments.list',
|
'perm': 'catapult.terminals.list',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'title': "Brands",
|
'title': "Transactions",
|
||||||
'url': url('brands'),
|
'url': url('catapult.transactions'),
|
||||||
'perm': 'brands.list',
|
'perm': 'catapult.transactions.list',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'title': "Vendors",
|
'title': "Worksheets",
|
||||||
'url': url('vendors'),
|
'url': url('catapult.worksheets'),
|
||||||
'perm': 'vendors.list',
|
'perm': 'catapult.worksheets.list',
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': "Admin",
|
|
||||||
'type': 'menu',
|
|
||||||
'items': [
|
|
||||||
{
|
|
||||||
'title': "Stores",
|
|
||||||
'url': url('stores'),
|
|
||||||
'perm': 'stores.list',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': "Users",
|
|
||||||
'url': url('users'),
|
|
||||||
'perm': 'users.list',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': "User Events",
|
|
||||||
'url': url('userevents'),
|
|
||||||
'perm': 'userevents.list',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': "Roles",
|
|
||||||
'url': url('roles'),
|
|
||||||
'perm': 'roles.list',
|
|
||||||
},
|
},
|
||||||
{'type': 'sep'},
|
{'type': 'sep'},
|
||||||
{
|
{
|
||||||
'title': "App Settings",
|
'title': "Security Profiles",
|
||||||
'url': url('appsettings'),
|
'url': url('catapult.security_profiles'),
|
||||||
'perm': 'settings.list',
|
'perm': 'catapult.security_profiles.view',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'title': "Email Settings",
|
'title': "Master Functions",
|
||||||
'url': url('emailprofiles'),
|
'url': url('catapult.master_functions'),
|
||||||
'perm': 'emailprofiles.list',
|
'perm': 'catapult.master_functions.view',
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': "Email Attempts",
|
|
||||||
'url': url('email_attempts'),
|
|
||||||
'perm': 'email_attempts.list',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': "Raw Settings",
|
|
||||||
'url': url('settings'),
|
|
||||||
'perm': 'settings.list',
|
|
||||||
},
|
|
||||||
{'type': 'sep'},
|
|
||||||
{
|
|
||||||
'title': "DataSync Changes",
|
|
||||||
'url': url('datasyncchanges'),
|
|
||||||
'perm': 'datasync.list',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': "Tables",
|
|
||||||
'url': url('tables'),
|
|
||||||
'perm': 'tables.list',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'title': "Theo Upgrades",
|
|
||||||
'url': url('upgrades'),
|
|
||||||
'perm': 'upgrades.list',
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
}
|
||||||
|
|
||||||
|
admin_menu = {
|
||||||
|
'title': "Admin",
|
||||||
|
'type': 'menu',
|
||||||
|
'items': [
|
||||||
|
{
|
||||||
|
'title': "Stores",
|
||||||
|
'url': url('stores'),
|
||||||
|
'perm': 'stores.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Users",
|
||||||
|
'url': url('users'),
|
||||||
|
'perm': 'users.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "User Events",
|
||||||
|
'url': url('userevents'),
|
||||||
|
'perm': 'userevents.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Roles",
|
||||||
|
'url': url('roles'),
|
||||||
|
'perm': 'roles.list',
|
||||||
|
},
|
||||||
|
{'type': 'sep'},
|
||||||
|
{
|
||||||
|
'title': "App Settings",
|
||||||
|
'url': url('appsettings'),
|
||||||
|
'perm': 'settings.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Email Settings",
|
||||||
|
'url': url('emailprofiles'),
|
||||||
|
'perm': 'emailprofiles.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Email Attempts",
|
||||||
|
'url': url('email_attempts'),
|
||||||
|
'perm': 'email_attempts.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Raw Settings",
|
||||||
|
'url': url('settings'),
|
||||||
|
'perm': 'settings.list',
|
||||||
|
},
|
||||||
|
{'type': 'sep'},
|
||||||
|
{
|
||||||
|
'title': "DataSync Changes",
|
||||||
|
'url': url('datasyncchanges'),
|
||||||
|
'perm': 'datasync.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Tables",
|
||||||
|
'url': url('tables'),
|
||||||
|
'perm': 'tables.list',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'title': "Theo Upgrades",
|
||||||
|
'url': url('upgrades'),
|
||||||
|
'perm': 'upgrades.list',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
menus = [
|
||||||
|
orders_menu,
|
||||||
|
people_menu,
|
||||||
|
products_menu,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if include_catapult:
|
||||||
|
menus.append(catapult_menu)
|
||||||
|
|
||||||
|
menus.append(admin_menu)
|
||||||
|
|
||||||
return menus
|
return menus
|
||||||
|
|
|
@ -24,8 +24,11 @@
|
||||||
Views
|
Views
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from theo.config import integrate_catapult
|
||||||
|
|
||||||
|
|
||||||
def includeme(config):
|
def includeme(config):
|
||||||
|
rattail_config = config.registry.settings.get('rattail_config')
|
||||||
|
|
||||||
# core views
|
# core views
|
||||||
config.include('theo.web.views.common')
|
config.include('theo.web.views.common')
|
||||||
|
@ -53,3 +56,7 @@ def includeme(config):
|
||||||
config.include('tailbone.views.subdepartments')
|
config.include('tailbone.views.subdepartments')
|
||||||
config.include('tailbone.views.users')
|
config.include('tailbone.views.users')
|
||||||
config.include('tailbone.views.vendors')
|
config.include('tailbone.views.vendors')
|
||||||
|
|
||||||
|
# catapult views
|
||||||
|
if integrate_catapult(rattail_config):
|
||||||
|
config.include('tailbone_onager.views')
|
||||||
|
|
Loading…
Reference in a new issue