diff --git a/tailbone/grids/core.py b/tailbone/grids/core.py
index f5541525..00667e22 100644
--- a/tailbone/grids/core.py
+++ b/tailbone/grids/core.py
@@ -36,7 +36,7 @@ from webhelpers.html.builder import format_attrs
from pyramid.renderers import render
-from edbob.core import Object
+from rattail.core import Object
__all__ = ['Grid']
diff --git a/tailbone/grids/search.py b/tailbone/grids/search.py
index 797c58bb..00e166a4 100644
--- a/tailbone/grids/search.py
+++ b/tailbone/grids/search.py
@@ -35,7 +35,7 @@ from pyramid.renderers import render
from pyramid_simpleform import Form
from pyramid_simpleform.renderers import FormRenderer
-from edbob.core import Object
+from rattail.core import Object
from edbob.util import prettify
diff --git a/tailbone/reports/ordering_worksheet.mako b/tailbone/reports/ordering_worksheet.mako
index 567e5418..477d723f 100644
--- a/tailbone/reports/ordering_worksheet.mako
+++ b/tailbone/reports/ordering_worksheet.mako
@@ -110,7 +110,7 @@
${cost.product.brand or ''} |
${cost.product.description} |
${cost.product.size or ''} |
- ${cost.case_size} ${rattail.UNIT_OF_MEASURE.get(cost.product.unit_of_measure, '')} |
+ ${cost.case_size} ${rattail.enum.UNIT_OF_MEASURE.get(cost.product.unit_of_measure, '')} |
${cost.code or ''} |
${'X' if cost.preference == 1 else ''} |
% for i in range(14):
diff --git a/tailbone/views/batches/core.py b/tailbone/views/batches/core.py
index ca4fe27d..8751beca 100644
--- a/tailbone/views/batches/core.py
+++ b/tailbone/views/batches/core.py
@@ -37,7 +37,7 @@ from ...grids.search import BooleanSearchFilter
from edbob.pyramid.progress import SessionProgress
from .. import SearchableAlchemyGridView, CrudView, View
-import rattail
+from rattail import enum
from rattail import batches
from ...db import Session
from rattail.db.model import Batch
@@ -119,7 +119,7 @@ class BatchCrud(CrudView):
def fieldset(self, model):
fs = self.make_fieldset(model)
- fs.action_type.set(renderer=EnumFieldRenderer(rattail.BATCH_ACTION))
+ fs.action_type.set(renderer=EnumFieldRenderer(enum.BATCH_ACTION))
fs.executed.set(renderer=PrettyDateTimeFieldRenderer(from_='utc'))
fs.configure(
include=[
diff --git a/tailbone/views/customers.py b/tailbone/views/customers.py
index 533ec6e5..4f4f68af 100644
--- a/tailbone/views/customers.py
+++ b/tailbone/views/customers.py
@@ -30,41 +30,37 @@ from sqlalchemy import and_
from edbob.enum import EMAIL_PREFERENCE
-from . import SearchableAlchemyGridView
+from . import SearchableAlchemyGridView, CrudView
from ..forms import EnumFieldRenderer
-import rattail
from ..db import Session
-from rattail.db.model import (
- Customer, CustomerPerson, CustomerGroupAssignment,
- CustomerEmailAddress, CustomerPhoneNumber)
-from . import CrudView
+from rattail.db import model
class CustomersGrid(SearchableAlchemyGridView):
- mapped_class = Customer
+ mapped_class = model.Customer
config_prefix = 'customers'
sort = 'name'
def join_map(self):
return {
'email':
- lambda q: q.outerjoin(CustomerEmailAddress, and_(
- CustomerEmailAddress.parent_uuid == Customer.uuid,
- CustomerEmailAddress.preference == 1)),
+ lambda q: q.outerjoin(model.CustomerEmailAddress, and_(
+ model.CustomerEmailAddress.parent_uuid == model.Customer.uuid,
+ model.CustomerEmailAddress.preference == 1)),
'phone':
- lambda q: q.outerjoin(CustomerPhoneNumber, and_(
- CustomerPhoneNumber.parent_uuid == Customer.uuid,
- CustomerPhoneNumber.preference == 1)),
+ lambda q: q.outerjoin(model.CustomerPhoneNumber, and_(
+ model.CustomerPhoneNumber.parent_uuid == model.Customer.uuid,
+ model.CustomerPhoneNumber.preference == 1)),
}
def filter_map(self):
return self.make_filter_map(
exact=['id'],
ilike=['name'],
- email=self.filter_ilike(CustomerEmailAddress.address),
- phone=self.filter_ilike(CustomerPhoneNumber.number))
+ email=self.filter_ilike(model.CustomerEmailAddress.address),
+ phone=self.filter_ilike(model.CustomerPhoneNumber.number))
def filter_config(self):
return self.make_filter_config(
@@ -77,8 +73,8 @@ class CustomersGrid(SearchableAlchemyGridView):
def sort_map(self):
return self.make_sort_map(
'id', 'name',
- email=self.sorter(CustomerEmailAddress.address),
- phone=self.sorter(CustomerPhoneNumber.number))
+ email=self.sorter(model.CustomerEmailAddress.address),
+ phone=self.sorter(model.CustomerPhoneNumber.number))
def grid(self):
g = self.make_grid()
@@ -106,20 +102,20 @@ class CustomersGrid(SearchableAlchemyGridView):
class CustomerCrud(CrudView):
- mapped_class = Customer
+ mapped_class = model.Customer
home_route = 'customers'
def get_model(self, key):
model = super(CustomerCrud, self).get_model(key)
if model:
return model
- model = Session.query(Customer).filter_by(id=key).first()
+ model = Session.query(model.Customer).filter_by(id=key).first()
if model:
return model
- model = Session.query(CustomerPerson).get(key)
+ model = Session.query(model.CustomerPerson).get(key)
if model:
return model.customer
- model = Session.query(CustomerGroupAssignment).get(key)
+ model = Session.query(model.CustomerGroupAssignment).get(key)
if model:
return model.customer
return None
diff --git a/tailbone/views/reports.py b/tailbone/views/reports.py
index a4077be6..ccad2e39 100644
--- a/tailbone/views/reports.py
+++ b/tailbone/views/reports.py
@@ -26,16 +26,19 @@
Report Views
"""
+import re
+
from .core import View
from mako.template import Template
from pyramid.response import Response
from ..db import Session
-from rattail.db.model import Vendor, Department, Product, ProductCost
-import re
-import rattail
from edbob.time import local_time
+
+import rattail
+from rattail import enum
+from rattail.db import model
from rattail.files import resource_path
@@ -64,13 +67,13 @@ class OrderingWorksheet(View):
def __call__(self):
if self.request.params.get('vendor'):
- vendor = Session.query(Vendor).get(self.request.params['vendor'])
+ vendor = Session.query(model.Vendor).get(self.request.params['vendor'])
if vendor:
departments = []
uuids = self.request.params.get('departments')
if uuids:
for uuid in uuids.split(','):
- dept = Session.query(Department).get(uuid)
+ dept = Session.query(model.Department).get(uuid)
if dept:
departments.append(dept)
preferred_only = self.request.params.get('preferred_only') == '1'
@@ -87,12 +90,12 @@ class OrderingWorksheet(View):
Rendering engine for the ordering worksheet report.
"""
- q = Session.query(ProductCost)
- q = q.join(Product)
- q = q.filter(ProductCost.vendor == vendor)
- q = q.filter(Product.department_uuid.in_([x.uuid for x in departments]))
+ q = Session.query(model.ProductCost)
+ q = q.join(model.Product)
+ q = q.filter(model.ProductCost.vendor == vendor)
+ q = q.filter(model.Product.department_uuid.in_([x.uuid for x in departments]))
if preferred_only:
- q = q.filter(ProductCost.preference == 1)
+ q = q.filter(model.ProductCost.preference == 1)
costs = {}
for cost in q:
@@ -138,7 +141,7 @@ class InventoryWorksheet(View):
This is the "Inventory Worksheet" report.
"""
- departments = Session.query(Department)
+ departments = Session.query(model.Department)
if self.request.params.get('department'):
department = departments.get(self.request.params['department'])
@@ -150,7 +153,7 @@ class InventoryWorksheet(View):
response.text = body
return response
- departments = departments.order_by(rattail.Department.name)
+ departments = departments.order_by(model.Department.name)
departments = departments.all()
return{'departments': departments}
@@ -160,12 +163,12 @@ class InventoryWorksheet(View):
"""
def get_products(subdepartment):
- q = Session.query(rattail.Product)
- q = q.outerjoin(rattail.Brand)
- q = q.filter(rattail.Product.subdepartment == subdepartment)
+ q = Session.query(model.Product)
+ q = q.outerjoin(model.Brand)
+ q = q.filter(model.Product.subdepartment == subdepartment)
if self.request.params.get('weighted-only'):
- q = q.filter(rattail.Product.unit_of_measure == rattail.UNIT_OF_MEASURE_POUND)
- q = q.order_by(rattail.Brand.name, rattail.Product.description)
+ q = q.filter(model.Product.unit_of_measure == enum.UNIT_OF_MEASURE_POUND)
+ q = q.order_by(model.Brand.name, model.Product.description)
return q.all()
now = local_time()