make external collection accept filenames with umlaut characters
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@4025 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
7ab2d6abfd
commit
9a6a72eb73
4 changed files with 22 additions and 5 deletions
|
@ -236,7 +236,11 @@ def normalizeName(baseName):
|
|||
try:
|
||||
c = c.encode('ISO8859-15')
|
||||
except UnicodeEncodeError:
|
||||
# skip all characters not representable in ISO encoding
|
||||
# replace all characters not representable in ISO encoding
|
||||
result.append('_')
|
||||
continue
|
||||
except UnicodeDecodeError:
|
||||
result.append('_')
|
||||
continue
|
||||
if c in '._':
|
||||
# separator and special characters to keep
|
||||
|
|
|
@ -41,7 +41,7 @@ from zope.traversing.api import getName, getParent
|
|||
from cybertools.meta.interfaces import IOptions
|
||||
from cybertools.text import mimetypes
|
||||
from cybertools.typology.interfaces import IType
|
||||
from loops.common import AdapterBase, adapted
|
||||
from loops.common import AdapterBase, adapted, normalizeName
|
||||
from loops.interfaces import IResource, IConcept
|
||||
from loops.integrator.interfaces import IExternalCollection
|
||||
from loops.integrator.interfaces import IExternalCollectionProvider
|
||||
|
@ -112,7 +112,7 @@ class ExternalCollectionAdapter(AdapterBase):
|
|||
for r in self.newResources:
|
||||
self.context.assignResource(r)
|
||||
for addr in old:
|
||||
if addr not in oldFound:
|
||||
if str(addr) not in oldFound:
|
||||
# not part of the collection any more
|
||||
# TODO: only remove from collection but keep object?
|
||||
self.remove(old[addr])
|
||||
|
@ -204,7 +204,7 @@ class DirectoryCollectionProvider(object):
|
|||
def getDirectory(self, client):
|
||||
baseAddress = client.baseAddress or ''
|
||||
address = client.address or ''
|
||||
return os.path.join(baseAddress, address)
|
||||
return str(os.path.join(baseAddress, address))
|
||||
|
||||
def generateName(self, container, name):
|
||||
name = INameChooser(container).chooseName(name, None)
|
||||
|
@ -217,5 +217,8 @@ class DirectoryCollectionProvider(object):
|
|||
if ext.lower() in mimetypes.extensions.values():
|
||||
title = base
|
||||
if not isinstance(title, unicode):
|
||||
title = title.decode('UTF-8')
|
||||
try:
|
||||
title = title.decode('UTF-8')
|
||||
except UnicodeDecodeError:
|
||||
title = title.decode('CP852')
|
||||
return title
|
||||
|
|
|
@ -127,6 +127,8 @@ class OfficeFile(ExternalFileAdapter):
|
|||
|
||||
|
||||
def parseDate(s):
|
||||
if not s:
|
||||
return None
|
||||
dt = datetime(*strptime(s, '%Y-%m-%dT%H:%M:%SZ')[:6]) + timedelta(hours=2)
|
||||
return date(dt.year, dt.month, dt.day)
|
||||
#return date(*strptime(s, '%Y-%m-%dT%H:%M:%SZ')[:3])
|
||||
|
|
|
@ -361,6 +361,14 @@ class IResource(ILoopsObject, IPotentialTarget):
|
|||
available via a view or a concept.
|
||||
"""
|
||||
|
||||
resourceType = schema.Choice(
|
||||
title=_(u'Resource Type'),
|
||||
description=_(u"The type of the resource, specified by a relation to "
|
||||
"a concept of type 'type'."),
|
||||
default=None,
|
||||
source="loops.resourceTypeSource",
|
||||
required=False)
|
||||
|
||||
|
||||
class IDocumentSchema(IResourceSchema):
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue