From 89dcb9943a363006ca08c74c5a4a37f99b2268dc Mon Sep 17 00:00:00 2001 From: helmutm Date: Sun, 15 Aug 2010 09:28:09 +0000 Subject: [PATCH] provide editing of relation properties (order, relevance) in management interface; add method for copying an external file to an archive location git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3957 fd906abe-77d9-0310-91a1-e0d9ade77398 --- README.txt | 12 +++++++----- concept.py | 4 ++-- resource.py | 16 ++++++++++++---- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/README.txt b/README.txt index 9211478..dd88c3f 100755 --- a/README.txt +++ b/README.txt @@ -165,9 +165,10 @@ underlying context object: >>> sorted(c.title for c in cc1.getChildren()) [u'Zope 3', u'loops for Zope 3'] - >>> view = ConceptConfigureView(cc1, - ... TestRequest(action='remove', qualifier='children', - ... tokens=['.loops/concepts/cc2:.loops/concepts/standard'])) + >>> input = {'action': 'remove', 'qualifier': 'children', + ... 'form.button.submit': 'Remove Chiildren', + ... 'tokens': ['.loops/concepts/cc2:.loops/concepts/standard']} + >>> view = ConceptConfigureView(cc1, TestRequest(form=input)) >>> view.update() True >>> sorted(c.title for c in cc1.getChildren()) @@ -278,8 +279,9 @@ from concepts to resources: >>> len(cc1.getResources()) 1 - >>> form = dict(action='remove', qualifier='resources', - ... tokens=['.loops/resources/doc1:.loops/concepts/standard']) + >>> form = {'action': 'remove', 'qualifier': 'resources', + ... 'form.button.submit': 'Remove Resources', + ... 'tokens': ['.loops/resources/doc1:.loops/concepts/standard']} >>> view = ConceptConfigureView(cc1, TestRequest(form=form)) >>> [getName(r.context) for r in view.resources()] [u'doc1'] diff --git a/concept.py b/concept.py index 1897433..efc4654 100644 --- a/concept.py +++ b/concept.py @@ -253,8 +253,8 @@ class Concept(Contained, Persistent): def getResourceRelations(self, predicates=None, resource=None, sort='default', noSecurityCheck=False): - #if resource is not None: - # resource = getMaster(resource) + if resource is not None: + resource = getMaster(resource) predicates = predicates is None and ['*'] or predicates relationships = [ResourceRelation(self, None, p) for p in predicates] if sort == 'default': diff --git a/resource.py b/resource.py index e19dcb6..b221e33 100644 --- a/resource.py +++ b/resource.py @@ -388,8 +388,7 @@ class ExternalFileAdapter(FileAdapter): def getData(self): if self.storageName in ('unknown', None): # object not set up yet return '' - storage = component.getUtility(IExternalStorage, name=self.storageName) - return storage.getData(self.externalAddress, params=self.storageParams) + return self.storage.getData(self.externalAddress, params=self.storageParams) data = property(getData, setData) @@ -397,9 +396,18 @@ class ExternalFileAdapter(FileAdapter): def size(self): if self.storageName in ('unknown', None): # object not set up yet return '' - storage = component.getUtility(IExternalStorage, name=self.storageName) - return storage.getSize(self.externalAddress, params=self.storageParams) + return self.storage.getSize(self.externalAddress, params=self.storageParams) + @Lazy + def storage(self): + return component.getUtility(IExternalStorage, name=self.storageName) + + def copyDataFile(self, targetParams, targetAddress=None): + storageParams = self.storageParams + externalAddress = self.externalAddress + self.storage.copyDataFile(self.externalAddress, self.storageParams, + targetAddress or self.externalAddress, + targetParams) class DocumentAdapter(ResourceAdapterBase): """ Common base class for all resource types with a text-like