loops-ext/cyberapps/commerce/setup.py

58 lines
3.2 KiB
Python

# cyberapps.commerce.setup
""" Automatic setup of a loops site for the commerce package.
"""
from zope.component import adapts
from cyberapps.commerce.order import OrderItem
from cybertools.commerce.interfaces import IShop, IProduct, ICategory
from cybertools.commerce.interfaces import ICustomer, IOrder
from cybertools.tracking.btree import TrackingStorage
from loops.concept import Concept, ConceptManager
from loops.interfaces import ITypeConcept
from loops.setup import SetupManager as BaseSetupManager
class SetupManager(BaseSetupManager):
def setup(self):
concepts = self.context.getConceptManager()
type = concepts.getTypeConcept()
predicate = concepts.getPredicateType()
customers = self.addObject(self.context, ConceptManager, 'customers')
orders = self.addObject(self.context, ConceptManager, 'orders')
# type concepts:
tShop = self.addAndConfigureObject(concepts, Concept, 'shop',
title=u'Shop', conceptType=type, typeInterface=IShop)
tProduct = self.addAndConfigureObject(concepts, Concept, 'product',
title=u'Product', conceptType=type, typeInterface=IProduct)
tCategory = self.addAndConfigureObject(concepts, Concept, 'category',
title=u'Category', conceptType=type, typeInterface=ICategory)
tCustomer = self.addAndConfigureObject(concepts, Concept, 'customer',
title=u'Customer', conceptType=type, typeInterface=ICustomer)
tOrder = self.addAndConfigureObject(concepts, Concept, 'order',
title=u'Order', conceptType=type, typeInterface=IOrder)
# predicates:
category_product = self.addObject(concepts, Concept, 'category.product',
title=u'category <- product', conceptType=predicate)
category_accessory = self.addObject(concepts, Concept, 'category.accessory',
title=u'category <- accessory subcategory', conceptType=predicate)
#category_selected = self.addObject(concepts, Concept, 'category.selected',
# title=u'category <- selected product', conceptType=predicate)
product_accessory = self.addObject(concepts, Concept, 'product.accessory',
title=u'product <- accessory', conceptType=predicate)
shop_product = self.addObject(concepts, Concept, 'shop.product',
title=u'shop <- product', conceptType=predicate)
shop_customer = self.addObject(concepts, Concept, 'shop.customer',
title=u'shop <- customer', conceptType=predicate)
#shop_order = self.addObject(concepts, Concept, 'shop.order',
# title=u'shop <- order', conceptType=predicate)
manufacturer_product = self.addObject(concepts, Concept, 'manufacturer.product',
title=u'manufacturer <- product', conceptType=predicate)
customer_order = self.addObject(concepts, Concept, 'customer.order',
title=u'customer <- order', conceptType=predicate)
# records:
records = self.context.getRecordManager()
if 'orderitems' not in records:
records['orderitems'] = TrackingStorage(trackFactory=OrderItem)