Esempio n. 1
0
	def create_propname(self):
	    """ create a multistatus response for the prop names """
	    dc=self.__dataclass
	    # create the document generator
	    doc = Document(None)
	    ms=doc.createElement("D:multistatus")
	    ms.setAttribute("xmlns:D","DAV:")
	    doc.appendChild(ms)

	    if self.__depth=="0":
		pnames=dc.get_propnames(self.__uri)
		re=self.mk_propname_response(self.__uri,pnames)
		ms.appendChild(re)

	    elif self.__depth=="1":
		pnames=dc.get_propnames(self.__uri)
		re=self.mk_propname_response(self.__uri,pnames)
		ms.appendChild(re)
		for newuri in dc.get_childs(self.__uri):
		    pnames=dc.get_propnames(newuri)
		    re=self.mk_propname_response(newuri,pnames)
		    ms.appendChild(re)
	    # *** depth=="infinity"	 

	    sfile=StringIO()
	    ext.PrettyPrint(doc,stream=sfile)
	    s=sfile.getvalue()
	    sfile.close()
	    return s
Esempio n. 2
0
    def create_propname(self):
        """ create a multistatus response for the prop names """
        dc = self.__dataclass
        # create the document generator
        doc = Document(None)
        ms = doc.createElement("D:multistatus")
        ms.setAttribute("xmlns:D", "DAV:")
        doc.appendChild(ms)

        if self.__depth == "0":
            pnames = dc.get_propnames(self.__uri)
            re = self.mk_propname_response(self.__uri, pnames)
            ms.appendChild(re)

        elif self.__depth == "1":
            pnames = dc.get_propnames(self.__uri)
            re = self.mk_propname_response(self.__uri, pnames)
            ms.appendChild(re)
            for newuri in dc.get_childs(self.__uri):
                pnames = dc.get_propnames(newuri)
                re = self.mk_propname_response(newuri, pnames)
                ms.appendChild(re)
        # *** depth=="infinity"

        sfile = StringIO()
        ext.PrettyPrint(doc, stream=sfile)
        s = sfile.getvalue()
        sfile.close()
        return s
Esempio n. 3
0
    def tree_action(self):
        """ copy a tree of resources (a collection)

        Here we return a multistatus xml element.

        """
        dc=self.__dataclass
        base=self.__src

        ### some basic tests
        # test if dest exists and overwrite is false
        if dc.exists(self.__dst) and not self.__overwrite: raise DAV_Error, 412
        # test if src and dst are the same
        # (we assume that both uris are on the same server!)
        ps=urlparse.urlparse(self.__src)[2]
        pd=urlparse.urlparse(self.__dst)[2]
        if ps==pd: raise DAV_Error, 403
        
        
        result=dc.copytree(self.__src,self.__dst,self.__overwrite)
        #result=copytree(dc,self.__src,self.__dst,self.__overwrite)

        if not result: return None

        ###
        ### create the multistatus XML element
        ### (this is also the same as in delete.py.
        ###  we might make a common method out of it)
        ###

        doc = Document(None)
        ms=doc.createElement("D:multistatus")
        ms.setAttribute("xmlns:D","DAV:")
        doc.appendChild(ms)

        for el,ec in result.items():
                re=doc.createElement("D:response")
                hr=doc.createElement("D:href")
                st=doc.createElement("D:status")
                huri=doc.createTextNode(quote_uri(el))
                t=doc.createTextNode(gen_estring(ec))
                st.appendChild(t)
                hr.appendChild(huri)
                re.appendChild(hr)
                re.appendChild(st)
                ms.appendChild(re)
 
        sfile=StringIO()
        ext.PrettyPrint(doc,stream=sfile)
        s=sfile.getvalue()
        sfile.close()
        return s
Esempio n. 4
0
    def tree_action(self):
        """ copy a tree of resources (a collection)

        Here we return a multistatus xml element.

        """
        dc = self.__dataclass
        base = self.__src

        ### some basic tests
        # test if dest exists and overwrite is false
        if dc.exists(self.__dst) and not self.__overwrite: raise DAV_Error, 412
        # test if src and dst are the same
        # (we assume that both uris are on the same server!)
        ps = urlparse.urlparse(self.__src)[2]
        pd = urlparse.urlparse(self.__dst)[2]
        if ps == pd: raise DAV_Error, 403

        result = dc.copytree(self.__src, self.__dst, self.__overwrite)
        #result=copytree(dc,self.__src,self.__dst,self.__overwrite)

        if not result: return None

        ###
        ### create the multistatus XML element
        ### (this is also the same as in delete.py.
        ###  we might make a common method out of it)
        ###

        doc = Document(None)
        ms = doc.createElement("D:multistatus")
        ms.setAttribute("xmlns:D", "DAV:")
        doc.appendChild(ms)

        for el, ec in result.items():
            re = doc.createElement("D:response")
            hr = doc.createElement("D:href")
            st = doc.createElement("D:status")
            huri = doc.createTextNode(quote_uri(el))
            t = doc.createTextNode(gen_estring(ec))
            st.appendChild(t)
            hr.appendChild(huri)
            re.appendChild(hr)
            re.appendChild(st)
            ms.appendChild(re)

        sfile = StringIO()
        ext.PrettyPrint(doc, stream=sfile)
        s = sfile.getvalue()
        sfile.close()
        return s
Esempio n. 5
0
    def create_prop(self):
        """ handle a <prop> request

        This will

        1. set up the <multistatus>-Framework

        2. read the property values for each URI
           (which is dependant on the Depth header)
           This is done by the get_propvalues() method.

        3. For each URI call the append_result() method
           to append the actual <result>-Tag to the result
           document.

        We differ between "good" properties, which have been
        assigned a value by the interface class and "bad"
        properties, which resulted in an error, either 404
        (Not Found) or 403 (Forbidden).

        """


        # create the document generator
        doc = Document(None)
        ms=doc.createElement("D:multistatus")
        ms.setAttribute("xmlns:D","DAV:")
        doc.appendChild(ms)

        if self.__depth=="0":
            gp,bp=self.get_propvalues(self.__uri)
            res=self.mk_prop_response(self.__uri,gp,bp,doc)
            ms.appendChild(res)

        elif self.__depth=="1":
            gp,bp=self.get_propvalues(self.__uri)
            res=self.mk_prop_response(self.__uri,gp,bp,doc)
            ms.appendChild(res)


        for newuri in self.__dataclass.get_childs(self.__uri):
            gp,bp=self.get_propvalues(newuri)
            res=self.mk_prop_response(newuri,gp,bp,doc)
            ms.appendChild(res)

        sfile=StringIO()
        ext.PrettyPrint(doc,stream=sfile)
        s=sfile.getvalue()
        sfile.close()
        return s
Esempio n. 6
0
    def create_prop(self):
        """ handle a <prop> request

        This will

        1. set up the <multistatus>-Framework

        2. read the property values for each URI
           (which is dependant on the Depth header)
           This is done by the get_propvalues() method.

        3. For each URI call the append_result() method
           to append the actual <result>-Tag to the result
           document.

        We differ between "good" properties, which have been
        assigned a value by the interface class and "bad"
        properties, which resulted in an error, either 404
        (Not Found) or 403 (Forbidden).

        """

        # create the document generator
        doc = Document(None)
        ms = doc.createElement("D:multistatus")
        ms.setAttribute("xmlns:D", "DAV:")
        doc.appendChild(ms)

        if self.__depth == "0":
            gp, bp = self.get_propvalues(self.__uri)
            res = self.mk_prop_response(self.__uri, gp, bp, doc)
            ms.appendChild(res)

        elif self.__depth == "1":
            gp, bp = self.get_propvalues(self.__uri)
            res = self.mk_prop_response(self.__uri, gp, bp, doc)
            ms.appendChild(res)

        for newuri in self.__dataclass.get_childs(self.__uri):
            gp, bp = self.get_propvalues(newuri)
            res = self.mk_prop_response(newuri, gp, bp, doc)
            ms.appendChild(res)

        sfile = StringIO()
        ext.PrettyPrint(doc, stream=sfile)
        s = sfile.getvalue()
        sfile.close()
        return s