more on export: handle legacy Document class
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2473 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
c47cc6d9b1
commit
d944aca0f5
6 changed files with 22 additions and 13 deletions
4
external/README.txt
vendored
4
external/README.txt
vendored
|
@ -127,5 +127,7 @@ Fin de Partie
|
|||
|
||||
>>> exportDir = os.path.join(dataDirectory, 'export')
|
||||
>>> for fname in os.listdir(exportDir):
|
||||
... os.unlink(os.path.join(exportDir, fname))
|
||||
... path = os.path.join(exportDir, fname)
|
||||
... if not os.path.isdir(path):
|
||||
... os.unlink(path)
|
||||
|
||||
|
|
12
external/base.py
vendored
12
external/base.py
vendored
|
@ -38,7 +38,8 @@ from cybertools.typology.interfaces import IType
|
|||
from loops.common import adapted
|
||||
from loops.external.interfaces import ILoader, IExtractor
|
||||
from loops.external.element import elementTypes
|
||||
from loops.interfaces import IConceptSchema
|
||||
from loops.interfaces import IConceptSchema, IResourceSchema
|
||||
from loops.resource import Document, MediaAsset
|
||||
from loops.setup import SetupManager
|
||||
|
||||
|
||||
|
@ -116,17 +117,18 @@ class Extractor(Base):
|
|||
def extractResources(self):
|
||||
elementClass = elementTypes['resource']
|
||||
for name, obj in self.resources.items():
|
||||
# TODO: handle ``data`` attribute...
|
||||
data = self.getObjectData(obj)
|
||||
data = self.getObjectData(obj, IResourceSchema)
|
||||
tp = getName(obj.resourceType)
|
||||
if isinstance(obj, Document): # backward compatibility
|
||||
tp = 'textdocument'
|
||||
element = elementClass(name, obj.title, tp, **data)
|
||||
element.processExport(self)
|
||||
yield element
|
||||
|
||||
def getObjectData(self, obj):
|
||||
def getObjectData(self, obj, defaultInterface=IConceptSchema):
|
||||
aObj = adapted(obj)
|
||||
schemaFactory = component.getAdapter(aObj, ISchemaFactory)
|
||||
ti = IType(obj).typeInterface or IConceptSchema
|
||||
ti = IType(obj).typeInterface or defaultInterface
|
||||
schema = schemaFactory(ti, manager=self) #, request=self.request)
|
||||
instance = IInstance(aObj)
|
||||
instance.template = schema
|
||||
|
|
4
external/element.py
vendored
4
external/element.py
vendored
|
@ -106,11 +106,13 @@ class ResourceElement(Element):
|
|||
|
||||
def processExport(self, extractor):
|
||||
content = self.pop('data', '')
|
||||
fileFlags = 'wb'
|
||||
if (self.get('contentType', '').startswith('text/')
|
||||
and isinstance(content, unicode)):
|
||||
content = content.encode('UTF-8')
|
||||
fileFlags = 'wt'
|
||||
dataPath = os.path.join(extractor.resourceDirectory, self['name'])
|
||||
f = open(dataPath, 'w')
|
||||
f = open(dataPath, fileFlags)
|
||||
f.write(content)
|
||||
f.close()
|
||||
|
||||
|
|
|
@ -290,7 +290,8 @@ class Document(Resource):
|
|||
def setData(self, data):
|
||||
self._data = data.replace('\r', '')
|
||||
self._size = len(data)
|
||||
def getData(self): return self._data
|
||||
def getData(self):
|
||||
return self._data
|
||||
data = property(getData, setData)
|
||||
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ class ResourceSchemaFactory(SchemaFactory):
|
|||
|
||||
def __call__(self, interface, **kw):
|
||||
schema = super(ResourceSchemaFactory, self).__call__(interface, **kw)
|
||||
#if 'data' in schema.fields.keys():
|
||||
schema.fields.data.height = 10
|
||||
if self.context.contentType == 'text/html':
|
||||
schema.fields.data.fieldType = 'html'
|
||||
|
|
11
util.py
11
util.py
|
@ -98,12 +98,13 @@ def getUidForObject(obj):
|
|||
|
||||
|
||||
def getVarDirectory(request=None):
|
||||
instanceHome = None
|
||||
varDir = None
|
||||
if request is not None:
|
||||
pub = request.publication
|
||||
if pub is not None:
|
||||
instanceHome = os.path.dirname(pub.db.getName())
|
||||
if instanceHome is None:
|
||||
varDir = os.path.dirname(pub.db.getName())
|
||||
if varDir is None:
|
||||
instanceHome = os.path.dirname(os.path.dirname(os.path.dirname(
|
||||
os.path.dirname(cybertools.__file__))))
|
||||
return os.path.join(instanceHome, 'var')
|
||||
os.path.dirname(cybertools.__file__))))
|
||||
varDir = os.path.join(instanceHome, 'var')
|
||||
return varDir
|
||||
|
|
Loading…
Add table
Reference in a new issue