imip-agent

imiptools/stores/database/postgresql.py

1117:f8478a583461
2016-04-18 Paul Boddie Merged changes from the default branch. freebusy-collections
     1 #!/usr/bin/env python     2      3 """     4 A PostgreSQL database store of calendar data.     5      6 Copyright (C) 2016 Paul Boddie <paul@boddie.org.uk>     7      8 This program is free software; you can redistribute it and/or modify it under     9 the terms of the GNU General Public License as published by the Free Software    10 Foundation; either version 3 of the License, or (at your option) any later    11 version.    12     13 This program is distributed in the hope that it will be useful, but WITHOUT    14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    15 FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more    16 details.    17     18 You should have received a copy of the GNU General Public License along with    19 this program.  If not, see <http://www.gnu.org/licenses/>.    20 """    21     22 from imiptools.config import STORE_DIR, JOURNAL_DIR    23 from imiptools.stores.database.common import DatabaseStore, DatabaseJournal    24 import psycopg2    25     26 class Store(DatabaseStore):    27     28     "A PostgreSQL database store of calendar objects and free/busy data."    29     30     def __init__(self, store_dir=None):    31     32         "Interpret 'store_dir' as a connection string."    33     34         connection = psycopg2.connect(store_dir or STORE_DIR)    35         connection.autocommit = True    36         DatabaseStore.__init__(self, connection, psycopg2.paramstyle)    37     38     def acquire_lock(self, user, timeout=None):    39         query = "select pg_advisory_lock(20160311)"    40         self.cursor.execute(query)    41     42     def release_lock(self, user):    43         query = "select pg_advisory_unlock(20160311)"    44         self.cursor.execute(query)    45     46 class Journal(DatabaseJournal):    47     48     "A PostgreSQL journal system supporting quotas."    49     50     def __init__(self, store_dir=None):    51     52         "Interpret 'store_dir' as a connection string."    53     54         connection = psycopg2.connect(store_dir or JOURNAL_DIR)    55         connection.autocommit = True    56         DatabaseJournal.__init__(self, connection, psycopg2.paramstyle)    57     58     def acquire_lock(self, user, timeout=None):    59         query = "select pg_advisory_lock(20160312)"    60         self.cursor.execute(query)    61     62     def release_lock(self, user):    63         query = "select pg_advisory_unlock(20160312)"    64         self.cursor.execute(query)    65     66 # vim: tabstop=4 expandtab shiftwidth=4