setup function for odoo11
parent
efbf71d577
commit
89c7ff574b
|
|
@ -1,4 +1,4 @@
|
|||
import cli
|
||||
import config_at
|
||||
import environments
|
||||
import functions
|
||||
from . import cli
|
||||
from . import config_at
|
||||
from . import environments
|
||||
from . import functions
|
||||
|
|
|
|||
|
|
@ -1,33 +1,33 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import sys
|
||||
import urlparse
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from config_at import Config
|
||||
from environments import ENVIRONMENTS, Environment
|
||||
from functions import DatenpolFunctions
|
||||
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 (@ > #)'
|
||||
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:]
|
||||
|
|
@ -49,10 +49,10 @@ def main():
|
|||
env = Environment('http://localhost', port, db, 'admin', 'admin', 'admin')
|
||||
os.chdir(setup_path)
|
||||
elif argv[0] == 'list-envs':
|
||||
print 'name: host:port dbname username'
|
||||
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)
|
||||
print('%s: %s:%s %s %s' % (env_name, env.host, env.port, env.dbname, env.username))
|
||||
return
|
||||
else:
|
||||
if len(argv) != 2:
|
||||
|
|
@ -67,7 +67,7 @@ def main():
|
|||
|
||||
env = ENVIRONMENTS.get(argv[0])
|
||||
if not env:
|
||||
print 'Unbekannte Umgebung'
|
||||
print('Unbekannte Umgebung')
|
||||
_usage()
|
||||
|
||||
instance = DatenpolFunctions(env, config)
|
||||
|
|
@ -185,7 +185,7 @@ def main():
|
|||
|
||||
if cmd == 'setup_part':
|
||||
if (argv[2] == 'info') or (argv[2] not in setup_methods):
|
||||
print 'Verfügbare Setup-Schritte:', ', '.join(setup_methods)
|
||||
print('Verfügbare Setup-Schritte:', ', '.join(setup_methods))
|
||||
return
|
||||
|
||||
methods = [
|
||||
|
|
@ -205,49 +205,43 @@ def main():
|
|||
'invalidate_email',
|
||||
]
|
||||
|
||||
if cmd == 'remove_standard_translations':
|
||||
methods = [
|
||||
'login',
|
||||
'remove_standard_translations'
|
||||
]
|
||||
|
||||
if not methods:
|
||||
print 'Unbekanntes Kommando'
|
||||
print('Unbekanntes Kommando')
|
||||
_usage()
|
||||
|
||||
print env
|
||||
print(env)
|
||||
|
||||
local_netlocs = [
|
||||
'localhost',
|
||||
'127.0.0.1',
|
||||
'::1',
|
||||
]
|
||||
netloc = urlparse.urlparse(env.host).netloc
|
||||
netloc = urlparse(env.host).netloc
|
||||
if (netloc not in local_netlocs) or (env.pwd is None):
|
||||
print '\nAchtung, diese Umgebung ist nicht lokal!\n'
|
||||
print('\nAchtung, diese Umgebung ist nicht lokal!\n')
|
||||
|
||||
print cmd,
|
||||
print instance.config.module_name if instance.config.module_name else ''
|
||||
print
|
||||
print(cmd)
|
||||
print(instance.config.module_name if instance.config.module_name else '')
|
||||
print()
|
||||
|
||||
env.pwd = raw_input('Passwort: ')
|
||||
env.pwd = input('Passwort: ')
|
||||
|
||||
if cmd in ['create','create_dump','create_from_dump']:
|
||||
env.super_admin_pw = raw_input('Super-Admin-Passwort: ')
|
||||
env.super_admin_pw = input('Super-Admin-Passwort: ')
|
||||
|
||||
print
|
||||
print()
|
||||
|
||||
for method in methods:
|
||||
doc = getattr(instance, method).__doc__
|
||||
print doc,
|
||||
# print(doc)
|
||||
sys.stdout.flush()
|
||||
res = getattr(instance, method)()
|
||||
print '\r%s: %s' % (res and 'OK ' or 'ERROR ', doc)
|
||||
print('\r%s: %s' % (res and 'OK ' or 'ERROR ', doc))
|
||||
if not res:
|
||||
print 'Abbruch wegen Fehler'
|
||||
print('Abbruch wegen Fehler')
|
||||
return
|
||||
|
||||
print '\nAbgeschlossen.'
|
||||
print('\nAbgeschlossen.')
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
|
|||
|
|
@ -14,18 +14,18 @@ class Config():
|
|||
self.uom_decimals = 3 # Nachkommastellen Mengeneinheiten
|
||||
|
||||
self.company_data = {
|
||||
'name': 'datenpol gmbh',
|
||||
'street': 'Lederergasse 32',
|
||||
'name': 'TZ Tischlerzentrum GesmbH',
|
||||
'street': 'Neugasse 36',
|
||||
'street2': False,
|
||||
'city': 'Linz',
|
||||
'zip': '4020',
|
||||
'phone': '+43 732 997 035-0',
|
||||
'fax': False,
|
||||
'email': 'office@datenpol.at',
|
||||
'website': 'http://www.datenpol.at/',
|
||||
'company_registry': '359270p',
|
||||
'city': 'Spannberg',
|
||||
'zip': '2244',
|
||||
'phone': '+43 2538/8628 – 0',
|
||||
'fax': '+43 2538/8628 – 400',
|
||||
'email': 'office@tzaustria.com',
|
||||
'website': 'https://www.tzaustria.com/',
|
||||
'company_registry': 'FN 224119m',
|
||||
'country_id': 'at', # 'de' für Deutschland
|
||||
'vat': 'ATU 66309611',
|
||||
'vat': 'ATU 54619104',
|
||||
'rml_header1': False,
|
||||
'vat_check_vies': True,
|
||||
'tax_calculation_rounding_method': 'round_globally',
|
||||
|
|
@ -46,8 +46,8 @@ class Config():
|
|||
|
||||
# Nur für Lager
|
||||
# Wenn nicht gesetzt, dann wird der Firmenname genommen
|
||||
self.warehouse_name = False
|
||||
self.warehouse_code = False
|
||||
self.warehouse_name = 'TZA'
|
||||
self.warehouse_code = 'TZA'
|
||||
|
||||
# Anzahl der Schritte beim Ausliefern
|
||||
# [ship_only] Direkt vom Lager liefern
|
||||
|
|
@ -141,15 +141,13 @@ class Config():
|
|||
# 'number_next_actual': 1,
|
||||
'prefix': '%(y)s',
|
||||
'padding': 4,
|
||||
'use_date_range': True,
|
||||
'monthly_date_range': False
|
||||
'use_date_range': True
|
||||
},
|
||||
'account.invoice': {
|
||||
# 'number_next_actual': 0001,
|
||||
'prefix': '%(y)s%(month)s',
|
||||
'padding': 4,
|
||||
'use_date_range': True,
|
||||
'monthly_date_range': False
|
||||
'use_date_range': True
|
||||
},
|
||||
# Wenn 'account.invoice_refund' auskommentiert ist, dann wird
|
||||
# für die Gutschrift der selbe Nummernkreis verwendet
|
||||
|
|
@ -159,8 +157,7 @@ class Config():
|
|||
'implementation': 'no_gap',
|
||||
'prefix': '%(y)s',
|
||||
'padding': 4,
|
||||
'use_date_range': True,
|
||||
'monthly_date_range': False
|
||||
'use_date_range': True
|
||||
},
|
||||
#'picking.out': {
|
||||
# # 'number_next_actual': 1,
|
||||
|
|
@ -205,29 +202,32 @@ class Config():
|
|||
self.modules = [
|
||||
'base_iban',
|
||||
'document',
|
||||
'knowledge',
|
||||
'knowledge', # not found
|
||||
'auth_crypt',
|
||||
'auth_admin_passkey',
|
||||
'auth_brute_force',
|
||||
'auth_session_timeout',
|
||||
'disable_odoo_online',
|
||||
'mass_editing',
|
||||
'password_security',
|
||||
'res_config_settings_enterprise_remove',
|
||||
'scheduler_error_mailer',
|
||||
'web_dialog_size',
|
||||
'web_environment_ribbon',
|
||||
'web_favicon',
|
||||
'web_responsive',
|
||||
'web_searchbar_full_width',
|
||||
'web_sheet_full_width',
|
||||
'web_shortcut',
|
||||
'web_translate_dialog',
|
||||
'web_tree_many2one_clickable',
|
||||
# 'auth_admin_passkey',
|
||||
# 'auth_brute_force',
|
||||
# 'auth_session_timeout',
|
||||
# 'disable_odoo_online',
|
||||
# 'mass_editing',
|
||||
# 'password_security',
|
||||
# 'res_config_settings_enterprise_remove',
|
||||
# 'scheduler_error_mailer',
|
||||
# 'web_dialog_size',
|
||||
# 'web_environment_ribbon',
|
||||
# 'web_favicon',
|
||||
# 'web_responsive',
|
||||
# 'web_searchbar_full_width',
|
||||
# 'web_sheet_full_width',
|
||||
# 'web_shortcut',
|
||||
# 'web_translate_dialog',
|
||||
# 'web_tree_many2one_clickable',
|
||||
#'website_no_crawler',
|
||||
#'website_odoo_debranding',
|
||||
'dp_custom',
|
||||
'dp_reports',
|
||||
# 'dp_reports_account',
|
||||
# 'dp_reports_purchase',
|
||||
# 'dp_reports_sale',
|
||||
# 'dp_reports_stock',
|
||||
'account_cancel',
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -24,9 +24,10 @@ Port: %s
|
|||
|
||||
ENVIRONMENTS = {
|
||||
# Local environments are listed with passwords
|
||||
'br': Environment('http://localhost', '8080', 'INSTANCE_1', 'admin', 'x', 'admin'),
|
||||
'br': Environment('http://localhost', '8080', 'demo11c_1', 'admin', 'x', 'admin'),
|
||||
'aa': Environment('http://localhost', '8080', 'demo11c_1', 'admin', 'x', 'admin'),
|
||||
|
||||
# Remote environments are always listed without passwords!
|
||||
# Do not store them here, you have to type them anyway!
|
||||
'test': Environment('https://INSTANCE.datenpol.at', '443', 'INSTANCE_1', 'admin'),
|
||||
'test': Environment('https://demo11c_1.datenpol.at', '443', 'demo11c_1', 'admin'),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,12 +4,13 @@ import base64
|
|||
import json
|
||||
import pprint
|
||||
import sys
|
||||
import xmlrpclib
|
||||
from xmlrpc import client as xmlrpclib
|
||||
|
||||
import requests
|
||||
import ssl
|
||||
|
||||
class DatenpolFunctions():
|
||||
|
||||
class DatenpolFunctions:
|
||||
def __init__(self, environment, config):
|
||||
self.env = environment
|
||||
self.config = config
|
||||
|
|
@ -62,11 +63,11 @@ class DatenpolFunctions():
|
|||
}
|
||||
url = '%s:%s/web/database/restore?restore_pwd=%s&new_db=%s&mode=restore'
|
||||
url %= (self.env.host, self.env.port, self.env.super_admin_pw, self.env.dbname)
|
||||
print 'Request: ' + url
|
||||
print('Request: ' + url)
|
||||
res = requests.post(url, files=files, verify=False)
|
||||
if (res.status_code != 200):
|
||||
return False
|
||||
print "\nACHTUNG: Nicht vergessen './cam [env] anonym' auszuführen, sodass es zu keiner Kommunikation mit dem Produktivsystem kommt"
|
||||
print("\nACHTUNG: Nicht vergessen './cam [env] anonym' auszuführen, sodass es zu keiner Kommunikation mit dem Produktivsystem kommt")
|
||||
return True
|
||||
|
||||
def login(self):
|
||||
|
|
@ -84,12 +85,13 @@ class DatenpolFunctions():
|
|||
return self.sock.execute(self.env.dbname, self.uid, self.env.pwd, *args)
|
||||
|
||||
def _readAndReturnFile(self, filename, encode=''):
|
||||
fi = open(filename, 'r')
|
||||
fi = open(filename, 'rb')
|
||||
content = ''
|
||||
if encode == '':
|
||||
content = fi.read()
|
||||
elif encode == 'base64':
|
||||
content = base64.b64encode(fi.read())
|
||||
content = content.decode()
|
||||
else:
|
||||
sys.exit(-1)
|
||||
fi.close()
|
||||
|
|
@ -652,7 +654,7 @@ class DatenpolFunctions():
|
|||
if wizard_id:
|
||||
messages = self._execute('base_import.import', 'do', wizard_id, fields, options)
|
||||
if messages:
|
||||
print messages
|
||||
print(messages)
|
||||
return False
|
||||
return True
|
||||
|
||||
|
|
@ -771,9 +773,9 @@ class DatenpolFunctions():
|
|||
"""Systemparameter entfernen"""
|
||||
|
||||
for key, value in self.config.system_parameters_remove_on_rollout.items():
|
||||
print key
|
||||
print(key)
|
||||
param_ids = self._execute('ir.config_parameter', 'search', [('key', '=', key)])
|
||||
print param_ids
|
||||
print(param_ids)
|
||||
if param_ids:
|
||||
self._execute('ir.config_parameter', 'unlink', param_ids)
|
||||
return True
|
||||
|
|
@ -828,9 +830,9 @@ class DatenpolFunctions():
|
|||
|
||||
try:
|
||||
getattr(self, func_name)()
|
||||
print '.............. ' + func_name + ': OK'
|
||||
print('.............. ' + func_name + ': OK')
|
||||
except:
|
||||
print '.............. ' + func_name + ': ERROR!!!'
|
||||
print('.............. ' + func_name + ': ERROR!!!')
|
||||
return False
|
||||
return True
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue