created 'cybertools.organize' package, removed 'cybertools.contact', moved imports (in testing code only) of the latter package to the former one.

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@1203 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2006-05-10 16:10:51 +00:00
parent fa7db29662
commit 32beb7824f
10 changed files with 119 additions and 11 deletions

41
organize/README.txt Normal file
View file

@ -0,0 +1,41 @@
Organizations: Persons, Institutions, Addresses...
==================================================
Let's start with a Person:
>>> from cybertools.organize.party import Person
>>> john = Person(u'Smith')
>>> john.lastName
u'Smith'
>>> john.firstName
u''
>>> john.birthDate is None
True
>>> john.addresses
{}
A Person object knows the age of the person:
>>> john.age
>>> from datetime import date
>>> john.birthDate = date(1980, 3, 25)
>>> john.age
26
>>> john.firstName = u'John'
>>> john.firstName
u'John'
Addresses
---------
Let's create an address and assign it to a person:
>>> from contact.address import Address
>>> addr = Address('München'.decode('UTF-8'),
... 'Bayerstraße 1'.decode('UTF-8'))
>>> john.addresses['standard'] = addr
>>> john.addresses['standard'].street
u'Bayerstra\xdfe 1'

View file

@ -0,0 +1,4 @@
"""
$Id$
"""

View file

@ -23,21 +23,20 @@ as an example for some of the cybertools packages.
$Id$ $Id$
""" """
from zope.component import adapts
from zope.interface import implements from zope.interface import implements
from cybertools.contact.interfaces import IPerson
from datetime import date from datetime import date
from cybertools.organize.interfaces import IPerson
class Person(object): class Person(object):
implements(IPerson) implements(IPerson)
def __init__(self, firstName, lastName, birthDate): def __init__(self, lastName, firstName=u'', birthDate=None):
self.firstName = firstName
self.lastName = lastName self.lastName = lastName
self.firstName = firstName
self.birthDate = birthDate self.birthDate = birthDate
self.moreFirstNames = [] self.moreFirstNames = None
self.personalAddress = 'mrs' # or 'mr', 'ms', None (unknown) self.personalAddress = 'mrs' # or 'mr', 'ms', None (unknown)
self.academicTitle = None self.academicTitle = None
self.communicationInfos = [] self.communicationInfos = []
@ -46,12 +45,15 @@ class Person(object):
@property @property
def age(self): def age(self):
return (date.today() - self.birthDate).days/365.25 if self.birthDate is None:
return None
return int((date.today() - self.birthDate).days/365.25)
class Address(object): class Address(object):
def __init__(self, title, lines, street, zipcode, city, country): def __init__(self, title, city, lines=[], street=u'',
zipcode=None, country=None):
self.title = title self.title = title
self.lines = lines # a sequence of address lines self.lines = lines # a sequence of address lines
self.street = street self.street = street

31
organize/task.py Normal file
View file

@ -0,0 +1,31 @@
#
# Copyright (c) 2006 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
#
"""
A set of simple application classes for contact management to be used
as an example for some of the cybertools packages.
$Id$
"""
from zope.component import adapts
from zope.interface import implements
class Task(object):

30
organize/tests.py Executable file
View file

@ -0,0 +1,30 @@
#! /usr/bin/python
"""
Tests for the 'cybertools.organize' package.
$Id$
"""
import unittest, doctest
from zope.testing.doctestunit import DocFileSuite
from cybertools.organize.party import Person
class TestParty(unittest.TestCase):
"Basic tests for the party module."
def testBasicStuff(self):
p = Person('Meier', 'Hans')
self.assertEqual('Hans', p.firstName)
self.assertEqual('Meier', p.lastName)
def test_suite():
flags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS
return unittest.TestSuite((
unittest.makeSuite(TestParty),
DocFileSuite('README.txt', optionflags=flags),
))
if __name__ == '__main__':
unittest.main(defaultTest='test_suite')

View file

@ -18,7 +18,7 @@ A Basic API for Reports and Listings
Let's start with the Person class from the example package - we will Let's start with the Person class from the example package - we will
then provide a listing of persons... then provide a listing of persons...
>>> from cybertools.contact import Person >>> from cybertools.organize.party import Person
>>> from cybertools.reporter.example.interfaces import IContactsDataSource >>> from cybertools.reporter.example.interfaces import IContactsDataSource
>>> from cybertools.reporter.example.contact import Contacts >>> from cybertools.reporter.example.contact import Contacts

View file

@ -16,8 +16,8 @@ object data.
Let's start with the Person class from the cybertools.contact package - Let's start with the Person class from the cybertools.contact package -
we will then apply dynamic typing to Person objects: we will then apply dynamic typing to Person objects:
>>> from cybertools.contact.interfaces import IPerson >>> from cybertools.organize.interfaces import IPerson
>>> from cybertools.contact import Person >>> from cybertools.organize.party import Person
>>> from datetime import date >>> from datetime import date
>>> pdata = ((u'John', u'Smith', '1956-08-01'), >>> pdata = ((u'John', u'Smith', '1956-08-01'),

View file

@ -25,7 +25,7 @@ $Id$
from zope.component import adapts from zope.component import adapts
from zope.interface import implements from zope.interface import implements
from cybertools.contact.interfaces import IPerson from cybertools.organize.interfaces import IPerson
from cybertools.typology.interfaces import IType, ITypeManager from cybertools.typology.interfaces import IType, ITypeManager
from cybertools.typology.type import BaseType, TypeManager from cybertools.typology.type import BaseType, TypeManager