From ab698cbde16b08f09f77b3402eacd7da175ae707 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Thu, 19 Apr 2012 07:49:42 +0200 Subject: [PATCH 1/3] let DialogAction work on current version to allow editing of previous versions --- browser/action.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/action.py b/browser/action.py index a964fe2..68176d9 100644 --- a/browser/action.py +++ b/browser/action.py @@ -81,7 +81,7 @@ class DialogAction(Action): @Lazy def onClick(self): - urlParams = dict(dialog=self.dialogName) + urlParams = dict(dialog=self.dialogName, version='this') if self.qualifier: urlParams['qualifier'] = self.qualifier if self.typeToken: From 3a6b61f71c3591feabdc1ab22e229cb322005b76 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 25 Apr 2012 13:32:08 +0200 Subject: [PATCH 2/3] make doctest system-independent --- integrator/README.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integrator/README.txt b/integrator/README.txt index f24fdbb..0d2e225 100644 --- a/integrator/README.txt +++ b/integrator/README.txt @@ -189,7 +189,7 @@ to the external system: >>> aMail.data u'

Blogging from ...
\n' >>> aMail.externalAddress - u'imap://jim@merz12/20081208171745.e4ce2xm96cco80cg@cy55.de' + u'imap://jim@.../20081208171745.e4ce2xm96cco80cg@cy55.de' Uploading Resources with HTTP PUT Requests From c74af2b96056ef36b00a5ba4d6e6b799443383e6 Mon Sep 17 00:00:00 2001 From: hplattner Date: Wed, 25 Apr 2012 13:52:41 +0200 Subject: [PATCH 3/3] fix: integration doctest/ MemberRegistrationManager groups param --- integrator/README.txt | 2 +- organize/member.py | 39 +++++++++++++++++++++++++++++++-------- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/integrator/README.txt b/integrator/README.txt index 0d2e225..4d84425 100644 --- a/integrator/README.txt +++ b/integrator/README.txt @@ -231,7 +231,7 @@ Extracting Document Properties from MS Office Files >>> path = os.path.join(dataDir, 'office') >>> fn = os.path.join(path, 'example.docx') >>> os.path.getsize(fn) - 20337L + 20337... >>> officeFile = addAndConfigureObject(resources, Resource, 'test.docx', ... title=u'Example Word File', resourceType=tOfficeFile, diff --git a/organize/member.py b/organize/member.py index 37c5045..73f3a5c 100644 --- a/organize/member.py +++ b/organize/member.py @@ -65,20 +65,36 @@ class MemberRegistrationManager(object): self.context = context def register(self, userId, password, lastName, firstName=u'', - groups=[], useExisting=False, **kw): + groups=[], useExisting=False, pfName=None, **kw): concepts = self.context.getConceptManager() personType = adapted(concepts[self.person_typeName]) options = IOptions(personType) - pfName = options(self.principalfolder_key, - (self.default_principalfolder,))[0] - # step 1: create an internal principal in the loops principal folder: + if pfName is None: + pfName = options(self.principalfolder_key, + (self.default_principalfolder,))[0] + self.createPrincipal(pfName, userId, password, lastName, firstName) + if len(groups)==0: + groups = options(self.groups_key, ()) + self.setGroupsForPrincipal(pfName, userId, groups=groups) + self.createPersonForPrincipal(pfName, userId, lastName, firstName, + useExisting, **kw) + + def createPrincipal(self, pfName, userId, password, lastName, + firstName=u'', groups=[], useExisting=False, + overwrite=False, **kw): pFolder = getPrincipalFolder(self.context, pfName) if IPersonBasedAuthenticator.providedBy(pFolder): pFolder.setPassword(userId, password) else: title = firstName and ' '.join((firstName, lastName)) or lastName principal = InternalPrincipal(userId, password, title) - if useExisting: + if overwrite: + if userId in pFolder: + principal = pFolder[userId] + principal.password = password + else: + pFolder[userId] = principal + elif useExisting: if userId not in pFolder: pFolder[userId] = principal else: @@ -86,8 +102,9 @@ class MemberRegistrationManager(object): return dict(fieldName='loginName', error='duplicate_loginname') else: pFolder[userId] = principal - # step 2 (optional): assign to group(s) - groups = options(self.groups_key, ()) + + def setGroupsForPrincipal(self, pfName, userId, groups=[]): + pFolder = getPrincipalFolder(self.context, pfName) for groupInfo in groups: names = groupInfo.split(':') if len(names) == 1: @@ -101,7 +118,13 @@ class MemberRegistrationManager(object): members = list(group.principals) members.append(pFolder.prefix + userId) group.principals = members - # step 3: create a corresponding person concept: + + def createPersonForPrincipal(self, pfName, userId, lastName, firstName=u'', + useExisting=False, **kw): + concepts = self.context.getConceptManager() + personType = adapted(concepts[self.person_typeName]) + pFolder = getPrincipalFolder(self.context, pfName) + title = firstName and ' '.join((firstName, lastName)) or lastName name = baseId = 'person.' + userId if useExisting and name in concepts: person = concepts[name]