more on Person, Address, Task

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@1224 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2006-05-24 11:01:18 +00:00
parent 0ccbc6a78a
commit 2308be0919
4 changed files with 106 additions and 11 deletions

37
browser/widget.py Normal file
View file

@ -0,0 +1,37 @@
#
# 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
#
"""
Some possibly useful widgets. Provide via configure.zcml if you want to
use them.
$Id$
"""
from zope.app.form.browser.sequencewidget import SequenceDisplayWidget
class SimpleListDisplayWidget(SequenceDisplayWidget):
tag = ''
itemTag = ''
def __call__(self):
contents = super(SimpleListDisplayWidget, self).__call__()
return contents.replace('\n', ' | ')

View file

@ -17,7 +17,7 @@
# #
""" """
Interfaces for organizational stuff like persons and addresses. Interfaces for organizational stuff like persons, addresses, tasks, ...
$Id$ $Id$
""" """
@ -29,6 +29,11 @@ from zope.i18nmessageid import MessageFactory
_ = MessageFactory('zope') _ = MessageFactory('zope')
class SimpleList(schema.List): pass
class LinesList(schema.List): pass
class IPerson(Interface): class IPerson(Interface):
""" Resembles a human being with a name (first and last name), """ Resembles a human being with a name (first and last name),
a birth date, and a set of addresses. a birth date, and a set of addresses.
@ -41,6 +46,15 @@ class IPerson(Interface):
lastName = schema.TextLine( lastName = schema.TextLine(
title=_(u'Last name'), title=_(u'Last name'),
description=_(u'The last name or surname'),) description=_(u'The last name or surname'),)
email = schema.TextLine(
title=_(u'E-Mail address'),
description=_(u'The standard email address of the person'),)
phoneNumbers = SimpleList(
value_type=schema.TextLine(),
default=[],
title=_(u'Phone numbers'),
description=_(u'Note one or more phone numbers here'),
required=False,)
birthDate = schema.Date( birthDate = schema.Date(
title=_(u'Date of birth'), title=_(u'Date of birth'),
description=_(u'The date of birth - should be a ' description=_(u'The date of birth - should be a '
@ -48,12 +62,54 @@ class IPerson(Interface):
required=False,) required=False,)
age = schema.Int( age = schema.Int(
title=_(u'Age'), title=_(u'Age'),
description=_(u'The current age in full years, so this should ' description=_(u'The current age in full years'),
'be an integer calculated dynamically, i.e. a read-only ' readonly=True)
'attribute'),
readonly=True)
addresses = Attribute('A mapping whose values provide the IAddress ' addresses = Attribute('A mapping whose values provide the IAddress '
'interface') 'interface')
class IAddress(Interface):
""" A postal address of a person or institution.
"""
street = schema.TextLine(
title=_(u'Street, number'),
description=_(u'Street and number'),
required=False,)
zipcode = schema.TextLine(
title=_(u'ZIP code'),
description=_(u'ZIP code, postal code'),
required=False,)
city = schema.TextLine(
title=_(u'City'),
description=_(u'Name of the city'),
required=True,)
country = schema.TextLine(
title=_(u'Country code'),
description=_(u'International two-letter country code'),
required=False,)
lines = LinesList(
value_type=schema.TextLine(),
default=[],
title=_(u'Additional lines'),
description=_(u'Additional address lines'),
required=False,)
class ITask(Interface):
""" A task has a start date, an optional end date, and is usually
assigned to one or more persons.
"""
start = schema.Date(
title=_(u'Start date'),
description=_(u'The date when the task should start'),
required=False,)
end = schema.Date(
title=_(u'End date'),
description=_(u'The date until that the task should be '
'finished'),
required=False,)

View file

@ -17,15 +17,16 @@
# #
""" """
A set of simple application classes for contact management to be used A set of simple application classes for contact management; this may be used
as an example for some of the cybertools packages. as an example for some of the cybertools packages, but may also be the base
for some real life stuff.
$Id$ $Id$
""" """
from zope.interface import implements from zope.interface import implements
from datetime import date from datetime import date
from cybertools.organize.interfaces import IPerson from cybertools.organize.interfaces import IPerson, IAddress
class Person(object): class Person(object):
@ -55,6 +56,8 @@ class Person(object):
class Address(object): class Address(object):
implements(IAddress)
def __init__(self, city, street=u'', lines=[], def __init__(self, city, street=u'', lines=[],
zipcode=None, country=None): zipcode=None, country=None):
self.lines = lines # a sequence of additional address lines self.lines = lines # a sequence of additional address lines

View file

@ -17,8 +17,7 @@
# #
""" """
A set of simple application classes for contact management to be used Task management classes.
as an example for some of the cybertools packages.
$Id$ $Id$
""" """