From 7b017cfccaa1361e48452a4086c0beca91a583ad Mon Sep 17 00:00:00 2001 From: helmutm Date: Mon, 2 Aug 2010 08:05:44 +0000 Subject: [PATCH] Person: allow assignment with specific predicate to workspace git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3930 fd906abe-77d9-0310-91a1-e0d9ade77398 --- browser/form.py | 10 ++++++++-- browser/form_macros.pt | 18 +++++++++++++++++- organize/browser/configure.zcml | 11 +++++++++-- organize/browser/party.py | 15 ++++++++++++++- 4 files changed, 48 insertions(+), 6 deletions(-) diff --git a/browser/form.py b/browser/form.py index 1e946ea..726ef60 100644 --- a/browser/form.py +++ b/browser/form.py @@ -525,6 +525,7 @@ class EditObject(FormController, I18NView): instance = self.instance formState = instance.applyTemplate(data=form, fieldHandlers=self.fieldHandlers) self.selected = [] + self.predicates = [] self.old = [] stateKeys = [] for k in form.keys(): @@ -578,6 +579,8 @@ class EditObject(FormController, I18NView): self.old.append(v) elif fieldName == 'selected' and v not in self.selected: self.selected.append(v) + elif fieldName == 'predicates' and v not in self.predicates: + self.predicates.append(v) def collectAutoConcepts(self): pass @@ -589,11 +592,14 @@ class EditObject(FormController, I18NView): concept = util.getObjectForUid(c) predicate = util.getObjectForUid(p) self.deassignConcept(obj, concept, [predicate]) - for v in self.selected: + for idx, v in enumerate(self.selected): if v != 'none' and v not in self.old: c, p = v.split(':') concept = util.getObjectForUid(c) - predicate = util.getObjectForUid(p) + if len(self.predicates) > idx: # predefined types + predicates + predicate = self.view.conceptManager[self.predicates[idx]] + else: + predicate = util.getObjectForUid(p) exists = self.getConceptRelations(obj, [p], concept) if not exists: self.assignConcept(obj, concept, predicate) diff --git a/browser/form_macros.pt b/browser/form_macros.pt index 8b596ca..e15de5b 100644 --- a/browser/form_macros.pt +++ b/browser/form_macros.pt @@ -133,7 +133,8 @@ Type: Concept: - + + + Predicate: + + + @@ -152,6 +165,9 @@ tal:attributes="value relation/uidToken;" /> Something (Topic) + + [] + diff --git a/organize/browser/configure.zcml b/organize/browser/configure.zcml index 35fe923..4970017 100644 --- a/organize/browser/configure.zcml +++ b/organize/browser/configure.zcml @@ -75,6 +75,14 @@ class="loops.organize.browser.event.CalendarInfo" permission="zope.View" /> + + + + + permission="zope.ManageServices" />