Changeset 0a4ae38 in theo


Ignore:
Timestamp:
06/29/20 17:20:32 (6 weeks ago)
Author:
Lance Edgar <lance@…>
Branches:
master
Children:
dd4226f
Parents:
a18852f
Message:

Add some basic support for Catapult integration

can view their data directly in web app, and import to rattail tables

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • setup.py

    ra18852f r0a4ae38  
    6363    # package                           # low                   high
    6464
     65    # TODO: must cap this for now, b/c it breaks Catapult integration?!
     66    # (something about "Syntax error near 'ROWS'" with grid queries)
     67    'SQLAlchemy<1.3',                   #                       1.2.19
     68
    6569    'psycopg2',                         # 2.8.5
    6670    'rattail',                          # 0.9.130
    6771    'Tailbone',                         # 0.8.97
    6872]
     73
     74
     75extras = {
     76
     77    'catapult': [
     78        #
     79        # package                       # low                   high
     80
     81        'onager',                       # 0.2.8
     82        'rattail-onager',               # 0.2.1
     83        'tailbone-onager',              # 0.2.3
     84    ],
     85}
    6986
    7087
     
    92109
    93110    install_requires = requires,
     111    extras_require = extras,
    94112    packages = find_packages(),
    95113    include_package_data = True,
  • theo/config.py

    ra18852f r0a4ae38  
    4141        # Theo comes with its own menu for web app
    4242        config.setdefault('tailbone', 'menus', 'theo.web.menus')
     43
     44
     45def integrate_catapult(config):
     46    return config.getbool('theo', 'integrate_catapult', default=False)
  • theo/web/app.py

    ra18852f r0a4ae38  
    2727from tailbone import app
    2828
     29from theo.config import integrate_catapult
     30
    2931
    3032def main(global_config, **settings):
     
    4345    pyramid_config = app.make_pyramid_config(settings)
    4446
     47    # maybe add catapult integrations
     48    if integrate_catapult(rattail_config):
     49        from tailbone_onager.db import CatapultSession
     50        CatapultSession.configure(bind=rattail_config.catapult_engine)
     51
    4552    # bring in the rest of Theo
    4653    pyramid_config.include('theo.web.static')
  • theo/web/menus.py

    ra18852f r0a4ae38  
    2525"""
    2626
     27from theo.config import integrate_catapult
     28
    2729
    2830def simple_menus(request):
    2931    url = request.route_url
    30 
    31     menus = [
    32         {
    33             'title': "Orders",
    34             'type': 'menu',
    35             'items': [
    36                 # {
    37                 #     'title': "New Order",
    38                 #     'url': url('custorders.new'),
    39                 #     'perm': 'custorders.create',
    40                 # },
     32    rattail_config = request.rattail_config
     33
     34    include_catapult = integrate_catapult(rattail_config)
     35
     36    orders_menu = {
     37        'title': "Orders",
     38        'type': 'menu',
     39        'items': [
     40            # {
     41            #     'title': "New Order",
     42            #     'url': url('custorders.new'),
     43            #     'perm': 'custorders.create',
     44            # },
    4145                {
    4246                    'title': "All Orders",
     
    4448                    'perm': 'custorders.list',
    4549                },
    46                 {
    47                     'title': "All Items",
    48                     'url': url('custorders.items'),
    49                     'perm': 'custorders.items.list',
    50                 },
    51                 # {
    52                 #     'title': "Configuration",
    53                 #     'url': url('custorders.config'),
    54                 #     'perm': 'custorders.configure',
    55                 # },
     50            {
     51                'title': "All Items",
     52                'url': url('custorders.items'),
     53                'perm': 'custorders.items.list',
     54            },
     55            # {
     56            #     'title': "Configuration",
     57            #     'url': url('custorders.config'),
     58            #     'perm': 'custorders.configure',
     59            # },
    5660            ],
    57         },
    58         {
    59             'title': "People",
     61    }
     62
     63    people_menu = {
     64        'title': "People",
     65        'type': 'menu',
     66        'items': [
     67            {
     68                'title': "Customers",
     69                'url': url('customers'),
     70                'perm': 'customers.list',
     71            },
     72            {
     73                'title': "Employees",
     74                'url': url('employees'),
     75                'perm': 'employees.list',
     76            },
     77            {
     78                'title': "All People",
     79                'url': url('people'),
     80                'perm': 'people.list',
     81            },
     82        ],
     83    }
     84
     85    products_menu = {
     86        'title': "Products",
     87        'type': 'menu',
     88        'items': [
     89            {
     90                'title': "Products",
     91                'url': url('products'),
     92                'perm': 'products.list',
     93            },
     94            {
     95                'title': "Departments",
     96                'url': url('departments'),
     97                'perm': 'departments.list',
     98            },
     99            {
     100                'title': "Subdepartments",
     101                'url': url('subdepartments'),
     102                'perm': 'subdepartments.list',
     103            },
     104            {
     105                'title': "Brands",
     106                'url': url('brands'),
     107                'perm': 'brands.list',
     108            },
     109            {
     110                'title': "Vendors",
     111                'url': url('vendors'),
     112                'perm': 'vendors.list',
     113            },
     114        ],
     115    }
     116
     117    if include_catapult:
     118        catapult_menu = {
     119            'title': "Catapult",
    60120            'type': 'menu',
    61121            'items': [
    62122                {
    63                     'title': "Customers",
    64                     'url': url('customers'),
    65                     'perm': 'customers.list',
    66                 },
    67                 {
    68                     'title': "Employees",
    69                     'url': url('employees'),
    70                     'perm': 'employees.list',
    71                 },
    72                 {
    73                     'title': "All People",
    74                     'url': url('people'),
    75                     'perm': 'people.list',
     123                    'title': "Departments",
     124                    'url': url('catapult.departments'),
     125                    'perm': 'catapult.departments.list',
     126                },
     127                {
     128                    'title': "Terminals",
     129                    'url': url('catapult.terminals'),
     130                    'perm': 'catapult.terminals.list',
     131                },
     132                {
     133                    'title': "Transactions",
     134                    'url': url('catapult.transactions'),
     135                    'perm': 'catapult.transactions.list',
     136                },
     137                {
     138                    'title': "Worksheets",
     139                    'url': url('catapult.worksheets'),
     140                    'perm': 'catapult.worksheets.list',
     141                },
     142                {'type': 'sep'},
     143                {
     144                    'title': "Security Profiles",
     145                    'url': url('catapult.security_profiles'),
     146                    'perm': 'catapult.security_profiles.view',
     147                },
     148                {
     149                    'title': "Master Functions",
     150                    'url': url('catapult.master_functions'),
     151                    'perm': 'catapult.master_functions.view',
    76152                },
    77153            ],
    78         },
    79         {
    80             'title': "Products",
    81             'type': 'menu',
    82             'items': [
    83                 {
    84                     'title': "Products",
    85                     'url': url('products'),
    86                     'perm': 'products.list',
    87                 },
    88                 {
    89                     'title': "Departments",
    90                     'url': url('departments'),
    91                     'perm': 'departments.list',
    92                 },
    93                 {
    94                     'title': "Subdepartments",
    95                     'url': url('subdepartments'),
    96                     'perm': 'subdepartments.list',
    97                 },
    98                 {
    99                     'title': "Brands",
    100                     'url': url('brands'),
    101                     'perm': 'brands.list',
    102                 },
    103                 {
    104                     'title': "Vendors",
    105                     'url': url('vendors'),
    106                     'perm': 'vendors.list',
    107                 },
    108             ],
    109         },
    110         {
    111             'title': "Admin",
    112             'type': 'menu',
    113             'items': [
    114                 {
    115                     'title': "Stores",
    116                     'url': url('stores'),
    117                     'perm': 'stores.list',
    118                 },
    119                 {
    120                     'title': "Users",
    121                     'url': url('users'),
    122                     'perm': 'users.list',
    123                 },
    124                 {
    125                     'title': "User Events",
    126                     'url': url('userevents'),
    127                     'perm': 'userevents.list',
    128                 },
    129                 {
    130                     'title': "Roles",
    131                     'url': url('roles'),
    132                     'perm': 'roles.list',
    133                 },
    134                 {'type': 'sep'},
    135                 {
    136                     'title': "App Settings",
    137                     'url': url('appsettings'),
    138                     'perm': 'settings.list',
    139                 },
    140                 {
    141                     'title': "Email Settings",
    142                     'url': url('emailprofiles'),
    143                     'perm': 'emailprofiles.list',
    144                 },
    145                 {
    146                     'title': "Email Attempts",
    147                     'url': url('email_attempts'),
    148                     'perm': 'email_attempts.list',
    149                 },
    150                 {
    151                     'title': "Raw Settings",
    152                     'url': url('settings'),
    153                     'perm': 'settings.list',
    154                 },
    155                 {'type': 'sep'},
    156                 {
    157                     'title': "DataSync Changes",
    158                     'url': url('datasyncchanges'),
    159                     'perm': 'datasync.list',
    160                 },
    161                 {
    162                     'title': "Tables",
    163                     'url': url('tables'),
    164                     'perm': 'tables.list',
    165                 },
    166                 {
    167                     'title': "Theo Upgrades",
    168                     'url': url('upgrades'),
    169                     'perm': 'upgrades.list',
    170                 },
    171             ],
    172         },
     154        }
     155
     156    admin_menu = {
     157        'title': "Admin",
     158        'type': 'menu',
     159        'items': [
     160            {
     161                'title': "Stores",
     162                'url': url('stores'),
     163                'perm': 'stores.list',
     164            },
     165            {
     166                'title': "Users",
     167                'url': url('users'),
     168                'perm': 'users.list',
     169            },
     170            {
     171                'title': "User Events",
     172                'url': url('userevents'),
     173                'perm': 'userevents.list',
     174            },
     175            {
     176                'title': "Roles",
     177                'url': url('roles'),
     178                'perm': 'roles.list',
     179            },
     180            {'type': 'sep'},
     181            {
     182                'title': "App Settings",
     183                'url': url('appsettings'),
     184                'perm': 'settings.list',
     185            },
     186            {
     187                'title': "Email Settings",
     188                'url': url('emailprofiles'),
     189                'perm': 'emailprofiles.list',
     190            },
     191            {
     192                'title': "Email Attempts",
     193                'url': url('email_attempts'),
     194                'perm': 'email_attempts.list',
     195            },
     196            {
     197                'title': "Raw Settings",
     198                'url': url('settings'),
     199                'perm': 'settings.list',
     200            },
     201            {'type': 'sep'},
     202            {
     203                'title': "DataSync Changes",
     204                'url': url('datasyncchanges'),
     205                'perm': 'datasync.list',
     206            },
     207            {
     208                'title': "Tables",
     209                'url': url('tables'),
     210                'perm': 'tables.list',
     211            },
     212            {
     213                'title': "Theo Upgrades",
     214                'url': url('upgrades'),
     215                'perm': 'upgrades.list',
     216            },
     217        ],
     218    }
     219
     220    menus = [
     221        orders_menu,
     222        people_menu,
     223        products_menu,
    173224    ]
    174225
     226    if include_catapult:
     227        menus.append(catapult_menu)
     228
     229    menus.append(admin_menu)
     230
    175231    return menus
  • theo/web/views/__init__.py

    ra18852f r0a4ae38  
    2525"""
    2626
     27from theo.config import integrate_catapult
     28
    2729
    2830def includeme(config):
     31    rattail_config = config.registry.settings.get('rattail_config')
    2932
    3033    # core views
     
    5457    config.include('tailbone.views.users')
    5558    config.include('tailbone.views.vendors')
     59
     60    # catapult views
     61    if integrate_catapult(rattail_config):
     62        config.include('tailbone_onager.views')
Note: See TracChangeset for help on using the changeset viewer.