Skip to content

Commit

Permalink
Merge pull request #37 from seantis/issue_29
Browse files Browse the repository at this point in the history
Issue 29
  • Loading branch information
msom committed Feb 3, 2015
2 parents 7db4ce1 + b8edda5 commit c1c5ffb
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 18 deletions.
3 changes: 3 additions & 0 deletions docs/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ Changelog
- Import/export translated titles of vocabularies instead of values. Closes #36.
[msom]

- Use unicode for selectable fields. Fixes #29.
[msom]

0.26 (2015-01-21)
~~~~~~~~~~~~~~~~~

Expand Down
7 changes: 6 additions & 1 deletion seantis/people/behaviors/person.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,13 @@ def organizations(self, org_filter=None):

# organizations are defined in the general catalog, not the people
# catalog, which only contains people, therefore use 'portal_catalog'
titles = []
catalog = api.portal.get_tool('portal_catalog')
titles = (catalog(UID=uid)[0].Title for uid in organizations)
for uid in organizations:
title = catalog(UID=uid)[0].Title
if isinstance(title, str):
title = title.decode('utf-8')
titles.append(title)

return sorted(titles, key=tools.unicode_collate_sortkey())

Expand Down
5 changes: 3 additions & 2 deletions seantis/people/browser/list.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,10 @@ def column_values(self, column):
continue

if isinstance(value, list):
map(unique_values.add, value)
for item in value:
unique_values.add(item.encode('utf-8'))
else:
unique_values.add(value)
unique_values.add(value.encode('utf-8'))

return sorted(unique_values, key=tools.unicode_collate_sortkey())

Expand Down
3 changes: 1 addition & 2 deletions seantis/people/content/list.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,7 @@ def people(
if isinstance(filter, LetterFilter):
keyword_index = 'first_letter'

# the catalog cannot deal with unicode filter values
query[keyword_index] = {'query': filter.value.encode('utf-8')}
query[keyword_index] = {'query': filter.value}

if unrestricted_search:
return catalog.unrestrictedSearchResults(query)
Expand Down
4 changes: 2 additions & 2 deletions seantis/people/profiles/default/metadata.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<metadata>
<version>1009</version>
<version>1010</version>
<dependencies>
<dependency>profile-plone.app.dexterity:default</dependency>
<dependency>profile-collective.js.underscore:default</dependency>
Expand All @@ -8,4 +8,4 @@
<dependency>profile-plone.formwidget.autocomplete:default</dependency>
<dependency>profile-plone.app.relationfield:default</dependency>
</dependencies>
</metadata>
</metadata>
9 changes: 5 additions & 4 deletions seantis/people/tests/test_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,8 @@ def test_list_view_filter(self):
klass='seantis.people.types.base.PersonBase'
).id

countries = ['Österreich', 'Germany', 'Switzerland']
countries = [u'Österreich', u'Germany', u'Switzerland']
enc_countries = [c.encode('utf-8') for c in countries]

for c in countries:
api.content.create(
Expand All @@ -343,19 +344,19 @@ def test_list_view_filter(self):

self.assertEqual(len(view.people()), 3)
self.assertEqual(len(columns), 1)
self.assertEqual(view.column_values(columns[0]), enc_countries)
self.assertEqual(view.selected_column_value(columns[0]), '__all__')
self.assertEqual(view.column_values(columns[0]), countries)

view.request['filter-country'] = 'Switzerland'

self.assertEqual(len(view.people()), 1)
self.assertEqual(view.column_values(columns[0]), countries)
self.assertEqual(view.column_values(columns[0]), enc_countries)
self.assertEqual(view.selected_column_value(columns[0]), 'Switzerland')

view.request['filter-country'] = 'Österreich'

self.assertEqual(len(view.people()), 1)
self.assertEqual(view.column_values(columns[0]), countries)
self.assertEqual(view.column_values(columns[0]), enc_countries)
self.assertEqual(view.selected_column_value(columns[0]), 'Österreich')

def test_list_view_compound_column_organizations(self):
Expand Down
13 changes: 13 additions & 0 deletions seantis/people/upgrades.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,16 @@ def introduce_custom_catalog(context, profiles=None):
catalog.refreshCatalog(clear=1)
finally:
setSite(old_site)


def reindex_selectable_fields(context):
# An unknown number of properties have change their type (from str to
# unicode), we need to clear the catalogs first to avoid unicode exceptions
# and rebuild it then to update the related indexes
catalog = api.portal.get_tool('portal_catalog')
catalog.manage_catalogClear()
catalog.manage_catalogRebuild()

catalog = api.portal.get_tool(catalog_id)
catalog.manage_catalogClear()
catalog.manage_catalogRebuild()
21 changes: 14 additions & 7 deletions seantis/people/upgrades.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
xmlns="http://namespaces.zope.org/zope"
xmlns:genericsetup="http://namespaces.zope.org/genericsetup">

<genericsetup:upgradeStep
<genericsetup:upgradeStep
title="Import new 'first_letter' index."
source="1000" destination="1001"
profile="seantis.people:default"
handler=".setuphandler.add_catalog_indexes"
/>

<genericsetup:upgradeStep
<genericsetup:upgradeStep
title="Import new 'membership_person' index."
source="1001" destination="1002"
profile="seantis.people:default"
Expand Down Expand Up @@ -37,34 +37,41 @@
handler=".upgrades.upgrade_membership_title"
/>

<genericsetup:upgradeStep
<genericsetup:upgradeStep
title="Import new 'is_active_person' index."
source="1005" destination="1006"
profile="seantis.people:default"
handler=".setuphandler.add_catalog_indexes"
/>

<genericsetup:upgradeStep
<genericsetup:upgradeStep
title="Adds export action."
source="1006" destination="1007"
profile="seantis.people:default"
handler=".upgrades.update_people_list"
/>

<genericsetup:upgradeStep
<genericsetup:upgradeStep
title="Introduces custom catalog."
source="1007" destination="1008"
profile="seantis.people:default"
handler=".upgrades.introduce_custom_catalog"
/>

<genericsetup:upgradeStep
<genericsetup:upgradeStep
title="Updates global allow."
source="1008" destination="1009"
profile="seantis.people:default"
handler=".upgrades.update_people_list"
/>

<genericsetup:upgradeStep
title="Updates global allow."
source="1009" destination="1010"
profile="seantis.people:default"
handler=".upgrades.reindex_selectable_fields"
/>

<!-- PHZ Upgrades -->
<genericsetup:upgradeStep
title="Remove import action from detail view."
Expand All @@ -88,4 +95,4 @@
handler=".upgrades.upgrade_standard_type_info"
/>

</configure>
</configure>

0 comments on commit c1c5ffb

Please sign in to comment.