diff --git a/product/ERP5/Document/Person.py b/product/ERP5/Document/Person.py index 09ced8dbdb1aca43ff91f0131e05a48fd591c04a..2f4b621928b1ba84f00066669fbc0607a3743974 100755 --- a/product/ERP5/Document/Person.py +++ b/product/ERP5/Document/Person.py @@ -28,357 +28,409 @@ from AccessControl import ClassSecurityInfo -from Products.ERP5.Core.Node import Node -from Products.ERP5.Document.Image import Image -from Products.ERP5.Document.Entity import Entity from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface from Products.ERP5Type.Utils import assertAttributePortalType from Products.ERP5Type.XMLObject import XMLObject +from Products.ERP5.Core.Node import Node -class Person(Entity, Node, Image, XMLObject): - """ - An Person object holds the information about - an person (ex. you, me, someone in the company, - someone outside of the company, a member of the portal, - etc.). - - Person objects can contain Coordinate objects - (ex. Telephone, Url) as well a documents of various types. - - Person objects can be synchronized accross multiple - sites. - - Person objects inherit from the Node base class - (one of the 5 base classes in the ERP5 universal business model) - """ - - meta_type = 'ERP5 Person' - portal_type = 'Person' - add_permission = Permissions.AddPortalContent - isPortalContent = 1 - isRADContent = 1 - - # Declarative security - security = ClassSecurityInfo() - security.declareObjectProtected(Permissions.View) - - # Declarative properties - property_sheets = ( PropertySheet.Base - , PropertySheet.XMLObject - , PropertySheet.CategoryCore - , PropertySheet.DublinCore - , PropertySheet.Person) - - def _setTitle(self, value): - """ - Here we see that we must define an notion - of priority in the way fields are updated - """ - if value != self.getTitle(): - self.title = value - - security.declareProtected(Permissions.View, 'getTitle') - def getTitle(self, **kw): - """ - Returns the title if it exists or a combination of - first name and last name - """ - if self.title == '': - name_list = [] - if self.getFirstName() not in (None, ''): - name_list.append(self.getFirstName()) - if self.getMiddleName() not in (None, ''): - name_list.append(self.getMiddleName()) - if self.getLastName() not in (None, ''): - name_list.append(self.getLastName()) - return ' '.join(name_list) - else: - return self.title - Title = getTitle - - security.declareProtected(Permissions.ModifyPortalContent, 'setTitle') - def setTitle(self, value): - """ - Updates the title if necessary - """ - self._setTitle(value) - self.reindexObject() - - def _setFirstName(self, value): - """ - Update Title if first_name is modified - """ - self.first_name = value - if self.getFirstName()!=None and self.getLastName()!=None: - self._setTitle(self.getFirstName()+' '+self.getLastName()) - - security.declareProtected(Permissions.ModifyPortalContent, 'setFirstName') - def setFirstName(self, value): - """ - Updates the first_name if necessary - """ - self._setFirstName(value) - self.reindexObject() - - def _setLastName(self, value): - """ - Update Title if last_name is modified - """ - self.last_name = value - if self.getFirstName()!=None and self.getLastName()!=None: - self._setTitle(self.getFirstName()+' '+self.getLastName()) - - security.declareProtected(Permissions.ModifyPortalContent, 'setLastName') - def setLastName(self, value): - """ - Updates the last_name if necessary - """ - self._setLastName(value) - self.reindexObject() - - security.declareProtected(Permissions.View, 'getDefaultCareerTitle') - def getDefaultCareerTitle(self): - """ - Returns the default career title - """ - try: - return self.getDefaultCareerValue().getTitle() - except: - return '' - - security.declareProtected(Permissions.View, 'getDefaultCareerDescription') - def getDefaultCareerDescription(self): - """ - Returns the default career description - """ - try: - return self.getDefaultCareerValue().getDescription() - except: - return '' - - security.declareProtected(Permissions.View, 'getDefaultCareerCollectiveAgreementTitle') - def getDefaultCareerCollectiveAgreementTitle(self): - """ - Returns the default career collective agreement - """ - try: - return self.getDefaultCareerValue().getCollectiveAgreementTitle() - except: - return '' - - security.declareProtected(Permissions.View, 'getDefaultCareerStartDate') - def getDefaultCareerStartDate(self): - """ - Returns the default career start date - """ - try: - return self.getDefaultCareerValue().getStartDate() - except: - return None - - security.declareProtected(Permissions.View, 'getDefaultCareerStopDate') - def getDefaultCareerStopDate(self): - """ - Returns the default career stop date - """ - try: - return self.getDefaultCareerValue().getStopDate() - except: - return None - - security.declareProtected(Permissions.View, 'getDefaultCareerSalaryLevel') - def getDefaultCareerSalaryLevel(self): - """ - Returns the default career salary level - """ - try: - return self.getDefaultCareerValue().getSalaryLevel() - except: - return '' - - security.declareProtected(Permissions.View, 'getDefaultCareerSalaryCoefficient') - def getDefaultCareerSalaryCoefficient(self): - """ - Returns the default career salary coefficient - """ - try: - return self.getDefaultCareerValue().getSalaryCoefficient() - except: - return '' - - security.declareProtected(Permissions.View, 'getDefaultCareerGrade') - def getDefaultCareerGrade(self): - """ - Returns the default career grade - """ - try: - return self.getDefaultCareerValue().getGrade() - except: - return '' - - security.declareProtected(Permissions.View, 'getDefaultCareerRole') - def getDefaultCareerRole(self): - """ - Returns the default career role - """ - try: - return self.getDefaultCareerValue().getRole() - except: - return '' - - security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerTitle') - def setDefaultCareerTitle(self, value): - """ - Updates the default career title - """ - self._setDefaultCareerTitle(value) - self.reindexObject() - - security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerDescription') - def setDefaultCareerDescription(self, value): - """ - Updates the default career description - """ - self._setDefaultCareerDescription(value) - self.reindexObject() - - security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerCollectiveAgreementTitle') - def setDefaultCareerCollectiveAgreementTitle(self, value): - """ - Updates the default career collective agreement - """ - self._setDefaultCareerCollectiveAgreementTitle(value) - self.reindexObject() - - security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerStartDate') - def setDefaultCareerStartDate(self, value): - """ - Updates the defaul career start date - """ - self._setDefaultCareerStartDate(value) - self.reindexObject() - - security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerStopDate') - def setDefaultCareerStopDate(self, value): - """ - Updates the default career stop date - """ - self._setDefaultCareerStopDate(value) - self.reindexObject() - - security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerSalaryLevel') - def setDefaultCareerSalaryLevel(self, value): - """ - Updates the default career salary level - """ - self._setDefaultCareerSalaryLevel(value) - self.reindexObject() - - security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerSalaryCoefficient') - def setDefaultCareerSalaryCoefficient(self, value): - """ - Updates the default career salary coefficient - """ - self._setDefaultCareerSalaryCoefficient(value) - self.reindexObject() +from Products.ERP5.Document.Entity import Entity - security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerGrade') - def setDefaultCareerGrade(self, value): - """ - Updates the default career grade - """ - self._setDefaultCareerGrade(value) - self.reindexObject() - security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerRole') - def setDefaultCareerRole(self, value): - """ - Updates the default career role - """ - self._setDefaultCareerRole(value) - self.reindexObject() - - - ### Private methods - no reindexing - - security.declarePrivate('_setDefaultCareerTitle') - def _setDefaultCareerTitle(self, coordinate): - assertAttributePortalType(self, 'default_career', 'Career') - if not hasattr(self,'default_career'): - self.invokeFactory( type_name='Career' - , id='default_career' - ) - self.default_career.setTitle(coordinate) - - security.declarePrivate('_setDefaultCareerDescription') - def _setDefaultCareerDescription(self, coordinate): - assertAttributePortalType(self, 'default_career', 'Career') - if not hasattr(self,'default_career'): - self.invokeFactory( type_name='Career' - , id='default_career' - ) - self.default_career.setDescription(coordinate) - - security.declarePrivate('_setDefaultCareerCollectiveAgreementTitle') - def _setDefaultCareerCollectiveAgreementTitle(self, coordinate): - assertAttributePortalType(self, 'default_career', 'Career') - if not hasattr(self,'default_career'): - self.invokeFactory( type_name='Career' - , id='default_career' - ) - self.default_career.setCollectiveAgreementTitle(coordinate) - - security.declarePrivate('_setDefaultCareerStartDate') - def _setDefaultCareerStartDate(self, coordinate): - assertAttributePortalType(self, 'default_career', 'Career') - if not hasattr(self,'default_career'): - self.invokeFactory( type_name='Career' - , id='default_career' - ) - self.default_career.setStartDate(coordinate) - - security.declarePrivate('_setDefaultCareerStopDate') - def _setDefaultCareerStopDate(self, coordinate): - assertAttributePortalType(self, 'default_career', 'Career') - if not hasattr(self,'default_career'): - self.invokeFactory( type_name='Career' - , id='default_career' - ) - self.default_career.setStopDate(coordinate) - - security.declarePrivate('_setDefaultCareerSalaryLevel') - def _setDefaultCareerSalaryLevel(self, coordinate): - assertAttributePortalType(self, 'default_career', 'Career') - if not hasattr(self,'default_career'): - self.invokeFactory( type_name='Career' - , id='default_career' - ) - self.default_career.setSalaryLevel(coordinate) - - security.declarePrivate('_setDefaultCareerSalaryCoefficient') - def _setDefaultCareerSalaryCoefficient(self, coordinate): - assertAttributePortalType(self, 'default_career', 'Career') - if not hasattr(self,'default_career'): - self.invokeFactory( type_name='Career' - , id='default_career' - ) - self.default_career.setSalaryCoefficient(coordinate) - - security.declarePrivate('_setDefaultCareerGrade') - def _setDefaultCareerGrade(self, coordinate): - assertAttributePortalType(self, 'default_career', 'Career') - if not hasattr(self,'default_career'): - self.invokeFactory( type_name='Career' - , id='default_career' - ) - self.default_career.setGrade(coordinate) - - security.declarePrivate('_setDefaultCareerRole') - def _setDefaultCareerRole(self, coordinate): - assertAttributePortalType(self, 'default_career', 'Career') - if not hasattr(self,'default_career'): - self.invokeFactory( type_name='Career' - , id='default_career' - ) - self.default_career.setRole(coordinate) \ No newline at end of file +class Person(Entity, Node, XMLObject): + """ + An Person object holds the information about + an person (ex. you, me, someone in the company, + someone outside of the company, a member of the portal, + etc.). + + Person objects can contain Coordinate objects + (ex. Telephone, Url) as well a documents of various types. + + Person objects can be synchronized accross multiple + sites. + + Person objects inherit from the Node base class + (one of the 5 base classes in the ERP5 universal business model) + """ + + meta_type = 'ERP5 Person' + portal_type = 'Person' + add_permission = Permissions.AddPortalContent + isPortalContent = 1 + isRADContent = 1 + + # Declarative security + security = ClassSecurityInfo() + security.declareObjectProtected(Permissions.View) + + # Declarative properties + property_sheets = ( PropertySheet.Base + , PropertySheet.XMLObject + , PropertySheet.CategoryCore + , PropertySheet.DublinCore + , PropertySheet.Person) + + # Factory Type Information + factory_type_information = \ + { 'id' : portal_type + , 'meta_type' : meta_type + , 'description' : """\ +An Person object holds the information about +an person (ex. you, me, someone in the company, +someone outside of the company, a member of the portal, +etc.).""" + , 'icon' : 'person_icon.gif' + , 'product' : 'ERP5' + , 'factory' : 'addPerson' + , 'immediate_view' : 'person_edit' + , 'allow_discussion' : 1 + , 'allowed_content_types': ('Assignment', 'Telephone', 'Fax', 'Bank Account', + 'Geographic Address', 'Career' + ) + , 'filter_content_types' : 1 + , 'global_allow' : 1 + , 'actions' : + ( { 'id' : 'view' + , 'name' : 'View' + , 'category' : 'object_view' + , 'action' : 'person_edit' + , 'permissions' : ( + Permissions.View, ) + } + , { 'id' : 'print' + , 'name' : 'Print' + , 'category' : 'object_print' + , 'action' : 'person_print' + , 'permissions' : ( + Permissions.View, ) + } + , { 'id' : 'metadata' + , 'name' : 'Metadata' + , 'category' : 'object_edit' + , 'action' : 'metadata_edit' + , 'permissions' : ( + Permissions.View, ) + } + , { 'id' : 'translate' + , 'name' : 'Translate' + , 'category' : 'object_action' + , 'action' : 'translation_template_view' + , 'permissions' : ( + Permissions.TranslateContent, ) + } + ) + } + + def _setTitle(self, value): + """ + Here we see that we must define an notion + of priority in the way fields are updated + """ + if value != self.getTitle(): + self.title = value + + security.declareProtected(Permissions.View, 'getTitle') + def getTitle(self, **kw): + """ + Returns the title if it exists or a combination of + first name and last name + """ + if self.title == '': + name_list = [] + if self.getFirstName() not in (None, ''): + name_list.append(self.getFirstName()) + if self.getMiddleName() not in (None, ''): + name_list.append(self.getMiddleName()) + if self.getLastName() not in (None, ''): + name_list.append(self.getLastName()) + return ' '.join(name_list) + else: + return self.title + Title = getTitle + + security.declareProtected(Permissions.ModifyPortalContent, 'setTitle') + def setTitle(self, value): + """ + Updates the title if necessary + """ + self._setTitle(value) + self.reindexObject() + + def _setFirstName(self, value): + """ + Update Title if first_name is modified + """ + self.first_name = value + if self.getFirstName()!=None and self.getLastName()!=None: + self._setTitle(self.getFirstName()+' '+self.getLastName()) + + security.declareProtected(Permissions.ModifyPortalContent, 'setFirstName') + def setFirstName(self, value): + """ + Updates the first_name if necessary + """ + self._setFirstName(value) + self.reindexObject() + + def _setLastName(self, value): + """ + Update Title if last_name is modified + """ + self.last_name = value + if self.getFirstName()!=None and self.getLastName()!=None: + self._setTitle(self.getFirstName()+' '+self.getLastName()) + + security.declareProtected(Permissions.ModifyPortalContent, 'setLastName') + def setLastName(self, value): + """ + Updates the last_name if necessary + """ + self._setLastName(value) + self.reindexObject() + + security.declareProtected(Permissions.View, 'getDefaultCareerTitle') + def getDefaultCareerTitle(self): + """ + Returns the default career title + """ + try: + return self.getDefaultCareerValue().getTitle() + except: + return '' + + security.declareProtected(Permissions.View, 'getDefaultCareerDescription') + def getDefaultCareerDescription(self): + """ + Returns the default career description + """ + try: + return self.getDefaultCareerValue().getDescription() + except: + return '' + + security.declareProtected(Permissions.View, 'getDefaultCareerCollectiveAgreementTitle') + def getDefaultCareerCollectiveAgreementTitle(self): + """ + Returns the default career collective agreement + """ + try: + return self.getDefaultCareerValue().getCollectiveAgreementTitle() + except: + return '' + + security.declareProtected(Permissions.View, 'getDefaultCareerStartDate') + def getDefaultCareerStartDate(self): + """ + Returns the default career start date + """ + try: + return self.getDefaultCareerValue().getStartDate() + except: + return None + + security.declareProtected(Permissions.View, 'getDefaultCareerStopDate') + def getDefaultCareerStopDate(self): + """ + Returns the default career stop date + """ + try: + return self.getDefaultCareerValue().getStopDate() + except: + return None + + security.declareProtected(Permissions.View, 'getDefaultCareerSalaryLevel') + def getDefaultCareerSalaryLevel(self): + """ + Returns the default career salary level + """ + try: + return self.getDefaultCareerValue().getSalaryLevel() + except: + return '' + + security.declareProtected(Permissions.View, 'getDefaultCareerSalaryCoefficient') + def getDefaultCareerSalaryCoefficient(self): + """ + Returns the default career salary coefficient + """ + try: + return self.getDefaultCareerValue().getSalaryCoefficient() + except: + return '' + + security.declareProtected(Permissions.View, 'getDefaultCareerGrade') + def getDefaultCareerGrade(self): + """ + Returns the default career grade + """ + try: + return self.getDefaultCareerValue().getGrade() + except: + return '' + + security.declareProtected(Permissions.View, 'getDefaultCareerRole') + def getDefaultCareerRole(self): + """ + Returns the default career role + """ + try: + return self.getDefaultCareerValue().getRole() + except: + return '' + + security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerTitle') + def setDefaultCareerTitle(self, value): + """ + Updates the default career title + """ + self._setDefaultCareerTitle(value) + self.reindexObject() + + security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerDescription') + def setDefaultCareerDescription(self, value): + """ + Updates the default career description + """ + self._setDefaultCareerDescription(value) + self.reindexObject() + + security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerCollectiveAgreementTitle') + def setDefaultCareerCollectiveAgreementTitle(self, value): + """ + Updates the default career collective agreement + """ + self._setDefaultCareerCollectiveAgreementTitle(value) + self.reindexObject() + + security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerStartDate') + def setDefaultCareerStartDate(self, value): + """ + Updates the defaul career start date + """ + self._setDefaultCareerStartDate(value) + self.reindexObject() + + security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerStopDate') + def setDefaultCareerStopDate(self, value): + """ + Updates the default career stop date + """ + self._setDefaultCareerStopDate(value) + self.reindexObject() + + security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerSalaryLevel') + def setDefaultCareerSalaryLevel(self, value): + """ + Updates the default career salary level + """ + self._setDefaultCareerSalaryLevel(value) + self.reindexObject() + + security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerSalaryCoefficient') + def setDefaultCareerSalaryCoefficient(self, value): + """ + Updates the default career salary coefficient + """ + self._setDefaultCareerSalaryCoefficient(value) + self.reindexObject() + + security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerGrade') + def setDefaultCareerGrade(self, value): + """ + Updates the default career grade + """ + self._setDefaultCareerGrade(value) + self.reindexObject() + + security.declareProtected(Permissions.ModifyPortalContent, 'setDefaultCareerRole') + def setDefaultCareerRole(self, value): + """ + Updates the default career role + """ + self._setDefaultCareerRole(value) + self.reindexObject() + + + ### Private methods - no reindexing + + security.declarePrivate('_setDefaultCareerTitle') + def _setDefaultCareerTitle(self, coordinate): + assertAttributePortalType(self, 'default_career', 'Career') + if not hasattr(self,'default_career'): + self.invokeFactory( type_name='Career' + , id='default_career' + ) + self.default_career.setTitle(coordinate) + + security.declarePrivate('_setDefaultCareerDescription') + def _setDefaultCareerDescription(self, coordinate): + assertAttributePortalType(self, 'default_career', 'Career') + if not hasattr(self,'default_career'): + self.invokeFactory( type_name='Career' + , id='default_career' + ) + self.default_career.setDescription(coordinate) + + security.declarePrivate('_setDefaultCareerCollectiveAgreementTitle') + def _setDefaultCareerCollectiveAgreementTitle(self, coordinate): + assertAttributePortalType(self, 'default_career', 'Career') + if not hasattr(self,'default_career'): + self.invokeFactory( type_name='Career' + , id='default_career' + ) + self.default_career.setCollectiveAgreementTitle(coordinate) + + security.declarePrivate('_setDefaultCareerStartDate') + def _setDefaultCareerStartDate(self, coordinate): + assertAttributePortalType(self, 'default_career', 'Career') + if not hasattr(self,'default_career'): + self.invokeFactory( type_name='Career' + , id='default_career' + ) + self.default_career.setStartDate(coordinate) + + security.declarePrivate('_setDefaultCareerStopDate') + def _setDefaultCareerStopDate(self, coordinate): + assertAttributePortalType(self, 'default_career', 'Career') + if not hasattr(self,'default_career'): + self.invokeFactory( type_name='Career' + , id='default_career' + ) + self.default_career.setStopDate(coordinate) + + security.declarePrivate('_setDefaultCareerSalaryLevel') + def _setDefaultCareerSalaryLevel(self, coordinate): + assertAttributePortalType(self, 'default_career', 'Career') + if not hasattr(self,'default_career'): + self.invokeFactory( type_name='Career' + , id='default_career' + ) + self.default_career.setSalaryLevel(coordinate) + + security.declarePrivate('_setDefaultCareerSalaryCoefficient') + def _setDefaultCareerSalaryCoefficient(self, coordinate): + assertAttributePortalType(self, 'default_career', 'Career') + if not hasattr(self,'default_career'): + self.invokeFactory( type_name='Career' + , id='default_career' + ) + self.default_career.setSalaryCoefficient(coordinate) + + security.declarePrivate('_setDefaultCareerGrade') + def _setDefaultCareerGrade(self, coordinate): + assertAttributePortalType(self, 'default_career', 'Career') + if not hasattr(self,'default_career'): + self.invokeFactory( type_name='Career' + , id='default_career' + ) + self.default_career.setGrade(coordinate) + + security.declarePrivate('_setDefaultCareerRole') + def _setDefaultCareerRole(self, coordinate): + assertAttributePortalType(self, 'default_career', 'Career') + if not hasattr(self,'default_career'): + self.invokeFactory( type_name='Career' + , id='default_career' + ) + self.default_career.setRole(coordinate) \ No newline at end of file