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