Index: Person.py =================================================================== --- Person.py (revision 12929) +++ Person.py (working copy) @@ -89,30 +89,43 @@ def _setTitle(self, value): """ - Here we see that we must define a notion - of priority in the way fields are updated + This overrides default setTitle accessor. + If only one word was given, it is last name + If multiple, then the first is first name, the rest + is last name, maybe with a middle name in the middle. + We have to do it because RelationStringField may allow creation + and it sets title, and we should be consistent with getTitle """ - if value != self.getTitle(): - self.title = value + try: + value = value.split() + except AttributeError: + pass + if len(value) == 0: + return + if len(value) == 1: + self.setLastName(value[0]) + if len(value) == 2: + self.setFirstName(value[0]) + self.setLastName(value[1]) + else: + self.setFirstName(value[0]) + self.setMiddleName(value[1]) + self.setLastName(' '.join(value[2:])) - security.declareProtected(Permissions.AccessContentsInformation, - 'getTitle') + security.declareProtected(Permissions.AccessContentsInformation, 'getTitle') def getTitle(self, **kw): """ - Returns the title if it exists or a combination of - first name and last name + Returns a combination of + first name, middle 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 + 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) security.declareProtected(Permissions.ModifyPortalContent, 'setTitle') def setTitle(self, value): @@ -122,38 +135,6 @@ 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('Manage users', 'setReference') def setReference(self, value): """