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:
		
							parent
							
								
									0ccbc6a78a
								
							
						
					
					
						commit
						2308be0919
					
				
					 4 changed files with 106 additions and 11 deletions
				
			
		
							
								
								
									
										37
									
								
								browser/widget.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								browser/widget.py
									
										
									
									
									
										Normal 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', ' | ') | ||||||
|  | 
 | ||||||
|  | @ -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 ' | ||||||
|  | @ -49,11 +63,53 @@ class IPerson(Interface): | ||||||
| 
 | 
 | ||||||
|     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 ' |  | ||||||
|                            'attribute'), |  | ||||||
|                     readonly=True) |                     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,) | ||||||
|  | 
 | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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$ | ||||||
| """ | """ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm