From 662a9cb8ef3e039eb395e4a8a9131bd1d12d75ce Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 13 Jan 2012 15:35:31 +0100 Subject: [PATCH 1/3] remove obsolete tag from standard concept template --- browser/concept_macros.pt | 1 - 1 file changed, 1 deletion(-) diff --git a/browser/concept_macros.pt b/browser/concept_macros.pt index 1288938..dd5e50b 100644 --- a/browser/concept_macros.pt +++ b/browser/concept_macros.pt @@ -28,7 +28,6 @@

- Title From 57bcdcfb21e0223ca85ddddcbcfc090a1a136fcd Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 14 Jan 2012 11:49:19 +0100 Subject: [PATCH 2/3] use instance for getting vocabulary items: allows the usage of nodeView.context that also works when creating new objects --- table.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/table.py b/table.py index 4478d84..ce9fcff 100644 --- a/table.py +++ b/table.py @@ -110,8 +110,9 @@ class DataTableSourceBinder(object): def __init__(self, tableName): self.tableName = tableName - def __call__(self, context): - context = baseObject(context) + def __call__(self, instance): + #context = baseObject(instance.context) + context = instance.view.nodeView.context dt = context.getLoopsRoot().getConceptManager()[self.tableName] return DataTableSourceList(adapted(dt)) From 0654140f518e290063b573046609dd0cb688d7e5 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 14 Jan 2012 11:50:46 +0100 Subject: [PATCH 3/3] extend features of the subtype predicate: control predicates used for connecting concepts of the types that have a subtype relation --- concept.py | 25 ++++++++++++++++++++----- configure.zcml | 9 +++++++++ external/element.py | 19 +++++++++++++++---- interfaces.py | 14 +++++++++++--- predicate.py | 21 ++++++++++++++++----- tests/setup.py | 5 ++++- 6 files changed, 75 insertions(+), 18 deletions(-) diff --git a/concept.py b/concept.py index 9a27490..d063d46 100644 --- a/concept.py +++ b/concept.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2011 Helmut Merz helmutm@cy55.de +# Copyright (c) 2012 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,8 +18,6 @@ """ Definition of the Concept and related classes. - -$Id$ """ from zope import component, schema @@ -210,9 +208,26 @@ class Concept(Contained, Persistent): return [r.first for r in self.getParentRelations(predicates, sort=sort, noSecurityCheck=noSecurityCheck)] - def assignChild(self, concept, predicate=None, order=0, relevance=1.0): + def checkPredicate(self, child, predicate=None): + cm = self.getConceptManager() + defaultPredicate = cm.getDefaultPredicate() if predicate is None: - predicate = self.getConceptManager().getDefaultPredicate() + predicate = defaultPredicate + if predicate == defaultPredicate: + subtypePred = cm.get('issubtype') + if subtypePred is not None: + subtypeRels = list(self.conceptType.getChildRelations( + [subtypePred], child.conceptType)) + if subtypeRels: + from loops.predicate import adaptedRelation + rel = adaptedRelation(subtypeRels[0]) + predName = rel.usePredicate + if predName and predName != u'standard': + predicate = cm[predName] + return predicate + + def assignChild(self, concept, predicate=None, order=0, relevance=1.0): + predicate = self.checkPredicate(concept, predicate) registry = component.getUtility(IRelationRegistry) rel = ConceptRelation(self, concept, predicate) if order != 0: diff --git a/configure.zcml b/configure.zcml index 908bb47..1692294 100644 --- a/configure.zcml +++ b/configure.zcml @@ -263,6 +263,15 @@ set_schema="loops.interfaces.IPredicate" /> + + + + + +