This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
mandaye-vincennes/mandaye_vincennes_manager

67 lines
2.3 KiB
Python
Executable File

#! /usr/bin/python
# -*- coding: utf-8 -*-
""" Script to administrate mandaye server
"""
import os
os.environ['MANDAYE_CONFIG_MODULE'] = 'mandaye_vincennes.config'
from optparse import OptionParser
from mandaye import config
from mandaye.backends.default import Association
from mandaye.log import logger
def get_cmd_options():
usage = "usage: %prog --createdb|--upgradedb|--sql2ldap=SQL_SCHEMA"
parser = OptionParser(usage=usage)
parser.add_option("--createdb",
dest="createdb",
default=False,
action="store_true",
help="Create SQL Mandaye database"
)
parser.add_option("--upgradedb",
dest="upgradedb",
default=False,
action="store_true",
help="Upgrade SQL Mandaye database"
)
parser.add_option("--sql2ldap",
dest="sql_schema",
default="",
type="string",
help="SQL_SCHEMA: sqlalchemy schema (ex postgresql://mandaye@/mandayeold)")
(options, args) = parser.parse_args()
return options
def main():
options = get_cmd_options()
if options.createdb or options.upgradedb:
logger.info("Creating or upgrading database...")
from alembic.config import Config
from alembic import command
from mandaye import global_config
alembic_cfg = Config(global_config.alembic_cfg)
alembic_cfg.set_main_option("script_location", global_config.alembic_script_path)
command.upgrade(alembic_cfg, "head")
logger.info("Database upgraded")
if options.sql_schema:
logger.info("Migrate from %r to %r", options.sql_schema, config.ldap_url)
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
from mandaye.models import SPUser
sql_session = scoped_session(sessionmaker(
bind=create_engine(options.sql_schema)))
for sp_user in sql_session.query(SPUser).all():
Association.update_or_create(sp_user.service_provider.name,
sp_user.login, sp_user.post_values,
sp_user.idp_user.unique_id, sp_user.idp_user.idp_id,
creation_date=sp_user.creation_date,
last_connection_date=sp_user.last_connection)
if __name__ == "__main__":
main()