diff --git a/product/ERP5/Document/Person.py b/product/ERP5/Document/Person.py index 6d2c18cf14b8d7d46f83eadaec6ac4153ea8a6e7..f6c3bc49b0725857627c0a175e1e88ec32ed6e83 100644 --- a/product/ERP5/Document/Person.py +++ b/product/ERP5/Document/Person.py @@ -96,11 +96,12 @@ class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin): first name, middle name and last name """ if not self.title: - return ' '.join([x for x in (self.getFirstName(), - self.getMiddleName(), - self.getLastName()) if x]) - else: - return self.title + title = ' '.join([x for x in (self.getFirstName(), + self.getMiddleName(), + self.getLastName()) if x]) + if title: + return title + return super(Person, self).getTitle(**kw) security.declareProtected(Permissions.AccessContentsInformation, 'getTranslatedTitle') @@ -110,11 +111,12 @@ class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin): first name, middle name and last name """ if not self.title: - return ' '.join([x for x in (self.getTranslatedFirstName(**kw), - self.getTranslatedMiddleName(**kw), - self.getTranslatedLastName(**kw)) if x]) - else: - return self.title + title = ' '.join([x for x in (self.getTranslatedFirstName(**kw), + self.getTranslatedMiddleName(**kw), + self.getTranslatedLastName(**kw)) if x]) + if title: + return title + return super(Person, self).getTranslatedTitle(**kw) security.declareProtected(Permissions.AccessContentsInformation, 'title_or_id') @@ -124,7 +126,10 @@ class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin): security.declareProtected(Permissions.AccessContentsInformation, 'hasTitle') def hasTitle(self): - return not not self.getTitle() + return self.hasFirstName() or \ + self.hasLastName() or \ + self.hasMiddleName() or \ + self._baseHasTitle() def _setReference(self, value): """ diff --git a/product/ERP5/tests/testPerson.py b/product/ERP5/tests/testPerson.py index 17e1ca3503e3966379e038364b23400233e54746..bf7296b3c7f28bcfa46d1269bdd0c216e3247738 100644 --- a/product/ERP5/tests/testPerson.py +++ b/product/ERP5/tests/testPerson.py @@ -90,9 +90,37 @@ class TestPerson(ERP5TypeTestCase): self.assertEqual(person_copy_obj.getReference(), person.getReference()) # title & first_name, last_name - def testEmptyTitle(self): - p = self._makeOne() - self.assertEqual('', p.getTitle()) + def testEmptyTitleFallbackOnId(self): + p = self._makeOne(id=self.id()) + self.assertEqual(self.id(), p.getTitle()) + + def testEmptyTranslatedTitleFallbackOnId(self): + p = self._makeOne(id=self.id()) + self.assertEqual(self.id(), p.getTranslatedTitle()) + + def testEmptyCompactTitleFallbackOnId(self): + p = self._makeOne(id=self.id()) + self.assertEqual(self.id(), p.getCompactTitle()) + + def testEmptyCompactTranslatedTitleFallbackOnId(self): + p = self._makeOne(id=self.id()) + self.assertEqual(self.id(), p.getCompactTranslatedTitle()) + + def testEmptyTitleFallbackOnReference(self): + p = self._makeOne(reference='reference') + self.assertEqual('reference', p.getTitle()) + + def testEmptyTranslatedTitleFallbackOnReference(self): + p = self._makeOne(reference='reference') + self.assertEqual('reference', p.getTranslatedTitle()) + + def testEmptyCompactTitleFallbackOnReference(self): + p = self._makeOne(reference='reference') + self.assertEqual('reference', p.getCompactTitle()) + + def testEmptyCompactTranslatedTitleFallbackOnReference(self): + p = self._makeOne(reference='reference') + self.assertEqual('reference', p.getCompactTranslatedTitle()) def testSetFirstName(self): p = self._makeOne() @@ -112,6 +140,22 @@ class TestPerson(ERP5TypeTestCase): p.setMiddleName('middle') self.assertEqual('first middle last', p.getTitle()) + def testTranslatedTitleFromFirstLastName(self): + p = self._makeOne(id='person') + p.setFirstName('first') + p.setLastName('last') + self.assertEqual('first last', p.getTranslatedTitle()) + p.setMiddleName('middle') + self.assertEqual('first middle last', p.getTranslatedTitle()) + + def testCompactTranslatedTitleFromFirstLastName(self): + p = self._makeOne(id='person') + p.setFirstName('first') + p.setLastName('last') + self.assertEqual('first last', p.getCompactTranslatedTitle()) + p.setMiddleName('middle') + self.assertEqual('first middle last', p.getCompactTranslatedTitle()) + def testEditFirstNameLastName(self): # using 'edit' method p = self._makeOne(id='person')