Commit 0f42911a authored by Alexandre Boeglin's avatar Alexandre Boeglin

1/ Replaced static accessors defined in Entity.py with dynamic accessors created

from PropertySheet 'acquired_property_id' property.

2/ Changed the behaviour of Coordinate so that getText and _setText use
methods defined in subclasses if they exist.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@7116 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent a6ebc1e6
......@@ -137,7 +137,12 @@ class Coordinate(Base):
security.declareProtected( Permissions.AccessContentsInformation,
'getText')
getText = asText
def getText(self):
"""
calls asText
"""
return self.asText()
security.declareProtected( Permissions.ModifyPortalContent, 'fromText' )
def fromText(self, coordinate_text):
......@@ -150,7 +155,11 @@ class Coordinate(Base):
return script(text=coordinate_text)
security.declareProtected(Permissions.ModifyPortalContent, '_setText')
_setText = fromText
def _setText(self, value):
"""
calls fromText
"""
return self.fromText(value)
security.declareProtected( Permissions.AccessContentsInformation,
'standardTextFormat')
......
##############################################################################
#
# Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
# Jean-Paul Smets-Solanes <jp@nexedi.com>
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# garantees and support are strongly adviced to contract a Free Software
# Service Company
#
# 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.
#
##############################################################################
from Products.ERP5Type.Utils import assertAttributePortalType
from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
from Products.CMFCore.WorkflowCore import WorkflowMethod
from Products.CMFCore.utils import getToolByName
class Entity:
"""
Mix-in class used by Organisation and Person
Implements accessors to:
- default_telephone
- default_fax
- default_email
- default_address
"""
meta_type = 'ERP5 Entity'
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
security.declareProtected(Permissions.View, 'getDefaultAddressText')
def getDefaultAddressText(self):
"""
Returns the default address as a text string
"""
try:
return self.getDefaultAddressValue().asText()
except AttributeError:
return ''
security.declareProtected(Permissions.View, 'getDefaultAddressStreetAddress')
def getDefaultAddressStreetAddress(self):
"""
Returns the default address street as a text string
"""
try:
return self.getDefaultAddressValue().getStreetAddress()
except AttributeError:
return ''
security.declareProtected(Permissions.View, 'getDefaultAddressCity')
def getDefaultAddressCity(self):
"""
Returns the default address city as a text string
"""
try:
return self.getDefaultAddressValue().getCity()
except AttributeError:
return ''
security.declareProtected(Permissions.View, 'getDefaultAddressRegion')
def getDefaultAddressRegion(self):
"""
Returns the default address region as a text string
"""
try:
return self.getDefaultAddressValue().getRegion()
except AttributeError:
return ''
security.declareProtected(Permissions.View, 'getDefaultAddressZipCode')
def getDefaultAddressZipCode(self):
"""
Returns the default address zip code as a text string
"""
try:
return self.getDefaultAddressValue().getZipCode()
except AttributeError:
return ''
security.declareProtected(Permissions.View, 'getDefaultTelephoneText')
def getDefaultTelephoneText(self):
"""
Returns the default telephone as a text string
"""
try:
return self.getDefaultTelephone().asText()
except AttributeError:
return ''
security.declareProtected(Permissions.View, 'getDefaultTelephoneNumber')
def getDefaultTelephoneNumber(self):
"""
Returns the default telephone number
"""
try:
return self.getDefaultTelephone().getTelephoneNumber()
except AttributeError:
return ''
security.declareProtected(Permissions.View, 'getDefaultFaxText')
def getDefaultFaxText(self):
"""
Returns the default fax as a text string
"""
try:
return self.getDefaultFax().asText()
except AttributeError:
return ''
security.declareProtected(Permissions.View, 'getDefaultFaxNumber')
def getDefaultFaxNumber(self):
"""
Returns the default fax number
"""
try:
return self.getDefaultFax().getTelephoneNumber()
except AttributeError:
return ''
security.declareProtected(Permissions.View, 'getDefaultEmailText')
def getDefaultEmailText(self):
"""
Returns the default email as a text string
"""
try:
return self.getDefaultEmail().asText()
except AttributeError:
return ''
security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultAddress')
def setDefaultAddress(self, coordinate):
"""
Updates the default address from a standard text string
"""
self._setDefaultAddress(coordinate)
self.reindexObject()
security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultAddressText')
def setDefaultAddressText(self, coordinate):
"""
Updates the default address from a standard text string
"""
self._setDefaultAddressText(coordinate)
self.reindexObject()
security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultAddressRegion')
def setDefaultAddressRegion(self, coordinate):
"""
Updates the default address from a standard text string
"""
self._setDefaultAddressRegion(coordinate)
self.reindexObject()
security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultAddressCity')
def setDefaultAddressCity(self, coordinate):
"""
Updates the default address from a standard text string
"""
self._setDefaultAddressCity(coordinate)
self.reindexObject()
security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultAddressZipCode')
def setDefaultAddressZipCode(self, coordinate):
"""
Updates the default address from a standard text string
"""
self._setDefaultAddressZipCode(coordinate)
self.reindexObject()
security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultAddressStreetAddress')
def setDefaultAddressStreetAddress(self, coordinate):
"""
Updates the default address from a standard text string
"""
self._setDefaultAddressStreetAddress(coordinate)
self.reindexObject()
security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultTelephoneText')
def setDefaultTelephoneText(self, coordinate):
"""
Updates the default telephone from a standard text string
"""
self._setDefaultTelephoneText(coordinate)
self.reindexObject()
security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultTelephoneNumber')
def setDefaultTelephoneNumber(self, coordinate):
"""
Updates the default telephone number
"""
self._setDefaultTelephoneNumber(coordinate)
self.reindexObject()
security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultFaxText')
def setDefaultFaxText(self, coordinate):
"""
Updates the default fax from a standard text string
"""
self._setDefaultFaxText(coordinate)
self.reindexObject()
security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultFaxNumber')
def setDefaultFaxNumber(self, coordinate):
"""
Updates the default fax number
"""
self._setDefaultFaxNumber(coordinate)
self.reindexObject()
security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultEmailText')
def setDefaultEmailText(self, coordinate):
"""
Updates the default email from a standard text string
"""
self._setDefaultEmailText(coordinate)
self.reindexObject()
### Private methods - no reindexing
security.declarePrivate('_setDefaultAddress')
def _setDefaultAddress(self, coordinate):
assertAttributePortalType(self, 'default_address', 'Address')
if not hasattr(self,'default_address'):
self.invokeFactory( type_name='Address'
, id='default_address'
)
self.default_address = coordinate
security.declarePrivate('_setDefaultAddressText')
def _setDefaultAddressText(self, coordinate):
assertAttributePortalType(self, 'default_address', 'Address')
if not hasattr(self,'default_address'):
self.invokeFactory( type_name='Address'
, id='default_address'
)
self.default_address.fromText(coordinate)
security.declarePrivate('_setDefaultAddressCity')
def _setDefaultAddressCity(self, value):
assertAttributePortalType(self, 'default_address', 'Address')
if not hasattr(self,'default_address'):
self.invokeFactory( type_name='Address'
, id='default_address'
)
self.default_address.setCity(value)
security.declarePrivate('_setDefaultAddressZipCode')
def _setDefaultAddressZipCode(self, value):
assertAttributePortalType(self, 'default_address', 'Address')
if not hasattr(self,'default_address'):
self.invokeFactory( type_name='Address'
, id='default_address'
)
self.default_address.setZipCode(value)
security.declarePrivate('_setDefaultAddressStreetAddress')
def _setDefaultAddressStreetAddress(self, value):
assertAttributePortalType(self, 'default_address', 'Address')
if not hasattr(self,'default_address'):
self.invokeFactory( type_name='Address'
, id='default_address'
)
self.default_address.setStreetAddress(value)
security.declarePrivate('_setDefaultAddressRegion')
def _setDefaultAddressRegion(self, value):
assertAttributePortalType(self, 'default_address', 'Address')
if not hasattr(self,'default_address'):
self.invokeFactory( type_name='Address'
, id='default_address'
)
self.default_address.setRegion(value)
security.declarePrivate('_setDefaultTelephoneText')
def _setDefaultTelephoneText(self, coordinate):
assertAttributePortalType(self, 'default_telephone', 'Telephone')
if not hasattr(self,'default_telephone'):
self.invokeFactory( type_name='Telephone'
, id='default_telephone'
)
self.default_telephone.fromText(coordinate)
security.declarePrivate('_setDefaultTelephoneNumber')
def _setDefaultTelephoneNumber(self, coordinate):
assertAttributePortalType(self, 'default_telephone', 'Telephone')
if not hasattr(self,'default_telephone'):
self.invokeFactory( type_name='Telephone'
, id='default_telephone'
)
self.default_telephone.setTelephoneNumber(coordinate)
security.declarePrivate('_setDefaultFaxText')
def _setDefaultFaxText(self, coordinate):
assertAttributePortalType(self, 'default_fax', 'Fax')
if not hasattr(self,'default_fax'):
self.invokeFactory( type_name='Fax'
, id='default_fax'
)
self.default_fax.fromText(coordinate)
security.declarePrivate('_setDefaultFaxNumber')
def _setDefaultFaxNumber(self, coordinate):
assertAttributePortalType(self, 'default_fax', 'Fax')
if not hasattr(self,'default_fax'):
self.invokeFactory( type_name='Fax'
, id='default_fax'
)
self.default_fax.setTelephoneNumber(coordinate)
security.declarePrivate('_setDefaultEmailText')
def _setDefaultEmailText(self, coordinate):
assertAttributePortalType(self, 'default_email', 'Email')
if not hasattr(self,'default_email'):
self.invokeFactory( type_name='Email'
, id='default_email'
)
self.default_email.fromText(coordinate)
......@@ -34,7 +34,7 @@ from Products.ERP5Type.XMLObject import XMLObject
from Products.ERP5.Core.MetaNode import MetaNode
class Organisation(Entity, MetaNode, XMLObject):
class Organisation(MetaNode, XMLObject):
"""
An Organisation object holds the information about
an organisation (ex. a division in a company, a company,
......
......@@ -49,7 +49,7 @@ try :
except ImportError:
pw_encrypt = lambda pw:pw
class Person(Entity, Node, XMLObject):
class Person(Node, XMLObject):
"""
An Person object holds the information about
an person (ex. you, me, someone in the company,
......
......@@ -62,10 +62,16 @@ class Url(Coordinate, Base):
security.declareProtected(Permissions.AccessContentsInformation,
'asText')
def asText(self):
"""
Returns a text representation of the Url
"""
return self.url_string
security.declareProtected(Permissions.ModifyPortalContent, 'fromText')
def fromText(self, text):
"""
set the Url from its text representation
"""
self.url_string = text
security.declareProtected(Permissions.AccessContentsInformation,
......
......@@ -105,6 +105,8 @@ class Organisation:
'description' : 'The default address of this organisations',
'type' : 'content',
'portal_type' : ('Address'),
'acquired_property_id' : ( 'text', 'street_address', 'city',
'zip_code', 'region', 'region_title'),
'acquisition_base_category' : ('region', ),
'acquisition_portal_type' : ('Category',),
'acquisition_copy_value' : 0,
......@@ -118,6 +120,7 @@ class Organisation:
'description' : 'The default phone for this organisation',
'type' : 'content',
'portal_type' : ('Telephone'),
'acquired_property_id' : ( 'text', 'telephone_number' ),
'acquisition_base_category' : ('region', ),
'acquisition_portal_type' : ('Category',),
'acquisition_copy_value' : 0,
......@@ -131,6 +134,7 @@ class Organisation:
'description' : 'A default mobile phone for this organisation',
'type' : 'content',
'portal_type' : ('Telephone'),
'acquired_property_id' : ( 'text', 'telephone_number' ),
'acquisition_base_category' : ('region', ),
'acquisition_portal_type' : ('Category',),
'acquisition_copy_value' : 0,
......@@ -144,6 +148,7 @@ class Organisation:
'description' : 'The defaut fax phone number for this organisation',
'type' : 'content',
'portal_type' : ('Fax'),
'acquired_property_id' : ( 'text', 'telephone_number' ),
'acquisition_base_category' : ('region', ),
'acquisition_portal_type' : ('Category',),
'acquisition_copy_value' : 0,
......@@ -157,6 +162,7 @@ class Organisation:
'description' : 'The default email address for this organisation',
'type' : 'content',
'portal_type' : ('Email'),
'acquired_property_id' : ( 'text', ),
'acquisition_base_category' : ('region', ),
'acquisition_portal_type' : ('Category',),
'acquisition_copy_value' : 0,
......@@ -170,6 +176,7 @@ class Organisation:
'description' : 'An alternate email address for this organisation',
'type' : 'content',
'portal_type' : ('Email'),
'acquired_property_id' : ( 'text', ),
'acquisition_base_category' : ('region', ),
'acquisition_portal_type' : ('Category',),
'acquisition_copy_value' : 0,
......
......@@ -98,6 +98,8 @@ class Person:
, 'description' : 'The current address of the person'
, 'type' : 'content'
, 'portal_type' : ( 'Address', )
, 'acquired_property_id' : ( 'text', 'street_address', 'city',
'zip_code', 'region', 'region_title')
, 'acquisition_base_category': ( 'subordination', )
, 'acquisition_portal_type' : ( 'Organisation', )
, 'acquisition_copy_value' : 0
......@@ -113,6 +115,7 @@ class Person:
, 'description' : 'The current telephone of the person'
, 'type' : 'content'
, 'portal_type' : ( 'Telephone', )
, 'acquired_property_id' : ( 'text', 'telephone_number' )
, 'acquisition_base_category': ( 'subordination', )
, 'acquisition_portal_type' : ( 'Organisation', )
, 'acquisition_copy_value' : 0
......@@ -127,6 +130,7 @@ class Person:
, 'description' : 'The current mobile telephone of the person'
, 'type' : 'content'
, 'portal_type' : ( 'Telephone', )
, 'acquired_property_id' : ( 'text', 'telephone_number' )
, 'acquisition_base_category': ( 'subordination', )
, 'acquisition_portal_type' : ( 'Organisation', )
, 'acquisition_copy_value' : 0
......@@ -141,6 +145,7 @@ class Person:
, 'description' : 'The current fax of the person'
, 'type' : 'content'
, 'portal_type' : ( 'Fax', )
, 'acquired_property_id' : ( 'text', 'telephone_number' )
, 'acquisition_base_category': ( 'subordination', )
, 'acquisition_portal_type' : ( 'Organisation', )
, 'acquisition_copy_value' : 0
......@@ -155,6 +160,7 @@ class Person:
, 'description' : 'The current email of the person'
, 'type' : 'content'
, 'portal_type' : ( 'Email', )
, 'acquired_property_id' : ( 'text', )
, 'acquisition_base_category': ( 'subordination', )
, 'acquisition_portal_type' : ( 'Organisation', )
, 'acquisition_copy_value' : 0
......@@ -169,6 +175,7 @@ class Person:
, 'description' : 'An alternate email of the person'
, 'type' : 'content'
, 'portal_type' : ( 'Email', )
, 'acquired_property_id' : ( 'text', )
, 'acquisition_base_category': ( 'subordination', )
, 'acquisition_portal_type' : ( 'Organisation', )
, 'acquisition_copy_value' : 0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment