imip-agent

imiptools/stores/__init__.py

1370:b4544a1a80c1
2017-10-25 Paul Boddie Moved period collection abstractions into the period module.
     1 #!/usr/bin/env python     2      3 """     4 General support for calendar data storage.     5      6 Copyright (C) 2016, 2017 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 settings    23 from imiptools.stores.common import StoreInitialisationError    24 from imiptools.stores.manifest import stores    25     26 # Access functions.    27     28 def get_store(store_type=None, store_dir=None):    29     30     """    31     Return a store object for the given 'store_type' and 'store_dir', using    32     configuration defaults where the parameters are given as None.    33     """    34     35     if store_dir or not store_type or store_type == settings["STORE_TYPE"]:    36         return stores[store_type or settings["STORE_TYPE"]].Store(    37             store_dir or settings["STORE_DIR"])    38     else:    39         raise StoreInitialisationError, "Store type cannot be changed arbitrarily."    40     41 def get_publisher(publishing_dir=None):    42     43     """    44     Return a publisher object for the given 'publishing_dir', using    45     configuration defaults where the parameter is given as None.    46     """    47     48     return stores["file"].Publisher(    49         publishing_dir or settings["PUBLISH_DIR"])    50     51 def get_journal(store_type=None, journal_dir=None):    52     53     """    54     Return a journal object for the given 'store_type' and 'journal_dir', using    55     configuration defaults where the parameters are given as None.    56     """    57     58     if journal_dir or not store_type or store_type == settings["STORE_TYPE"]:    59         return stores[store_type or settings["STORE_TYPE"]].Journal(    60             journal_dir or settings["JOURNAL_DIR"])    61     else:    62         raise StoreInitialisationError, "Journal type cannot be changed arbitrarily."    63     64 # vim: tabstop=4 expandtab shiftwidth=4