/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/transport/readonly.py

  • Committer: Alexander Belchenko
  • Date: 2006-06-29 08:41:31 UTC
  • mto: (1860.1.1 win32.installer)
  • mto: This revision was merged to the branch mainline in revision 1906.
  • Revision ID: bialix@ukr.net-20060629084131-3ea4d44e3204e36f
win32 installer for bzr.dev.0.9

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006, 2007, 2009, 2010, 2011, 2016 Canonical Ltd
2
 
#
 
1
# Copyright (C) 2006 Canonical Ltd
 
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
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
7
 
#
 
7
 
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
11
# GNU General Public License for more details.
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 ..errors import TransportNotPossible, NoSmartMedium
22
 
from ..transport import decorator
23
 
 
24
 
 
25
 
class ReadonlyTransportDecorator(decorator.TransportDecorator):
 
19
from bzrlib.errors import TransportNotPossible
 
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().
29
27
    """
30
28
 
31
 
    def append_file(self, relpath, f, mode=None):
32
 
        """See Transport.append_file()."""
33
 
        raise TransportNotPossible('readonly transport')
34
 
 
35
 
    def append_bytes(self, relpath, bytes, mode=None):
36
 
        """See Transport.append_bytes()."""
37
 
        raise TransportNotPossible('readonly transport')
38
 
 
 
29
    def append(self, relpath, f):
 
30
        """See Transport.append()."""
 
31
        raise TransportNotPossible('readonly transport')
 
32
    
39
33
    @classmethod
40
34
    def _get_url_prefix(self):
41
35
        """Readonly transport decorators are invoked via 'readonly+'"""
42
36
        return 'readonly+'
43
37
 
44
 
    def rename(self, rel_from, rel_to):
45
 
        """See Transport.rename."""
46
 
        raise TransportNotPossible('readonly transport')
47
 
 
48
38
    def delete(self, relpath):
49
39
        """See Transport.delete()."""
50
40
        raise TransportNotPossible('readonly transport')
53
43
        """See Transport.delete_tree()."""
54
44
        raise TransportNotPossible('readonly transport')
55
45
 
56
 
    def put_file(self, relpath, f, mode=None):
57
 
        """See Transport.put_file()."""
58
 
        raise TransportNotPossible('readonly transport')
59
 
 
60
 
    def put_bytes(self, relpath, bytes, mode=None):
61
 
        """See Transport.put_bytes()."""
 
46
    def put(self, relpath, f, mode=None):
 
47
        """See Transport.put()."""
62
48
        raise TransportNotPossible('readonly transport')
63
49
 
64
50
    def mkdir(self, relpath, mode=None):
65
51
        """See Transport.mkdir()."""
66
52
        raise TransportNotPossible('readonly transport')
67
53
 
68
 
    def open_write_stream(self, relpath, mode=None):
69
 
        """See Transport.open_write_stream()."""
70
 
        raise TransportNotPossible('readonly transport')
71
 
 
72
54
    def is_readonly(self):
73
55
        """See Transport.is_readonly."""
74
56
        return True
81
63
        """See Transport.lock_write."""
82
64
        raise TransportNotPossible('readonly transport')
83
65
 
84
 
    def get_smart_client(self):
85
 
        raise NoSmartMedium(self)
86
 
 
87
 
    def get_smart_medium(self):
88
 
        raise NoSmartMedium(self)
 
66
 
 
67
class ReadonlyServer(DecoratorServer):
 
68
    """Server for the ReadonlyTransportDecorator for testing with."""
 
69
 
 
70
    def get_decorator_class(self):
 
71
        return ReadonlyTransportDecorator
89
72
 
90
73
 
91
74
def get_test_permutations():
92
75
    """Return the permutations to be used in testing."""
93
 
    from ..tests import test_server
94
 
    return [(ReadonlyTransportDecorator, test_server.ReadonlyServer)]
 
76
    return [(ReadonlyTransportDecorator, ReadonlyServer),
 
77
            ]