Skip to content

Commit

Permalink
Add new enterprise number field for organization content type
Browse files Browse the repository at this point in the history
  • Loading branch information
laulaz committed Jun 2, 2020
1 parent a4e53a2 commit 83b18b0
Show file tree
Hide file tree
Showing 14 changed files with 87 additions and 2 deletions.
3 changes: 2 additions & 1 deletion CHANGES.rst
Expand Up @@ -4,7 +4,8 @@ Changelog
1.33 (unreleased)
-----------------

- Nothing changed yet.
- Add new `enterprise number` field for organization content type
[laulaz]


1.32 (2020-05-08)
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTORS.rst
Expand Up @@ -5,4 +5,4 @@
- Frédéric Peters, Entr'ouvert
- Thomas Desvenain, Ecreall
- Leonardo J. Caballero G., Plone Venezuela

- Laurent Lasudry, Affinitic
Expand Up @@ -32,4 +32,9 @@
<span class="note" tal:content="structure view/activity/output" />
</div>

<div id="enterprise-number" class="field" tal:condition="context/enterprise_number">
<label><tal:block i18n:translate="">Enterprise (or VAT) number</tal:block>:</label>
<span class="note" tal:content="context/enterprise_number" />
</div>

</html>
18 changes: 18 additions & 0 deletions src/collective/contact/core/content/organization.py
Expand Up @@ -20,6 +20,18 @@
from zope.intid.interfaces import IIntIds


class InvalidEnterpriseNumber(schema.ValidationError):
"""Exception for invalid enterprise number"""
__doc__ = _(u"Enterprise number must contain only letters and numbers")


def validateEnterpriseNumber(value):
"""Enterprise number validator"""
if not value.isalnum():
raise InvalidEnterpriseNumber(value)
return True


class IOrganization(model.Schema, IContactContent):
"""Interface for Organization content type"""

Expand All @@ -38,6 +50,12 @@ class IOrganization(model.Schema, IContactContent):
required=False,
)

enterprise_number = schema.TextLine(
title=_(u"Enterprise (or VAT) number"),
required=False,
constraint=validateEnterpriseNumber,
)

def get_organizations_chain(self):
"""Returns the list of organizations and sub-organizations in this organization
e.g. for HR service in Division Bar in Organization Foo :
Expand Down
3 changes: 3 additions & 0 deletions src/collective/contact/core/indexers.py
Expand Up @@ -50,6 +50,9 @@ def organization_searchable_text(organization):

words += organization.get_organizations_titles()

if organization.enterprise_number is not None:
words.append(organization.enterprise_number)

email = IContactDetails(organization).email
if email:
words.append(email)
Expand Down
Expand Up @@ -144,6 +144,15 @@ msgstr ""
msgid "End date"
msgstr ""

#: ../browser/basefields/templates/organization.pt:36
#: ../content/organization.py:55
msgid "Enterprise (or VAT) number"
msgstr ""

#: ../content/organization.py:26
msgid "Enterprise number must contain only letters and numbers"
msgstr ""

#: ../behaviors.py:161
msgid "Fax"
msgstr ""
Expand Down
Expand Up @@ -143,6 +143,15 @@ msgstr "Email"
msgid "End date"
msgstr "Enddatum"

#: ../browser/basefields/templates/organization.pt:36
#: ../content/organization.py:55
msgid "Enterprise (or VAT) number"
msgstr ""

#: ../content/organization.py:26
msgid "Enterprise number must contain only letters and numbers"
msgstr ""

#: ../behaviors.py:161
msgid "Fax"
msgstr "Fax"
Expand Down
Expand Up @@ -152,6 +152,15 @@ msgstr "Correo electrónico"
msgid "End date"
msgstr "Date de culminación"

#: ../browser/basefields/templates/organization.pt:36
#: ../content/organization.py:55
msgid "Enterprise (or VAT) number"
msgstr ""

#: ../content/organization.py:26
msgid "Enterprise number must contain only letters and numbers"
msgstr ""

#: ../behaviors.py:161
msgid "Fax"
msgstr "Fax"
Expand Down
Expand Up @@ -144,6 +144,15 @@ msgstr "Courriel "
msgid "End date"
msgstr "Date de fin "

#: ../browser/basefields/templates/organization.pt:36
#: ../content/organization.py:55
msgid "Enterprise (or VAT) number"
msgstr "Numéro d'entreprise (ou de TVA)"

#: ../content/organization.py:26
msgid "Enterprise number must contain only letters and numbers"
msgstr "Le numéro d'entreprise ne peut contenir que des lettres et des chiffres"

#: ../behaviors.py:161
msgid "Fax"
msgstr "Fax"
Expand Down
Expand Up @@ -146,6 +146,15 @@ msgstr "E-mail"
msgid "End date"
msgstr "Data fine"

#: ../browser/basefields/templates/organization.pt:36
#: ../content/organization.py:55
msgid "Enterprise (or VAT) number"
msgstr ""

#: ../content/organization.py:26
msgid "Enterprise number must contain only letters and numbers"
msgstr ""

#: ../behaviors.py:161
msgid "Fax"
msgstr "Fax"
Expand Down
Expand Up @@ -143,6 +143,15 @@ msgstr "Email"
msgid "End date"
msgstr "Končni datum"

#: ../browser/basefields/templates/organization.pt:36
#: ../content/organization.py:55
msgid "Enterprise (or VAT) number"
msgstr ""

#: ../content/organization.py:26
msgid "Enterprise number must contain only letters and numbers"
msgstr ""

#: ../behaviors.py:161
msgid "Fax"
msgstr "Telefaks"
Expand Down
1 change: 1 addition & 0 deletions src/collective/contact/core/setuphandlers.py
Expand Up @@ -166,6 +166,7 @@ def create_test_contact_data(portal):
'number': u'1',
'zip_code': u'75008',
'country': u'France',
'enterprise_number': 'BE123456789',
}
mydirectory.invokeFactory('organization', 'armeedeterre', **params)
armeedeterre = mydirectory['armeedeterre']
Expand Down
1 change: 1 addition & 0 deletions src/collective/contact/core/tests/test_content_types.py
Expand Up @@ -88,6 +88,7 @@ def test_organization(self):
armeedeterre = self.armeedeterre
self.assertIn('armeedeterre', self.mydirectory)
self.assertEqual(armeedeterre.Title(), "Armée de terre")
self.assertEqual(armeedeterre.enterprise_number, "BE123456789")
self.assertIn('corpsa', armeedeterre)
self.assertIn('corpsb', armeedeterre)
self.assertIn('divisionalpha', self.corpsa)
Expand Down
2 changes: 2 additions & 0 deletions src/collective/contact/core/tests/test_search.py
Expand Up @@ -101,3 +101,5 @@ def test_searchable_fields(self):
SearchableText='charles.de.gaulle@private.com')
self.assertEqual(len(restults), 1)
self.assertEqual(restults[0].getPath(), '/plone/mydirectory/degaulle')
results = catalog.searchResults(SearchableText='BE123456789')
self.assertEqual(len(results), 1)

0 comments on commit 83b18b0

Please sign in to comment.