ExternalFile stuff basically working

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1547 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2007-01-11 15:44:24 +00:00
parent 8e45d6a9fd
commit ba2d7a3f7c
5 changed files with 29 additions and 8 deletions

View file

@ -172,7 +172,7 @@ class EditObject(FormController):
form = self.request.form
ti = IType(obj).typeInterface
if ti is not None:
adapted = IType(obj).typeInterface(obj)
adapted = ti(obj)
else:
adapted = obj
for k in form.keys():

View file

@ -7,7 +7,7 @@
a[href]:hover {
text-decoration: none;
color: #c00048;
color: #803000;
}
pre {

View file

@ -319,6 +319,15 @@
set_schema="loops.interfaces.IFile" />
</class>
<adapter factory="loops.resource.ExternalFileAdapter" trusted="True"
provides="loops.interfaces.IExternalFile" />
<class class="loops.resource.ExternalFileAdapter">
<require permission="zope.View"
interface="loops.interfaces.IFile" />
<require permission="zope.ManageContent"
set_schema="loops.interfaces.IFile" />
</class>
<adapter factory="loops.resource.NoteAdapter" trusted="True" />
<class class="loops.resource.NoteAdapter">
<require permission="zope.View"
@ -345,6 +354,13 @@
name="application/pdf"
factory="cybertools.text.pdf.PdfTransform" />
<!-- utilities -->
<utility
factory="cybertools.storage.filesystem.instanceVarSubdirectoryStorage"
name="varsubdir"
/>
<vocabulary
factory="loops.concept.ConceptTypeSourceList"
name="loops.conceptTypeSource"

View file

@ -48,7 +48,7 @@ from cybertools.text.interfaces import ITextTransform
from cybertools.typology.interfaces import IType, ITypeManager
from interfaces import IBaseResource, IResource
from interfaces import IFile, INote
from interfaces import IFile, IExternalFile, INote
from interfaces import IDocument, ITextDocument, IDocumentSchema, IDocumentView
from interfaces import IMediaAsset, IMediaAssetView
from interfaces import IResourceManager, IResourceManagerContained
@ -212,6 +212,8 @@ class FileAdapter(ResourceAdapterBase):
class ExternalFileAdapter(FileAdapter):
implements(IExternalFile)
@Lazy
def externalAddress(self):
# or is this an editable attribute?
@ -229,14 +231,15 @@ class ExternalFileAdapter(FileAdapter):
@Lazy
def storageParams(self):
return self.options.get('storage_parameters')
params = self.options.get('storage_parameters') or 'extfiles'
return dict(subdirectory=params)
def setData(self, data):
storage = component.getUtility(IExternalStorage, name=self.storageName)
storage.setData(self.externalAddress, data, params=self.storageParams)
def getData(self):
storage = component.getUtility(IExternalStorage)
storage = component.getUtility(IExternalStorage, name=self.storageName)
return storage.getData(self.externalAddress, params=self.storageParams)
data = property(getData, setData)
@ -319,7 +322,8 @@ class IndexAttributes(object):
if transform is not None:
rfa = component.queryAdapter(IReadFile, adapted)
if rfa is None:
return transform(StringIO(context.data))
data = transform(StringIO(adapted.data))
return data
else:
return transform(rfa)
if not context.contentType.startswith('text'):

View file

@ -33,7 +33,8 @@ from cybertools.typology.type import BaseType, TypeManager
from cybertools.typology.interfaces import ITypeManager
from loops.interfaces import ILoopsObject, IConcept, IResource
from loops.interfaces import ITypeConcept
from loops.interfaces import IResourceAdapter, IFile, IImage, ITextDocument, INote
from loops.interfaces import IResourceAdapter, IFile, IExternalFile, IImage
from loops.interfaces import ITextDocument, INote
from loops.concept import Concept
from loops.resource import Resource, Document, MediaAsset
from loops.common import AdapterBase
@ -265,7 +266,7 @@ class TypeInterfaceSourceList(object):
implements(schema.interfaces.IIterableSource)
typeInterfaces = (ITypeConcept, IFile, ITextDocument, INote)
typeInterfaces = (ITypeConcept, IFile, IExternalFile, ITextDocument, INote)
def __init__(self, context):
self.context = context