work in progress: shops and products

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2798 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-08-10 09:14:19 +00:00
parent 7440503f6e
commit 1ff28acd31
7 changed files with 94 additions and 12 deletions

View file

@ -1,14 +1,41 @@
========================================== =================================================
Commerce: Products, Customers, Orders, ... Commerce: Shope, Products, Customers, Orders, ...
========================================== =================================================
($Id$) ($Id$)
Products Shops and Products
======== ==================
Let's start with a Product: Let's start with a Shop:
>>> from cybertools.commerce.base import Shop
>>> shop1 = Shop(u'shop1', u'PC up Ltd')
Now we add products to the shop.
>>> from cybertools.commerce.product import Product >>> from cybertools.commerce.product import Product
>>> p1 = Product() >>> p001 = Product(u'p001', u'Silent Case')
>>> shop1.addProduct(p001)
>>> sorted((name, p.title) for name, p in shop1.products.items())
[(u'p001', u'Silent Case')]
Let's have a look at the product - it should correctly reference the shop
it belongs to.
>>> len(p001.shops)
1
>>> p001.shops.keys()[0]
u'shop1'
Customers
=========
Orders
======

44
commerce/base.py Normal file
View file

@ -0,0 +1,44 @@
#
# Copyright (c) 2008 Helmut Merz helmutm@cy55.de
#
# This program 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 2 of the License, or
# (at your option) any later version.
#
# This program 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 this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
"""
Base classes.
$Id$
"""
from zope.interface import implements, Interface
from cybertools.commerce.interfaces import IShop
class Shop(object):
implements(IShop)
title = u'Shop'
def __init__(self, name, title=None):
self.name = name
if title is not None:
self.title = title
self.products = {}
def addProduct(self, product):
self.products[product.name] = product
product.shops[self.name] = self

View file

@ -61,6 +61,10 @@ class IShop(Interface):
u'this shop.') u'this shop.')
customers = Attribute(u'The customers registered for this shop.') customers = Attribute(u'The customers registered for this shop.')
def addProduct(product):
""" Add the product given to the shop's product listing.
"""
# suppliers # suppliers
@ -98,8 +102,7 @@ class IProduct(Interface):
productId = schema.ASCIILine( productId = schema.ASCIILine(
title=_(u'Product Identifier'), title=_(u'Product Identifier'),
description=_(u'A name or number uniquely identifiying the ' description=_(u'A name or number uniquely identifiying the product.'),
u'product within a shop.'),
default='', default='',
required=True) required=True)
title = schema.TextLine( title = schema.TextLine(

View file

@ -17,8 +17,8 @@ msgstr "Artikel"
msgid "Product Identifier" msgid "Product Identifier"
msgstr "Artikelnummer" msgstr "Artikelnummer"
msgid "A name or number uniquely identifiying the product within a shop." msgid "A name or number uniquely identifiying the product."
msgstr "Kurzbezeichnung oder Nummer, die den Artikel innerhalb eines Shops eindeutig identifiziert." msgstr "Kurzbezeichnung oder Nummer, die den Artikel eindeutig identifiziert."
msgid "Product Name" msgid "Product Name"
msgstr "Artikelbezeichnung" msgstr "Artikelbezeichnung"

View file

@ -31,3 +31,11 @@ class Product(object):
implements(IProduct) implements(IProduct)
title = u'Product'
def __init__(self, name, title=None):
self.name = name
if title is not None:
self.title = title
self.shops = {}

View file

@ -14,7 +14,7 @@ class Test(unittest.TestCase):
"Basic tests." "Basic tests."
def testBasicStuff(self): def testBasicStuff(self):
p = Product() p = Product('p001')
def test_suite(): def test_suite():