~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/ftp.py

Merge in InterRepository api to have it available.

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
 
39
39
from bzrlib.transport import Transport
40
40
from bzrlib.errors import (TransportNotPossible, TransportError,
41
 
                           NoSuchFile, FileExists, DirectoryNotEmpty)
 
41
                           NoSuchFile, FileExists)
42
42
from bzrlib.trace import mutter, warning
43
43
 
44
44
 
189
189
        We're meant to return a file-like object which bzr will
190
190
        then read from. For now we do this via the magic of StringIO
191
191
        """
192
 
        # TODO: decode should be deprecated
193
192
        try:
194
193
            mutter("FTP get: %s" % self._abspath(relpath))
195
194
            f = self._get_FTP()
289
288
        except ftplib.error_perm, e:
290
289
            raise TransportError(orig_error=e)
291
290
 
292
 
    def rmdir(self, rel_path):
293
 
        """Delete the directory at rel_path"""
294
 
        try:
295
 
            mutter("FTP rmd: %s" % self._abspath(rel_path))
296
 
 
297
 
            f = self._get_FTP()
298
 
            f.rmd(self._abspath(rel_path))
299
 
        except ftplib.error_perm, e:
300
 
            if str(e).endswith("Directory not empty"):
301
 
                raise DirectoryNotEmpty(self._abspath(rel_path), extra=str(e))
302
 
            else:
303
 
                raise TransportError(msg="Cannot remove directory at %s" % \
304
 
                        self._abspath(rel_path), extra=str(e))
305
 
 
306
291
    def append(self, relpath, f):
307
292
        """Append the text in the file-like object into the final
308
293
        location.
323
308
        except ftplib.error_perm, e:
324
309
            raise TransportError(orig_error=e)
325
310
 
326
 
    rename = move
327
 
 
328
311
    def delete(self, relpath):
329
312
        """Delete the item at relpath"""
330
313
        try:
332
315
            f = self._get_FTP()
333
316
            f.delete(self._abspath(relpath))
334
317
        except ftplib.error_perm, e:
335
 
            if str(e).endswith("No such file or directory"):
336
 
                raise NoSuchFile(self._abspath(relpath), extra=str(e))
337
 
            else:
338
 
                raise TransportError(orig_error=e)
 
318
            raise TransportError(orig_error=e)
339
319
 
340
320
    def listable(self):
341
321
        """See Transport.listable."""