Esempio n. 1
0
    def delete(self, collection, filename=''):
        """ Delete 
        """
        ife = self._if_header_evaluate()
        if ife!=None and ife=={}:
            raise web.HTTPError(412) 

        dav_object = self._object(parent = collection, name = filename)
        if not dav_object.is_exists() or \
            not dav_object.is_collection() and filename == '':
            raise web.HTTPError(404) 

        if dav_object.is_collection() and filename != '':
            self.moved_permanatly()
            return                                 

        self._is_locked( dav_object, ife )                          
        self._has_dependent_lock ( dav_object, ife )

        rc = dav_object.delete()
        if rc/100!=2:
            raise web.HTTPError(rc)                                       
        
        adapter = DbAdapter(self.application.db)
        if dav_object.is_collection():
            adapter.delete_collection(self.request.uri)
        else:
            adapter.delete_properties(self.request.uri)

        self.set_status(rc)           
        self.finish()
Esempio n. 2
0
    def copy(self, collection, filename='', move=False):
        """ Copy / Move method
        """
        ife = self._if_header_evaluate()
        if ife != None and ife == {}:
            raise web.HTTPError(412)

        dav_object = self._object(parent=collection, name=filename)
        if not dav_object.is_exists() or \
            not dav_object.is_collection() and filename == '':
            raise web.HTTPError(404)

        if dav_object.is_collection() and filename != '':
            self.moved_permanatly()
            return

        overwrite_header = self.request.headers.get('overwrite')
        destination = self.request.headers.get('destination')
        if destination == None:
            raise web.HTTPError(400)

        urld = urlsplit(destination)
        if urld.path == '':
            raise web.HTTPError(400)

        # cannot copy on itself
        if re.match(urld.path, self.request.uri) != None:
            raise web.HTTPError(409)

        if move:
            # check locks on source if move
            self._is_locked(dav_object, ife)
            self._has_dependent_lock(dav_object, ife)

        d = self._object_fromuri(urld.path)
        self._is_locked(d, ife)
        self._has_dependent_lock(d, ife)

        if move:
            rc = dav_object.move(d.filename, overwrite_header)
        else:
            rc = dav_object.copy(d.filename, overwrite_header)

        if rc / 100 != 2:
            raise web.HTTPError(rc)

        adapter = DbAdapter(self.application.db)
        if move:
            if dav_object.is_collection():
                adapter.move_collection(self.request.uri, urld.path)
            else:
                adapter.move_properties(self.request.uri, urld.path)
        else:
            if dav_object.is_collection():
                adapter.copy_collection(self.request.uri, urld.path)
            else:
                adapter.copy_properties(self.request.uri, urld.path)

        self.set_status(rc)
        self.finish()
Esempio n. 3
0
    def copy(self, collection, filename='', move=False):
        """ Copy / Move method
        """
        ife = self._if_header_evaluate()
        if ife!=None and ife=={}:
            raise web.HTTPError(412) 

        dav_object = self._object(parent = collection, name = filename)
        if not dav_object.is_exists() or \
            not dav_object.is_collection() and filename == '':
            raise web.HTTPError(404) 

        if dav_object.is_collection() and filename != '':
            self.moved_permanatly()
            return                                 

        overwrite_header = self.request.headers.get('overwrite') 
        destination = self.request.headers.get('destination')  
        if destination==None:
            raise web.HTTPError(400)

        urld = urlsplit (destination)
        if urld.path=='':
            raise web.HTTPError(400) 

        # cannot copy on itself
        if re.match(urld.path, self.request.uri)!=None:
            raise web.HTTPError(409)

        if move:
            # check locks on source if move
            self._is_locked( dav_object, ife )                          
            self._has_dependent_lock ( dav_object, ife )

        d = self._object_fromuri(urld.path)
        self._is_locked( d, ife )                          
        self._has_dependent_lock ( d, ife )

        if move:
            rc = dav_object.move( d.filename,  overwrite_header )
        else:
            rc = dav_object.copy( d.filename,  overwrite_header )

        if rc/100!=2:
            raise web.HTTPError(rc)                                       

        adapter = DbAdapter(self.application.db)
        if move:
            if dav_object.is_collection():
                adapter.move_collection( self.request.uri, urld.path )
            else:
                adapter.move_properties( self.request.uri, urld.path )
        else:
            if dav_object.is_collection():
                adapter.copy_collection( self.request.uri, urld.path )
            else:
                adapter.copy_properties( self.request.uri, urld.path )

        self.set_status(rc)           
        self.finish()
Esempio n. 4
0
    def delete(self, collection, filename=''):
        """ Delete 
        """
        ife = self._if_header_evaluate()
        if ife != None and ife == {}:
            raise web.HTTPError(412)

        dav_object = self._object(parent=collection, name=filename)
        if not dav_object.is_exists() or \
            not dav_object.is_collection() and filename == '':
            raise web.HTTPError(404)

        if dav_object.is_collection() and filename != '':
            self.moved_permanatly()
            return

        self._is_locked(dav_object, ife)
        self._has_dependent_lock(dav_object, ife)

        rc = dav_object.delete()
        if rc / 100 != 2:
            raise web.HTTPError(rc)

        adapter = DbAdapter(self.application.db)
        if dav_object.is_collection():
            adapter.delete_collection(self.request.uri)
        else:
            adapter.delete_properties(self.request.uri)

        self.set_status(rc)
        self.finish()