Support for optional document "labels" (aka name in DBXML 1)

This commit is contained in:
sebd 2005-05-19 15:13:41 +00:00
parent ad72e09297
commit 9310c8306d
1 changed files with 14 additions and 8 deletions

View File

@ -224,6 +224,7 @@ class DbXmlContainerHolder(dataholders.DataHolder):
""" returns a tuple (id, name) list of all documents
id is the Uri of the document
name is the dbxml:label of the document (if so defined)
argument xpathExpression can be specified to restrict the list
"""
@ -233,9 +234,13 @@ class DbXmlContainerHolder(dataholders.DataHolder):
for value in results:
document = value.asDocument()
uri = "%s/%s" % (uriBase, document.getName())
name = document.getName()
labelValue = dbxml.XmlValue("")
if document.getMetaData("http://www.sleepycat.com/2002/dbxml", "label", labelValue):
label = labelValue.asString()
else:
label = document.getName()
documentList.append(
(uri, name)
(uri, label)
)
return documentList
@ -479,14 +484,15 @@ class DbXmlDocumentStation(stations.AbstractStation, documents.AbstractDocument)
def save(self):
self.dbxmlDocument.setContent(self.serialize())
container = self.getParent().getContainer()
element = self.getRootElement()
try:
label = element.getLabel()
except AttributeError:
pass
else:
self.dbxmlDocument.setMetaData("http://www.sleepycat.com/2002/dbxml", "label", dbxml.XmlValue(label))
if self.isTemporary:
name = self.getPublicName()
if name is None:
element = self.getRootElement()
try:
name = element.getLabel()
except AttributeError:
pass
if name is not None:
name = strings.simplify(name)
self.dbxmlDocument.setName(name)