* pisi versiyonu'nun yükseldiğini anlasın, modullerini yeniden

yüklenmeye zorlasın, eğer gerekiyorsa rebuild-db'yi çalıştırsın. (#3090)
This commit is contained in:
Faik Uygur
2006-07-22 14:12:27 +00:00
parent c12d27db71
commit cd9bad4704
+28 -5
View File
@@ -45,12 +45,35 @@ class PisiUpgradeException(pisi.Exception):
pisi.Exception.__init__(self, _("Upgrading PISI requires database rebuild and restart")) pisi.Exception.__init__(self, _("Upgrading PISI requires database rebuild and restart"))
def upgrade_pisi(): def upgrade_pisi():
ctx.ui.warning(_("PISI package has been upgraded. Rebuilding PISI database.")) """forces to reload pisi modules and runs rebuild-db if needed."""
old_filesdbversion = pisi.__filesdbversion__
old_dbversion = pisi.__dbversion__
def rebuild_db():
"""rebuild_db is necessary if database structures has changed."""
from pisi.version import Version
import pisi.context as ctx
if Version(pisi.__filesdbversion__) > Version(old_filesdbversion) or \
Version(pisi.__dbversion__) > Version(old_dbversion):
pisi.api.init(database=False)
ctx.ui.info(_("* PISI database version has changed. Rebuilding database..."))
pisi.api.rebuild_db()
ctx.ui.info(_("* Database rebuild operation is completed succesfully."))
pisi.api.finalize()
def reload_pisi():
for module in sys.modules.keys():
if module.startswith("pisi."):
"""removal from sys.modules forces reload via import"""
del(sys.modules[module])
reload(pisi)
pisi.api.finalize() pisi.api.finalize()
os.system('pisi rebuild-db -y') reload_pisi()
#reload(pisi) rebuild_db()
#pisi.api.init() pisi.api.init()
#pisi.api.rebuild_db()
raise PisiUpgradeException() raise PisiUpgradeException()
# high level operations # high level operations