250 lines
6.6 KiB
Python
Executable File
250 lines
6.6 KiB
Python
Executable File
# -*- coding: utf-8 -*-
|
|
|
|
import sys
|
|
import urlparse
|
|
|
|
from config_at import Config
|
|
from environments import ENVIRONMENTS, Environment
|
|
from functions import DatenpolFunctions
|
|
|
|
def main():
|
|
def _usage():
|
|
print 'Verwendung: dp <environment> <command> [<module_name>/<setup_function>]'
|
|
print ' dp list-envs\n'
|
|
print 'Commands:'
|
|
print ' create Neue Datenbank erstellen'
|
|
print ' create_from_dump Neue Datenbank von Dump erstellen'
|
|
print ' setup Modulinstallation, Konfigurationen'
|
|
print ' setup_part setup_function Aufruf eines einzelnen Setup-Schrittes'
|
|
print ' "setup_part info" listet die verfügbaren'
|
|
print ' Setup-Schritte auf'
|
|
print ' rollout Setzt Dokumentnummern, importiert Benutzer,'
|
|
print ' setzt dp_dmi auf noupdate, ...'
|
|
print ' update modul1 modul2 ... Module updaten'
|
|
print ' install module_name Modul installieren'
|
|
print ' uninstall module_name Modul deinstallieren'
|
|
print ' cancel_upgrade module_name Abbruch Modulinstallation'
|
|
print ' update_modules Update aller Module in der config-Modulliste'
|
|
print ' update_all Update aller verfügbaren Module'
|
|
print ' anonym Daten anonymisieren (Namen, Adresse, E-Mail, ...)'
|
|
print ' invalidate_email E-Mail Adressen invalidieren (@ > #)'
|
|
sys.exit(3)
|
|
|
|
argv = sys.argv[1:]
|
|
config = Config()
|
|
|
|
if not argv:
|
|
_usage()
|
|
|
|
# RUNBOT
|
|
# ./dp runbot create [db] [port] [working-dir]
|
|
|
|
if argv[0] == 'runbot':
|
|
import os
|
|
cmd = argv[1]
|
|
db = argv[2]
|
|
port = argv[3]
|
|
setup_path = argv[4]
|
|
|
|
env = Environment('http://localhost', port, db, 'admin', 'admin', 'admin')
|
|
os.chdir(setup_path)
|
|
elif argv[0] == 'list-envs':
|
|
print 'name: host:port dbname username'
|
|
for env_name in sorted(ENVIRONMENTS):
|
|
env = ENVIRONMENTS[env_name]
|
|
print '%s: %s:%s %s %s' % (env_name, env.host, env.port, env.dbname, env.username)
|
|
return
|
|
else:
|
|
if len(argv) != 2:
|
|
if len(argv) == 3 and argv[1] in ['install', 'uninstall', 'cancel_update', 'setup_part']:
|
|
pass
|
|
elif len(argv) >= 3 and argv[1] == 'update':
|
|
pass
|
|
else:
|
|
_usage()
|
|
|
|
cmd = argv[1]
|
|
|
|
env = ENVIRONMENTS.get(argv[0])
|
|
if not env:
|
|
print 'Unbekannte Umgebung'
|
|
_usage()
|
|
|
|
instance = DatenpolFunctions(env, config)
|
|
|
|
methods = None
|
|
|
|
if cmd == 'test':
|
|
methods = [
|
|
'login',
|
|
]
|
|
|
|
if cmd == 'create':
|
|
methods = [
|
|
'create_db',
|
|
'login',
|
|
'install_module_sale',
|
|
#'setup_accounting',
|
|
'set_admin_rights',
|
|
]
|
|
|
|
if cmd == 'create_dump':
|
|
methods = [
|
|
'create_dump',
|
|
]
|
|
|
|
if cmd == 'create_from_dump':
|
|
methods = [
|
|
'create_db_from_dump',
|
|
]
|
|
|
|
setup_methods = [
|
|
'login',
|
|
'uninstall_chat',
|
|
'install_modules',
|
|
'set_warehouse',
|
|
#'base_config',
|
|
#'sale_config',
|
|
#'finance_config',
|
|
#'hr_config',
|
|
#'stock_config',
|
|
#'mrp_config',
|
|
#'stock_set_cost_method',
|
|
#'set_incoterms',
|
|
#'purchase_config',
|
|
'set_date_format',
|
|
'set_company',
|
|
'set_taxes',
|
|
'set_uom',
|
|
'set_steuerzuordnung',
|
|
#'setup_journals',
|
|
'set_currencies',
|
|
'set_decimal_price',
|
|
#'set_default_values',
|
|
#'set_translations',
|
|
#'set_default_removal_strategy',
|
|
#'default_set_order_policy',
|
|
#'delete_mail_server',
|
|
#'update_values',
|
|
#'update_special_values',
|
|
'set_sys_params',
|
|
#'setup_reports',
|
|
'consume_tours',
|
|
'disable_planners',
|
|
]
|
|
|
|
if cmd == 'setup':
|
|
methods = setup_methods
|
|
|
|
if cmd == 'rollout':
|
|
methods = [
|
|
'login',
|
|
#'set_dokumentennummern',
|
|
#'set_dmi_noupdate',
|
|
#'dmi_confirm_inventory',
|
|
#'import_users',
|
|
]
|
|
|
|
if cmd == 'update':
|
|
instance.config.module_name = argv[2:]
|
|
methods = [
|
|
'login',
|
|
'update_module',
|
|
]
|
|
|
|
if cmd == 'install':
|
|
instance.config.module_name = argv[2]
|
|
methods = [
|
|
'login',
|
|
'install_module',
|
|
]
|
|
|
|
if cmd == 'uninstall':
|
|
instance.config.module_name = argv[2]
|
|
methods = [
|
|
'login',
|
|
'uninstall_module',
|
|
]
|
|
|
|
if cmd == 'cancel_upgrade':
|
|
instance.config.module_name = argv[2]
|
|
methods = [
|
|
'login',
|
|
'cancel_upgrade_module',
|
|
]
|
|
|
|
if cmd == 'update_modules':
|
|
methods = [
|
|
'login',
|
|
'update_modules',
|
|
]
|
|
|
|
if cmd == 'update_all':
|
|
methods = [
|
|
'login',
|
|
'update_all',
|
|
]
|
|
|
|
if cmd == 'setup_part':
|
|
if (argv[2] == 'info') or (argv[2] not in setup_methods):
|
|
print 'Verfügbare Setup-Schritte:', ', '.join(setup_methods)
|
|
return
|
|
|
|
methods = [
|
|
'login',
|
|
argv[2],
|
|
]
|
|
|
|
if cmd == 'anonym':
|
|
methods = [
|
|
'login',
|
|
'make_anonymous',
|
|
]
|
|
|
|
if cmd == 'invalidate_email':
|
|
methods = [
|
|
'login',
|
|
'invalidate_email',
|
|
]
|
|
|
|
if not methods:
|
|
print 'Unbekanntes Kommando'
|
|
_usage()
|
|
|
|
print env
|
|
|
|
local_netlocs = [
|
|
'localhost',
|
|
'127.0.0.1',
|
|
'::1',
|
|
]
|
|
netloc = urlparse.urlparse(env.host).netloc
|
|
if (netloc not in local_netlocs) or (env.pwd is None):
|
|
print '\nAchtung, diese Umgebung ist nicht lokal!\n'
|
|
|
|
print cmd,
|
|
print instance.config.module_name if instance.config.module_name else ''
|
|
print
|
|
|
|
env.pwd = raw_input('Passwort: ')
|
|
|
|
if cmd in ['create','create_dump','create_from_dump']:
|
|
env.super_admin_pw = raw_input('Super-Admin-Passwort: ')
|
|
|
|
print
|
|
|
|
for method in methods:
|
|
doc = getattr(instance, method).__doc__
|
|
print doc,
|
|
sys.stdout.flush()
|
|
res = getattr(instance, method)()
|
|
print '\r%s: %s' % (res and 'OK ' or 'ERROR ', doc)
|
|
if not res:
|
|
print 'Abbruch wegen Fehler'
|
|
return
|
|
|
|
print '\nAbgeschlossen.'
|
|
|
|
if __name__ == '__main__':
|
|
main()
|