diff --git a/installsystems/database.py b/installsystems/database.py index 5b912774436c5c3a743033d82ba8baa5e5134625..c723e26eb352597028c5d7653b1527d7265ba93c 100644 --- a/installsystems/database.py +++ b/installsystems/database.py @@ -47,10 +47,23 @@ class Database(object): raise Exception("Database not exists") self.conn = sqlite3.connect(self.path, isolation_level=None) self.conn.execute("PRAGMA foreign_keys = ON") + # get database version + try: + r = self.ask("SELECT value FROM misc WHERE key = 'version'").fetchone() + if r is None: + raise TypeError() + self.version = r[0] + except: + self.version = u"1" + # we only support database v1 + if self.version != u"1": + debug("Invalid database format: %s" % self.version) + raise Exception("Invalid database format") # we make a query to be sure format is valid try: self.ask("SELECT * FROM image") except: + debug("Invalid database format: %s" % self.version) raise Exception("Invalid database format") def begin(self): diff --git a/installsystems/repository.py b/installsystems/repository.py index 84d04399c764218bf7df351f7aab5a76618e9446..365408dcbfb00f9b9b24cf81116b5acf0a70a8f0 100644 --- a/installsystems/repository.py +++ b/installsystems/repository.py @@ -66,7 +66,6 @@ class Repository(object): def __init__(self, config): self.config = config - self.version = 1 self.local = istools.isfile(self.config.path) if not self.config.offline: try: @@ -76,7 +75,6 @@ class Repository(object): if self.config.offline: debug("Repository %s is offline" % config.name) - def __getattribute__(self, name): ''' Raise an error if repository is unavailable @@ -92,6 +90,13 @@ class Repository(object): raise Exception("Repository %s is offline" % config.name) return object.__getattribute__(self, name) + @property + def version(self): + ''' + Return repository version + ''' + return self.db.version + def init(self): ''' Initialize an empty base repository