diff --git a/CHANGES.rst b/CHANGES.rst index c59518a..58901da 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,9 @@ Changelog Changed functionality: +- Before version 2.0, in many parts of the code, a variable called user + was actually storing the userid string. + This is not happening anymore. - The `workspace_groups` PAS plugin now stores groups in the same way as normal Plone groups, rather than doing catalog queries to find workspaces. This performs much better even without enabling caching for the plugin. diff --git a/src/collective/workspace/browser.py b/src/collective/workspace/browser.py index f7e6746..eb3f25d 100644 --- a/src/collective/workspace/browser.py +++ b/src/collective/workspace/browser.py @@ -1,14 +1,14 @@ from AccessControl import getSecurityManager -from Products.statusmessages.interfaces import IStatusMessage +from collections import namedtuple from collective.workspace.interfaces import _ from collective.workspace.interfaces import IRosterView from collective.workspace.interfaces import IWorkspace -from collections import namedtuple from plone import api from plone.autoform.base import AutoFields from plone.autoform.form import AutoExtensibleForm from plone.z3cform import z2 from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile +from Products.statusmessages.interfaces import IStatusMessage from z3c.form import button from z3c.form.form import DisplayForm from z3c.form.form import EditForm @@ -16,6 +16,7 @@ from zope.cachedescriptors.property import Lazy as lazy_property from zope.interface import implementer from zope.publisher.interfaces.browser import IPublishTraverse + import transaction @@ -100,7 +101,7 @@ def updateFields(self): super(TeamMemberEditForm, self).updateFields() # don't show the user field if we are editing if self.user_id: - del self.fields['user'] + del self.fields['userid'] @lazy_property def ignoreContext(self): diff --git a/src/collective/workspace/membership.py b/src/collective/workspace/membership.py index ea0da16..8374cc3 100644 --- a/src/collective/workspace/membership.py +++ b/src/collective/workspace/membership.py @@ -3,8 +3,8 @@ from collective.workspace.events import TeamMemberRemovedEvent from collective.workspace.interfaces import _ from collective.workspace.interfaces import IWorkspace -from collective.workspace.pas import get_workspace_groups_plugin from collective.workspace.pas import add_group +from collective.workspace.pas import get_workspace_groups_plugin from collective.workspace.vocabs import UsersSource from copy import deepcopy from plone.autoform import directives as form @@ -22,8 +22,8 @@ class ITeamMembership(model.Schema): """Schema for one person's membership in a team.""" - form.widget(user=AutocompleteFieldWidget) - user = schema.Choice( + form.widget(userid=AutocompleteFieldWidget) + userid = schema.Choice( title=_(u'User'), source=UsersSource, ) @@ -85,16 +85,19 @@ def _update_groups(self, old_groups, new_groups, add_members=True): for group_name in (new_groups - old_groups): group_id = '{}:{}'.format(group_name.encode('utf8'), uid) try: - workspace_groups.addPrincipalToGroup(self.user, group_id) + workspace_groups.addPrincipalToGroup(self.userid, group_id) except KeyError: # group doesn't exist title = '{}: {}'.format( group_name.encode('utf8'), context.Title()) add_group(group_id, title) - workspace_groups.addPrincipalToGroup(self.user, group_id) + workspace_groups.addPrincipalToGroup(self.userid, group_id) for group_name in (old_groups - new_groups): group_id = '{}:{}'.format(group_name.encode('utf8'), uid) try: - workspace_groups.removePrincipalFromGroup(self.user, group_id) + workspace_groups.removePrincipalFromGroup( + self.userid, + group_id, + ) except KeyError: # group doesn't exist pass @@ -107,7 +110,7 @@ def groups(self): def update(self, data): old = self.__dict__.copy() user_changed = False - if 'user' in data and old['user'] != data['user']: + if 'userid' in data and old['userid'] != data['userid']: # User is changing, so remove the old user from groups. user_changed = True self._update_groups(old['groups'], set()) @@ -117,10 +120,10 @@ def update(self, data): workspace = self.workspace if user_changed: # User changed; remove old entry in _team - del workspace.context._team[old['user']] + del workspace.context._team[old['userid']] # Add new user to groups self._update_groups(set(), self.groups) - workspace.context._team[self.user] = self.__dict__ + workspace.context._team[self.userid] = self.__dict__ # update counters for name, func in workspace.counters: @@ -159,7 +162,7 @@ def remove_from_team(self): for name, func in workspace.counters: if func(self.__dict__): workspace.context._counters[name].change(-1) - del self.workspace.members[self.user] + del self.workspace.members[self.userid] self._update_groups(self.groups, set(), add_members=False) self.handle_removed() notify(TeamMemberRemovedEvent(self.workspace.context, self)) diff --git a/src/collective/workspace/templates/team_roster_row.pt b/src/collective/workspace/templates/team_roster_row.pt index 21d38f1..4731548 100644 --- a/src/collective/workspace/templates/team_roster_row.pt +++ b/src/collective/workspace/templates/team_roster_row.pt @@ -5,7 +5,7 @@ i18n:domain="collective.workspace">