def get_property_value(self, name):
refUrl = self.get_ref_url()<EOL>lm = self.provider.lock_manager<EOL>if lm and name == "<STR_LIT>":<EOL><INDENT>activelocklist = lm.get_url_lock_list(refUrl)<EOL>lockdiscoveryEL = etree.Element(name)<EOL>for lock in activelocklist:<EOL><INDENT>activelockEL = etree.SubElement(lockdiscoveryEL, "<STR_LIT>")<EOL>locktypeEL = etree.SubElement(activelockEL, "<STR_LIT>")<EOL>etree.SubElement(locktypeEL, "<STR_LIT>".format("<STR_LIT>", lock["<STR_LIT:type>"]))<EOL>lockscopeEL = etree.SubElement(activelockEL, "<STR_LIT>")<EOL>etree.SubElement(lockscopeEL, "<STR_LIT>".format("<STR_LIT>", lock["<STR_LIT>"]))<EOL>etree.SubElement(activelockEL, "<STR_LIT>").text = lock["<STR_LIT>"]<EOL>if lock["<STR_LIT>"]:<EOL><INDENT>ownerEL = xml_tools.string_to_xml(lock["<STR_LIT>"])<EOL>activelockEL.append(ownerEL)<EOL><DEDENT>timeout = lock["<STR_LIT>"]<EOL>if timeout < <NUM_LIT:0>:<EOL><INDENT>timeout = "<STR_LIT>"<EOL><DEDENT>else:<EOL><INDENT>expire = lock["<STR_LIT>"]<EOL>timeout = "<STR_LIT>" + str(int(expire - time.time()))<EOL><DEDENT>etree.SubElement(activelockEL, "<STR_LIT>").text = timeout<EOL>locktokenEL = etree.SubElement(activelockEL, "<STR_LIT>")<EOL>etree.SubElement(locktokenEL, "<STR_LIT>").text = lock["<STR_LIT>"]<EOL>lockPath = self.provider.ref_url_to_path(lock["<STR_LIT:root>"])<EOL>lockRes = self.provider.get_resource_inst(lockPath, self.environ)<EOL>lockHref = lockRes.get_href()<EOL>lockrootEL = etree.SubElement(activelockEL, "<STR_LIT>")<EOL>etree.SubElement(lockrootEL, "<STR_LIT>").text = lockHref<EOL><DEDENT>return lockdiscoveryEL<EOL><DEDENT>elif lm and name == "<STR_LIT>":<EOL><INDENT>supportedlockEL = etree.Element(name)<EOL>lockentryEL = etree.SubElement(supportedlockEL, "<STR_LIT>")<EOL>lockscopeEL = etree.SubElement(lockentryEL, "<STR_LIT>")<EOL>etree.SubElement(lockscopeEL, "<STR_LIT>")<EOL>locktypeEL = etree.SubElement(lockentryEL, "<STR_LIT>")<EOL>etree.SubElement(locktypeEL, "<STR_LIT>")<EOL>lockentryEL = etree.SubElement(supportedlockEL, "<STR_LIT>")<EOL>lockscopeEL = etree.SubElement(lockentryEL, "<STR_LIT>")<EOL>etree.SubElement(lockscopeEL, "<STR_LIT>")<EOL>locktypeEL = etree.SubElement(lockentryEL, "<STR_LIT>")<EOL>etree.SubElement(locktypeEL, "<STR_LIT>")<EOL>return supportedlockEL<EOL><DEDENT>elif name.startswith("<STR_LIT>"):<EOL><INDENT>if name == "<STR_LIT>" and self.get_creation_date() is not None:<EOL><INDENT>return util.get_rfc3339_time(self.get_creation_date())<EOL><DEDENT>elif name == "<STR_LIT>" and self.get_content_type() is not None:<EOL><INDENT>return self.get_content_type()<EOL><DEDENT>elif name == "<STR_LIT>":<EOL><INDENT>if self.is_collection:<EOL><INDENT>resourcetypeEL = etree.Element(name)<EOL>etree.SubElement(resourcetypeEL, "<STR_LIT>")<EOL>return resourcetypeEL<EOL><DEDENT>return "<STR_LIT>"<EOL><DEDENT>elif (<EOL>name == "<STR_LIT>" and self.get_last_modified() is not None<EOL>):<EOL><INDENT>return util.get_rfc1123_time(self.get_last_modified())<EOL><DEDENT>elif (<EOL>name == "<STR_LIT>"<EOL>and self.get_content_length() is not None<EOL>):<EOL><INDENT>return str(self.get_content_length())<EOL><DEDENT>elif name == "<STR_LIT>" and self.get_etag() is not None:<EOL><INDENT>return self.get_etag()<EOL><DEDENT>elif name == "<STR_LIT>" and self.get_display_name() is not None:<EOL><INDENT>return self.get_display_name()<EOL><DEDENT>raise DAVError(HTTP_NOT_FOUND)<EOL><DEDENT>pm = self.provider.prop_manager<EOL>if pm:<EOL><INDENT>value = pm.get_property(refUrl, name, self.environ)<EOL>if value is not None:<EOL><INDENT>return xml_tools.string_to_xml(value)<EOL><DEDENT><DEDENT>raise DAVError(HTTP_NOT_FOUND)<EOL>
Return the value of a property.

        name:
            the property name in Clark notation.
        return value:
            may have different types, depending on the status:

            - string or unicode: for standard property values.
            - lxml.etree.Element: for complex values.

            If the property is not available, a DAVError is raised.

        This default implementation handles ``{DAV:}lockdiscovery`` and
        ``{DAV:}supportedlock`` using the associated lock manager.

        All other *live* properties (i.e. name starts with ``{DAV:}``) are
        delegated to the self.xxx() getters.

        Finally, other properties are considered *dead*, and are handled  by
        the associated property manager.