Support for optional document "labels" (aka name in DBXML 1)
This commit is contained in:
parent
ad72e09297
commit
9310c8306d
|
@ -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)
|
||||
|
|
Reference in New Issue