mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-01 15:37:32 +08:00
69 lines
2.6 KiB
Python
69 lines
2.6 KiB
Python
import argparse
|
|
import difflib
|
|
import logging
|
|
import os
|
|
import sys
|
|
|
|
sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, "lib")))
|
|
|
|
import galaxy
|
|
import galaxy.app
|
|
import galaxy.config
|
|
from galaxy.managers.pages import (
|
|
PageContentProcessor,
|
|
placeholderRenderForSave,
|
|
)
|
|
from galaxy.model.mapping import init_models_from_config
|
|
from galaxy.objectstore import build_object_store_from_config
|
|
from galaxy.security.idencoding import IdEncodingHelper
|
|
from galaxy.util import unicodify
|
|
from galaxy.util.bunch import Bunch
|
|
from galaxy.util.script import (
|
|
app_properties_from_args,
|
|
populate_config_args,
|
|
)
|
|
|
|
|
|
def main(argv):
|
|
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
|
parser.add_argument("-k", "--secret-key", help="Key to convert pages with", default="")
|
|
parser.add_argument("-d", "--dry-run", help="No changes, just test it.", action="store_true")
|
|
populate_config_args(parser)
|
|
args = parser.parse_args()
|
|
properties = app_properties_from_args(args)
|
|
config = galaxy.config.Configuration(**properties)
|
|
secret = args.secret_key or config.id_secret
|
|
security_helper = IdEncodingHelper(id_secret=secret)
|
|
object_store = build_object_store_from_config(config)
|
|
if not config.database_connection:
|
|
print(
|
|
"The database connection is empty. If you are using the default value, please uncomment that in your galaxy.yml"
|
|
)
|
|
|
|
model = init_models_from_config(config, object_store=object_store)
|
|
session = model.context.current()
|
|
pagerevs = session.query(model.PageRevision).all()
|
|
mock_trans = Bunch(app=Bunch(security=security_helper), model=model, user_is_admin=lambda: True, sa_session=session)
|
|
for p in pagerevs:
|
|
try:
|
|
processor = PageContentProcessor(mock_trans, placeholderRenderForSave)
|
|
processor.feed(p.content)
|
|
newcontent = unicodify(processor.output(), "utf-8")
|
|
if p.content != newcontent:
|
|
if not args.dry_run:
|
|
p.content = unicodify(processor.output(), "utf-8")
|
|
session.add(p)
|
|
session.commit()
|
|
else:
|
|
print(f"Modifying revision {p.id}.")
|
|
print(difflib.unified_diff(p.content, newcontent))
|
|
except Exception:
|
|
logging.exception(
|
|
"Error parsing page, rolling changes back and skipping revision %s. Please report this error.", p.id
|
|
)
|
|
session.rollback()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv)
|