~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transport/readonly.py

  • Committer: John Arbash Meinel
  • Author(s): Mark Hammond
  • Date: 2008-09-09 17:02:21 UTC
  • mto: This revision was merged to the branch mainline in revision 3697.
  • Revision ID: john@arbash-meinel.com-20080909170221-svim3jw2mrz0amp3
An updated transparent icon for bzr.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006, 2007, 2009, 2010, 2011, 2016 Canonical Ltd
 
1
# Copyright (C) 2006 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""Implementation of Transport that adapts another transport to be readonly."""
18
18
 
19
 
from __future__ import absolute_import
20
 
 
21
 
from bzrlib.errors import TransportNotPossible, NoSmartMedium
22
 
from bzrlib.transport import decorator
23
 
 
24
 
 
25
 
class ReadonlyTransportDecorator(decorator.TransportDecorator):
 
19
from bzrlib.errors import TransportNotPossible, NoSmartServer, NoSmartMedium
 
20
from bzrlib.transport.decorator import TransportDecorator, DecoratorServer
 
21
 
 
22
 
 
23
class ReadonlyTransportDecorator(TransportDecorator):
26
24
    """A decorator that can convert any transport to be readonly.
27
25
 
28
26
    This is requested via the 'readonly+' prefix to get_transport().
31
29
    def append_file(self, relpath, f, mode=None):
32
30
        """See Transport.append_file()."""
33
31
        raise TransportNotPossible('readonly transport')
34
 
 
 
32
    
35
33
    def append_bytes(self, relpath, bytes, mode=None):
36
34
        """See Transport.append_bytes()."""
37
35
        raise TransportNotPossible('readonly transport')
38
 
 
 
36
    
39
37
    @classmethod
40
38
    def _get_url_prefix(self):
41
39
        """Readonly transport decorators are invoked via 'readonly+'"""
42
40
        return 'readonly+'
43
41
 
44
 
    def rename(self, rel_from, rel_to):
45
 
        """See Transport.rename."""
46
 
        raise TransportNotPossible('readonly transport')
47
 
 
48
42
    def delete(self, relpath):
49
43
        """See Transport.delete()."""
50
44
        raise TransportNotPossible('readonly transport')
65
59
        """See Transport.mkdir()."""
66
60
        raise TransportNotPossible('readonly transport')
67
61
 
68
 
    def open_write_stream(self, relpath, mode=None):
69
 
        """See Transport.open_write_stream()."""
70
 
        raise TransportNotPossible('readonly transport')
71
 
 
72
62
    def is_readonly(self):
73
63
        """See Transport.is_readonly."""
74
64
        return True
82
72
        raise TransportNotPossible('readonly transport')
83
73
 
84
74
    def get_smart_client(self):
85
 
        raise NoSmartMedium(self)
 
75
        raise NoSmartServer(self.base)
86
76
 
87
77
    def get_smart_medium(self):
88
78
        raise NoSmartMedium(self)
89
79
 
90
80
 
 
81
 
 
82
class ReadonlyServer(DecoratorServer):
 
83
    """Server for the ReadonlyTransportDecorator for testing with."""
 
84
 
 
85
    def get_decorator_class(self):
 
86
        return ReadonlyTransportDecorator
 
87
 
 
88
 
91
89
def get_test_permutations():
92
90
    """Return the permutations to be used in testing."""
93
 
    from bzrlib.tests import test_server
94
 
    return [(ReadonlyTransportDecorator, test_server.ReadonlyServer)]
 
91
    return [(ReadonlyTransportDecorator, ReadonlyServer),
 
92
            ]