server/mirrormanager/model.py | 9 +++++--
server/mirrormanager/schema_updates/update_1_4_0.py | 24 ++++++++++++++++----
2 files changed, 26 insertions(+), 7 deletions(-)
New commits:
commit f16fc949d371ee5bdb8044505698c86231ee0b0c
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Sun Oct 10 08:36:21 2010 -0500
SCHEMA CHANGE: drop class Schema, add cols to Site
Added emailOnDrop and emailOnAdd columns to Site. Not used yet.
Added more intelligent upgrade code, to know when to update these
columns in the database. This removes the need for the (unused)
Schema class.
diff --git a/server/mirrormanager/model.py b/server/mirrormanager/model.py
index 0c42781..b1fb792 100644
--- a/server/mirrormanager/model.py
+++ b/server/mirrormanager/model.py
@@ -44,6 +44,8 @@ class Site(SQLObject):
# allow all sites to pull from me
allSitesCanPullFromMe = BoolCol(default=False)
downstreamComments = UnicodeCol(default=None)
+ emailOnDrop = BoolCol(default=False)
+ emailOnAdd = BoolCol(default=False)
admins = MultipleJoin('SiteAdmin')
hosts = MultipleJoin('Host')
@@ -884,12 +886,6 @@ class FileGroup(SQLObject):
cacheValues = False
name = UnicodeCol(alternateID=True, length=UnicodeColKeyLength)
files = SQLRelatedJoin('FileDetail')
-
-class Schema(SQLObject):
- class sqlmeta:
- cacheValues = False
- version = UnicodeCol(alternateID=True, length=UnicodeColKeyLength)
-
###############################################################
# These classes are only used if you're not using the
diff --git a/server/mirrormanager/schema_updates/update_1_4_0.py
b/server/mirrormanager/schema_updates/update_1_4_0.py
index 65784c8..cc9f074 100644
--- a/server/mirrormanager/schema_updates/update_1_4_0.py
+++ b/server/mirrormanager/schema_updates/update_1_4_0.py
@@ -1,8 +1,23 @@
-from mirrormanager.model import Location, FileGroup, Schema
+from mirrormanager.model import Location, FileGroup, Site
+from sqlobject import BoolCol
+
+# upgrade methodology borrowed from
+#
http://www.mail-archive.com/sqlobject-discuss@lists.sourceforge.net/msg04...
+
+class OldSite(SQLObject):
+ class sqlmeta:
+ fromDatabase = True
+ table = 'site'
+
def update():
Location.createTable(ifNotExists=True)
FileGroup.createTable(ifNotExists=True)
- Schema.createTable(ifNotExists=True)
- if Schema.select().count() == 0:
- Schema(version=u'1.4')
+
+ if 'email_on_drop' not in OldSite.sqlmeta.columns and \
+ 'email_on_add' not in OldSite.sqlmeta.columns:
+ OldSite.addColumn(changeSchema=True, BoolCol("emailOnDrop",
default=False))
+ OldSite.addColumn(changeSchema=True, BoolCol("emailOnAdd",
default=False))
+ for s in Site.select():
+ s.emailOnDrop=False
+ s.emailOnAdd=False
commit 085da9317fdcce435a771e27b13d0fe3b48fd558
Author: Matt Domsch <Matt_Domsch(a)dell.com>
Date: Sun Oct 10 08:06:45 2010 -0500
SCHEMA CHANGE: add FileGroups to model
diff --git a/server/mirrormanager/model.py b/server/mirrormanager/model.py
index fad3938..0c42781 100644
--- a/server/mirrormanager/model.py
+++ b/server/mirrormanager/model.py
@@ -809,6 +809,7 @@ class FileDetail(SQLObject):
md5 = UnicodeCol(default=None)
sha256 = UnicodeCol(default=None)
sha512 = UnicodeCol(default=None)
+ fileGroups = SQLRelatedJoin('FileGroup')
class RepositoryRedirect(SQLObject):
class sqlmeta:
@@ -878,6 +879,12 @@ class Location(SQLObject):
name = UnicodeCol(alternateID=True, length=UnicodeColKeyLength)
hosts = SQLRelatedJoin('Host')
+class FileGroup(SQLObject):
+ class sqlmeta:
+ cacheValues = False
+ name = UnicodeCol(alternateID=True, length=UnicodeColKeyLength)
+ files = SQLRelatedJoin('FileDetail')
+
class Schema(SQLObject):
class sqlmeta:
cacheValues = False
diff --git a/server/mirrormanager/schema_updates/update_1_4_0.py
b/server/mirrormanager/schema_updates/update_1_4_0.py
index df9c43b..65784c8 100644
--- a/server/mirrormanager/schema_updates/update_1_4_0.py
+++ b/server/mirrormanager/schema_updates/update_1_4_0.py
@@ -1,7 +1,8 @@
-from mirrormanager.model import Location, Schema
+from mirrormanager.model import Location, FileGroup, Schema
def update():
Location.createTable(ifNotExists=True)
+ FileGroup.createTable(ifNotExists=True)
Schema.createTable(ifNotExists=True)
if Schema.select().count() == 0:
Schema(version=u'1.4')