Revision 2715ade4 snf-pithos-backend/pithos/backends/lib/sqlite/public.py

b/snf-pithos-backend/pithos/backends/lib/sqlite/public.py
1 1
# Copyright 2011-2012 GRNET S.A. All rights reserved.
2
# 
2
#
3 3
# Redistribution and use in source and binary forms, with or
4 4
# without modification, are permitted provided that the following
5 5
# conditions are met:
6
# 
6
#
7 7
#   1. Redistributions of source code must retain the above
8 8
#      copyright notice, this list of conditions and the following
9 9
#      disclaimer.
10
# 
10
#
11 11
#   2. Redistributions in binary form must reproduce the above
12 12
#      copyright notice, this list of conditions and the following
13 13
#      disclaimer in the documentation and/or other materials
14 14
#      provided with the distribution.
15
# 
15
#
16 16
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 17
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 18
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
......
25 25
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 26
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 27
# POSSIBILITY OF SUCH DAMAGE.
28
# 
28
#
29 29
# The views and conclusions contained in the software and
30 30
# documentation are those of the authors and should not be
31 31
# interpreted as representing official policies, either expressed
......
36 36

  
37 37
class Public(DBWorker):
38 38
    """Paths can be marked as public."""
39
    
39

  
40 40
    def __init__(self, **params):
41 41
        DBWorker.__init__(self, **params)
42 42
        execute = self.execute
43
        
43

  
44 44
        execute(""" create table if not exists public
45 45
                          ( public_id integer primary key autoincrement,
46 46
                            path      text not null,
47 47
                            active    boolean not null default 1 ) """)
48 48
        execute(""" create unique index if not exists idx_public_path
49 49
                    on public(path) """)
50
    
50

  
51 51
    def public_set(self, path):
52 52
        q = "insert or ignore into public (path) values (?)"
53 53
        self.execute(q, (path,))
54 54
        q = "update public set active = 1 where path = ?"
55 55
        self.execute(q, (path,))
56
    
56

  
57 57
    def public_unset(self, path):
58 58
        q = "update public set active = 0 where path = ?"
59 59
        self.execute(q, (path,))
60
    
60

  
61 61
    def public_unset_bulk(self, paths):
62 62
        placeholders = ','.join('?' for path in paths)
63 63
        q = "update public set active = 0 where path in (%s)" % placeholders
64 64
        self.execute(q, paths)
65
    
65

  
66 66
    def public_get(self, path):
67 67
        q = "select public_id from public where path = ? and active = 1"
68 68
        self.execute(q, (path,))
......
70 70
        if row:
71 71
            return row[0]
72 72
        return None
73
    
73

  
74 74
    def public_list(self, prefix):
75 75
        q = "select path, public_id from public where path like ? escape '\\' and active = 1"
76 76
        self.execute(q, (self.escape_like(prefix) + '%',))
77 77
        return self.fetchall()
78
    
78

  
79 79
    def public_path(self, public):
80 80
        q = "select path from public where public_id = ? and active = 1"
81 81
        self.execute(q, (public,))

Also available in: Unified diff