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:
parent
8e45d6a9fd
commit
ba2d7a3f7c
5 changed files with 29 additions and 8 deletions
|
@ -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():
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
a[href]:hover {
|
||||
text-decoration: none;
|
||||
color: #c00048;
|
||||
color: #803000;
|
||||
}
|
||||
|
||||
pre {
|
||||
|
|
|
@ -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"
|
||||
|
|
12
resource.py
12
resource.py
|
@ -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'):
|
||||
|
|
5
type.py
5
type.py
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue