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')
|
>>> exportDir = os.path.join(dataDirectory, 'export')
|
||||||
>>> for fname in os.listdir(exportDir):
|
>>> 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.common import adapted
|
||||||
from loops.external.interfaces import ILoader, IExtractor
|
from loops.external.interfaces import ILoader, IExtractor
|
||||||
from loops.external.element import elementTypes
|
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
|
from loops.setup import SetupManager
|
||||||
|
|
||||||
|
|
||||||
|
@ -116,17 +117,18 @@ class Extractor(Base):
|
||||||
def extractResources(self):
|
def extractResources(self):
|
||||||
elementClass = elementTypes['resource']
|
elementClass = elementTypes['resource']
|
||||||
for name, obj in self.resources.items():
|
for name, obj in self.resources.items():
|
||||||
# TODO: handle ``data`` attribute...
|
data = self.getObjectData(obj, IResourceSchema)
|
||||||
data = self.getObjectData(obj)
|
|
||||||
tp = getName(obj.resourceType)
|
tp = getName(obj.resourceType)
|
||||||
|
if isinstance(obj, Document): # backward compatibility
|
||||||
|
tp = 'textdocument'
|
||||||
element = elementClass(name, obj.title, tp, **data)
|
element = elementClass(name, obj.title, tp, **data)
|
||||||
element.processExport(self)
|
element.processExport(self)
|
||||||
yield element
|
yield element
|
||||||
|
|
||||||
def getObjectData(self, obj):
|
def getObjectData(self, obj, defaultInterface=IConceptSchema):
|
||||||
aObj = adapted(obj)
|
aObj = adapted(obj)
|
||||||
schemaFactory = component.getAdapter(aObj, ISchemaFactory)
|
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)
|
schema = schemaFactory(ti, manager=self) #, request=self.request)
|
||||||
instance = IInstance(aObj)
|
instance = IInstance(aObj)
|
||||||
instance.template = schema
|
instance.template = schema
|
||||||
|
|
4
external/element.py
vendored
4
external/element.py
vendored
|
@ -106,11 +106,13 @@ class ResourceElement(Element):
|
||||||
|
|
||||||
def processExport(self, extractor):
|
def processExport(self, extractor):
|
||||||
content = self.pop('data', '')
|
content = self.pop('data', '')
|
||||||
|
fileFlags = 'wb'
|
||||||
if (self.get('contentType', '').startswith('text/')
|
if (self.get('contentType', '').startswith('text/')
|
||||||
and isinstance(content, unicode)):
|
and isinstance(content, unicode)):
|
||||||
content = content.encode('UTF-8')
|
content = content.encode('UTF-8')
|
||||||
|
fileFlags = 'wt'
|
||||||
dataPath = os.path.join(extractor.resourceDirectory, self['name'])
|
dataPath = os.path.join(extractor.resourceDirectory, self['name'])
|
||||||
f = open(dataPath, 'w')
|
f = open(dataPath, fileFlags)
|
||||||
f.write(content)
|
f.write(content)
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
|
|
@ -290,7 +290,8 @@ class Document(Resource):
|
||||||
def setData(self, data):
|
def setData(self, data):
|
||||||
self._data = data.replace('\r', '')
|
self._data = data.replace('\r', '')
|
||||||
self._size = len(data)
|
self._size = len(data)
|
||||||
def getData(self): return self._data
|
def getData(self):
|
||||||
|
return self._data
|
||||||
data = property(getData, setData)
|
data = property(getData, setData)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ class ResourceSchemaFactory(SchemaFactory):
|
||||||
|
|
||||||
def __call__(self, interface, **kw):
|
def __call__(self, interface, **kw):
|
||||||
schema = super(ResourceSchemaFactory, self).__call__(interface, **kw)
|
schema = super(ResourceSchemaFactory, self).__call__(interface, **kw)
|
||||||
|
#if 'data' in schema.fields.keys():
|
||||||
schema.fields.data.height = 10
|
schema.fields.data.height = 10
|
||||||
if self.context.contentType == 'text/html':
|
if self.context.contentType == 'text/html':
|
||||||
schema.fields.data.fieldType = 'html'
|
schema.fields.data.fieldType = 'html'
|
||||||
|
|
9
util.py
9
util.py
|
@ -98,12 +98,13 @@ def getUidForObject(obj):
|
||||||
|
|
||||||
|
|
||||||
def getVarDirectory(request=None):
|
def getVarDirectory(request=None):
|
||||||
instanceHome = None
|
varDir = None
|
||||||
if request is not None:
|
if request is not None:
|
||||||
pub = request.publication
|
pub = request.publication
|
||||||
if pub is not None:
|
if pub is not None:
|
||||||
instanceHome = os.path.dirname(pub.db.getName())
|
varDir = os.path.dirname(pub.db.getName())
|
||||||
if instanceHome is None:
|
if varDir is None:
|
||||||
instanceHome = os.path.dirname(os.path.dirname(os.path.dirname(
|
instanceHome = os.path.dirname(os.path.dirname(os.path.dirname(
|
||||||
os.path.dirname(cybertools.__file__))))
|
os.path.dirname(cybertools.__file__))))
|
||||||
return os.path.join(instanceHome, 'var')
|
varDir = os.path.join(instanceHome, 'var')
|
||||||
|
return varDir
|
||||||
|
|
Loading…
Add table
Reference in a new issue