public.py 2.89 KB
Newer Older
Antony Chazapis's avatar
Antony Chazapis committed
1
# Copyright 2011-2012 GRNET S.A. All rights reserved.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
# 
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
# 
#   1. Redistributions of source code must retain the above
#      copyright notice, this list of conditions and the following
#      disclaimer.
# 
#   2. Redistributions in binary form must reproduce the above
#      copyright notice, this list of conditions and the following
#      disclaimer in the documentation and/or other materials
#      provided with the distribution.
# 
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# 
# The views and conclusions contained in the software and
# documentation are those of the authors and should not be
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.

from dbworker import DBWorker


class Public(DBWorker):
    """Paths can be marked as public."""
    
    def __init__(self, **params):
        DBWorker.__init__(self, **params)
        execute = self.execute
        
        execute(""" create table if not exists public
Antony Chazapis's avatar
Antony Chazapis committed
45
                          ( public_id integer primary key autoincrement,
46 47
                            path      text not null,
                            active    boolean not null default 1 ) """)
Antony Chazapis's avatar
Antony Chazapis committed
48 49
        execute(""" create unique index if not exists idx_public_path
                    on public(path) """)
50 51 52 53
    
    def public_set(self, path):
        q = "insert or ignore into public (path) values (?)"
        self.execute(q, (path,))
54 55
        q = "update public set active = 1 where path = ?"
        self.execute(q, (path,))
56 57
    
    def public_unset(self, path):
58
        q = "update public set active = 0 where path = ?"
59 60
        self.execute(q, (path,))
    
Antony Chazapis's avatar
Antony Chazapis committed
61
    def public_get(self, path):
62
        q = "select public_id from public where path = ? and active = 1"
63
        self.execute(q, (path,))
Antony Chazapis's avatar
Antony Chazapis committed
64 65 66 67 68 69
        row = self.fetchone()
        if row:
            return row[0]
        return None
    
    def public_path(self, public):
70
        q = "select path from public where public_id = ? and active = 1"
Antony Chazapis's avatar
Antony Chazapis committed
71 72 73 74 75
        self.execute(q, (public,))
        row = self.fetchone()
        if row:
            return row[0]
        return None