* 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:
+28
-5
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user