Setup Erweiterungen aus anderen Projekten übernommen:
create_from_dump, anonym, invalidate_email, uninstall, cancel_upgrade, finance_config Zusätzlich: setup_part (Setup mit Angabe der Setup Methode), usage erweitertdevelop
							parent
							
								
									a9d0bb2b59
								
							
						
					
					
						commit
						2fb31d259b
					
				|  | @ -0,0 +1,83 @@ | ||||||
|  | #!/usr/bin/python | ||||||
|  | # -*- encoding: utf-8 -*- | ||||||
|  | import fnmatch | ||||||
|  | import polib | ||||||
|  | import re | ||||||
|  | import os | ||||||
|  | import string | ||||||
|  | 
 | ||||||
|  | start_directory = '../..' | ||||||
|  | language_filename = 'de.po' | ||||||
|  | 
 | ||||||
|  | print "Start" | ||||||
|  | 
 | ||||||
|  | search_replace_regex = [(u'Ist ein Unternehmen\?', u'Hauptkontakt?'), | ||||||
|  |                         (u'Ist ein Unternehmen', u'Hauptkontakt'), | ||||||
|  |                         (u'Aufträge', u'Kundenbestellungen'), | ||||||
|  |                         (u'der Auftrag', u'die Kundenbestellung'), | ||||||
|  |                         (u'des Auftrags', u'der Kundenbestellung'), | ||||||
|  |                         (u'dem Auftrag', u'der Kundenbestellung'), | ||||||
|  |                         (u'den Auftrag', u'die Kundenbestellung'), | ||||||
|  |                         (u'ein Auftrag', u'eine Kundenbestellung'), | ||||||
|  |                         (u'einen Auftrag', u'eine Kundenbestellung'), | ||||||
|  |                         (u'diesen Auftrag', u'diese Kundenbestellung'), | ||||||
|  |                         (u'Der Auftrag', u'Die Kundenbestellung'), | ||||||
|  |                         (u'Des Auftrags', u'Der Kundenbestellung'), | ||||||
|  |                         (u'Dem Auftrag', u'Der Kundenbestellung'), | ||||||
|  |                         (u'Den Auftrag', u'Die Kundenbestellung'), | ||||||
|  |                         (u'Ein Auftrag', u'Eine Kundenbestellung'), | ||||||
|  |                         (u'Einen Auftrag', u'Eine Kundenbestellung'), | ||||||
|  |                         (u'Diesen Auftrag', u'Diese Kundenbestellung'), | ||||||
|  |                         (u'Auftragsnummer', u'Kundenbestellung Nr.'), | ||||||
|  |                         (u'Auftrag', u'Kundenbestellung'), | ||||||
|  |                         (u'der Verkaufsauftrag', u'die Kundenbestellung'), | ||||||
|  |                         (u'des Verkaufsauftrag', u'der Kundenbestellung'), | ||||||
|  |                         (u'dem Verkaufsauftrag', u'der Kundenbestellung'), | ||||||
|  |                         (u'den Verkaufsauftrag', u'die Kundenbestellung'), | ||||||
|  |                         (u'ein Verkaufsauftrag', u'eine Kundenbestellung'), | ||||||
|  |                         (u'einen Verkaufsauftrag', u'eine Kundenbestellung'), | ||||||
|  |                         (u'diesen Verkaufsauftrag', u'diese Kundenbestellung'), | ||||||
|  |                         (u'Der Verkaufsauftrag', u'Die Kundenbestellung'), | ||||||
|  |                         (u'Des Verkaufsauftrag', u'Der Kundenbestellung'), | ||||||
|  |                         (u'Dem Verkaufsauftrag', u'Der Kundenbestellung'), | ||||||
|  |                         (u'Den Verkaufsauftrag', u'Die Kundenbestellung'), | ||||||
|  |                         (u'Ein Verkaufsauftrag', u'Eine Kundenbestellung'), | ||||||
|  |                         (u'Einen Verkaufsauftrag', u'Eine Kundenbestellung'), | ||||||
|  |                         (u'Diesen Verkaufsauftrag', u'Diese Kundenbestellung'), | ||||||
|  |                         (u'Verkaufsauftrag', u'Kundenbestellung'), | ||||||
|  |                         (u'Verkaufsauftrag', u'Kundenbestellung'), | ||||||
|  |                         (u'Amount Paid', u'Betrag bezahlt'), | ||||||
|  |                         ] | ||||||
|  | 
 | ||||||
|  | search_module = ['sale', 'base'] | ||||||
|  | 
 | ||||||
|  | valid_entries = [] | ||||||
|  | 
 | ||||||
|  | for root, dirs, files in os.walk(start_directory): | ||||||
|  |     for filename in fnmatch.filter(files, language_filename): | ||||||
|  |         print "File: " + filename | ||||||
|  |         src = os.path.join(root, filename) | ||||||
|  |         po = polib.pofile(src) | ||||||
|  |         for e in po: | ||||||
|  |             if not e.obsolete: | ||||||
|  |                 valid_entries.append(e) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | po2 = polib.POFile() | ||||||
|  | 
 | ||||||
|  | for se in search_replace_regex: | ||||||
|  |     for entry in valid_entries: | ||||||
|  |         module = re.search(u'(module:)(.*)', entry.comment) | ||||||
|  |         if module: | ||||||
|  |             module = module.group(2).strip() | ||||||
|  |             if module in search_module: | ||||||
|  |                 if re.search(se[0], entry.msgstr): | ||||||
|  |                     entry.msgstr = string.replace(entry.msgstr, se[0], se[1]) | ||||||
|  |                     po2.append(entry) | ||||||
|  |                     print entry.msgid, "<->", entry.msgstr | ||||||
|  |                 elif re.search(se[0], entry.msgid): | ||||||
|  |                     entry.msgstr = se[1] | ||||||
|  |                     po2.append(entry) | ||||||
|  |                     print entry.msgid, "<->", entry.msgstr | ||||||
|  | 
 | ||||||
|  | po2.save('../../setup/auto_translated2.po') | ||||||
|  | @ -0,0 +1,70 @@ | ||||||
|  | #!/usr/bin/python | ||||||
|  | # -*- encoding: utf-8 -*- | ||||||
|  | import fnmatch | ||||||
|  | import polib | ||||||
|  | import re | ||||||
|  | import os | ||||||
|  | import string | ||||||
|  | 
 | ||||||
|  | start_directory = '../..' | ||||||
|  | language_filename = '*.pot' | ||||||
|  | 
 | ||||||
|  | search_replace_regex = [(u'^Partner$', u'Kunde'), | ||||||
|  |                         (u'^Partners$', u'Kunden'), | ||||||
|  |                         (u'^Partner:$', u'Kunde:'), | ||||||
|  |                         (u'^Partners:$', u'Kunden:'), | ||||||
|  |                         (u'^Whole Company$', u'Ganzes Unternehmen'), | ||||||
|  |                         (u'^General announces for all employees.$', u'Allgemeine Nachrichten für alle Mitarbeiter'), | ||||||
|  |                         #(u'^Exception Rules$', u'Ausnahmeregeln'), | ||||||
|  |                         (u'^Payment Method$', u'Zahlungsart'), | ||||||
|  |                         #(u'^Automatic Workflow$', u'Automatischer Workflow'), | ||||||
|  |                         #(u'^Exception Name$', u'Name der Ausnahme'), | ||||||
|  |                         (u'^Description$', u'Beschreibung'), | ||||||
|  |                         (u'^Apply on$', u'Anwenden auf'), | ||||||
|  |                         (u'^Payment Term$', u'Zahlungsziel'), | ||||||
|  |                         (u'^Company$', u'Firma'), | ||||||
|  |                         #(u'^Journal for payment$', u'Journal für Zahlungseingänge'), | ||||||
|  |                         (u'^Default Values$', u'Standardwerte'), | ||||||
|  |                         (u'^Main Exception$', u'Fehlermeldung'), | ||||||
|  |                         # (u'^$', u''), | ||||||
|  |                         ] | ||||||
|  | 
 | ||||||
|  | search_module = False  # ['sale', 'stock'] | ||||||
|  | 
 | ||||||
|  | valid_entries = [] | ||||||
|  | 
 | ||||||
|  | for root, dirs, files in os.walk(start_directory): | ||||||
|  |     for filename in fnmatch.filter(files, language_filename): | ||||||
|  |         print filename | ||||||
|  |         src = os.path.join(root, filename) | ||||||
|  |         try: | ||||||
|  |             po = polib.pofile(src) | ||||||
|  |         except IOError as e: | ||||||
|  |             print "ERROR", e | ||||||
|  |             continue | ||||||
|  |         for e in po: | ||||||
|  |             if not e.obsolete: | ||||||
|  |                 valid_entries.append(e) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | po2 = polib.POFile() | ||||||
|  | 
 | ||||||
|  | cnt = 0 | ||||||
|  | for se in search_replace_regex: | ||||||
|  |     for entry in valid_entries: | ||||||
|  |         module = re.search(u'(module:)(.*)', entry.comment) | ||||||
|  |         if module: | ||||||
|  |             module = module.group(2).strip() | ||||||
|  |             if search_module is False or module in search_module: | ||||||
|  |                 if re.search(se[0], entry.msgstr): | ||||||
|  |                     entry.msgstr = string.replace(entry.msgstr, se[0], se[1]) | ||||||
|  |                     po2.append(entry) | ||||||
|  |                     cnt += 1 | ||||||
|  |                     print entry.msgid, "<->", entry.msgstr, cnt | ||||||
|  |                 elif re.search(se[0], entry.msgid): | ||||||
|  |                     entry.msgstr = se[1] | ||||||
|  |                     po2.append(entry) | ||||||
|  |                     cnt += 1 | ||||||
|  |                     print entry.msgid, "<->", entry.msgstr, cnt | ||||||
|  | 
 | ||||||
|  | po2.save('../../setup/auto_translated2.po') | ||||||
|  | @ -0,0 +1,53 @@ | ||||||
|  | #!/usr/bin/python | ||||||
|  | # -*- encoding: utf-8 -*- | ||||||
|  | import fnmatch | ||||||
|  | import polib | ||||||
|  | import re | ||||||
|  | import os | ||||||
|  | import string | ||||||
|  | 
 | ||||||
|  | start_directory = '../..' | ||||||
|  | language_filename = '*.pot' | ||||||
|  | 
 | ||||||
|  | search_replace_regex = [ | ||||||
|  |                         ] | ||||||
|  | 
 | ||||||
|  | search_module = False  # ['sale', 'stock'] | ||||||
|  | 
 | ||||||
|  | valid_entries = [] | ||||||
|  | 
 | ||||||
|  | for root, dirs, files in os.walk(start_directory): | ||||||
|  |     for filename in fnmatch.filter(files, language_filename): | ||||||
|  |         print filename | ||||||
|  |         src = os.path.join(root, filename) | ||||||
|  |         try: | ||||||
|  |             po = polib.pofile(src) | ||||||
|  |         except IOError as e: | ||||||
|  |             print "ERROR", e | ||||||
|  |             continue | ||||||
|  |         for e in po: | ||||||
|  |             if not e.obsolete: | ||||||
|  |                 valid_entries.append(e) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | po2 = polib.POFile() | ||||||
|  | 
 | ||||||
|  | cnt = 0 | ||||||
|  | for se in search_replace_regex: | ||||||
|  |     for entry in valid_entries: | ||||||
|  |         module = re.search(u'(module:)(.*)', entry.comment) | ||||||
|  |         if module: | ||||||
|  |             module = module.group(2).strip() | ||||||
|  |             if search_module is False or module in search_module: | ||||||
|  |                 if re.search(se[0], entry.msgstr): | ||||||
|  |                     entry.msgstr = string.replace(entry.msgstr, se[0], se[1]) | ||||||
|  |                     po2.append(entry) | ||||||
|  |                     cnt += 1 | ||||||
|  |                     print entry.msgid, "<->", entry.msgstr, cnt | ||||||
|  |                 elif re.search(se[0], entry.msgid): | ||||||
|  |                     entry.msgstr = se[1] | ||||||
|  |                     po2.append(entry) | ||||||
|  |                     cnt += 1 | ||||||
|  |                     print entry.msgid, "<->", entry.msgstr, cnt | ||||||
|  | 
 | ||||||
|  | po2.save('../../setup/auto_translated3.po') | ||||||
|  | @ -7,9 +7,25 @@ from environments import ENVIRONMENTS, Environment | ||||||
| from functions import CamadeusFunctions | from functions import CamadeusFunctions | ||||||
| 
 | 
 | ||||||
| def main(): | def main(): | ||||||
|  | 
 | ||||||
|     def _usage(): |     def _usage(): | ||||||
|         print 'cam.py <environment> [create|setup|rollout|update] [<module_name>]' |         print '\nVerwendung: cam.py <environment> <command> [<module_name>/<setup_function>]\n' | ||||||
|         print 'cam.py list-envs' |         print 'Commands:\n' | ||||||
|  |         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 Setup Schritte auf.' | ||||||
|  |         print '   rollout                    Setzt Dokumentnummern, importiert Benutzer, setzt cam_dmi auf noupdate, ...' | ||||||
|  |         print '   update module_name         Modul updaten' | ||||||
|  |         print '   install modul_name         Modul installieren' | ||||||
|  |         print '   uninstall modul_name       Modul deinstallieren' | ||||||
|  |         print '   cancel_upgrade modul_name  Abbruch Modulinstallation' | ||||||
|  |         print '   update_modules             Update aller Module in der config Modulliste.' | ||||||
|  |         print '   update_all                 Update aller verfügbaren Module' | ||||||
|  |         print '   list-envs                  Environments auflisten' | ||||||
|  |         print '   anonym                     Daten anonymisieren (Namen, Adresse, E-Mail, ...)' | ||||||
|  |         print '   invalidate_email           E-Mail Adressen invalidieren (@ > #)\n' | ||||||
|         sys.exit(3) |         sys.exit(3) | ||||||
| 
 | 
 | ||||||
|     argv = sys.argv[1:] |     argv = sys.argv[1:] | ||||||
|  | @ -38,7 +54,7 @@ def main(): | ||||||
|         return |         return | ||||||
|     else: |     else: | ||||||
|         if len(argv) != 2: |         if len(argv) != 2: | ||||||
|             if len(argv) == 3 and argv[1] in ['update', 'install']: |             if len(argv) == 3 and argv[1] in ['update', 'install', 'uninstall', 'cancel_update' 'setup_part']: | ||||||
|                 # 'update' requires additional param 'module_name' |                 # 'update' requires additional param 'module_name' | ||||||
|                 pass |                 pass | ||||||
|             else: |             else: | ||||||
|  | @ -70,14 +86,19 @@ def main(): | ||||||
|             'set_admin_rights', |             'set_admin_rights', | ||||||
|         ] |         ] | ||||||
| 
 | 
 | ||||||
|     if cmd == 'setup': |     if cmd == 'create_from_dump': | ||||||
|         methods = [ |         methods = [ | ||||||
|  |             'create_db_from_dump', | ||||||
|  |         ] | ||||||
|  | 
 | ||||||
|  |     setup_methods = [ | ||||||
|         'login', |         'login', | ||||||
|         'uninstall_chat', |         'uninstall_chat', | ||||||
|         'install_modules', |         'install_modules', | ||||||
|         'set_warehouse', |         'set_warehouse', | ||||||
|         'base_config', |         'base_config', | ||||||
|         'sale_config', |         'sale_config', | ||||||
|  |         #'finance_config', | ||||||
|         'hr_config', |         'hr_config', | ||||||
|         'stock_config', |         'stock_config', | ||||||
|         'mrp_config', |         'mrp_config', | ||||||
|  | @ -98,10 +119,14 @@ def main(): | ||||||
|         'default_set_order_policy', |         'default_set_order_policy', | ||||||
|         'delete_mail_server', |         'delete_mail_server', | ||||||
|         'update_values', |         'update_values', | ||||||
|  |         'update_special_values', | ||||||
|         'set_sys_params', |         'set_sys_params', | ||||||
|         'setup_reports', |         'setup_reports', | ||||||
|         ] |         ] | ||||||
| 
 | 
 | ||||||
|  |     if cmd == 'setup': | ||||||
|  |         methods = setup_methods | ||||||
|  | 
 | ||||||
|     if cmd == 'rollout': |     if cmd == 'rollout': | ||||||
|         methods = [ |         methods = [ | ||||||
|             'login', |             'login', | ||||||
|  | @ -125,6 +150,20 @@ def main(): | ||||||
|             'install_module', |             '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': |     if cmd == 'update_modules': | ||||||
|         methods = [ |         methods = [ | ||||||
|             'login', |             'login', | ||||||
|  | @ -137,6 +176,28 @@ def main(): | ||||||
|             'update_all', |             'update_all', | ||||||
|         ] |         ] | ||||||
| 
 | 
 | ||||||
|  |     if cmd == 'setup_part': | ||||||
|  |         if ((argv[2] == 'info') or (not (argv[2] in setup_methods))): | ||||||
|  |             print '\nVerfügbare setup Methoden: ' + str(setup_methods) + '\n' | ||||||
|  |             return | ||||||
|  |      | ||||||
|  |         methods = [ | ||||||
|  |             'login', | ||||||
|  |             argv[2], | ||||||
|  |         ] | ||||||
|  | 
 | ||||||
|  |     if cmd == 'anonym': | ||||||
|  |         methods = [ | ||||||
|  |             'login', | ||||||
|  |             'make_anonymous', | ||||||
|  |         ]   | ||||||
|  | 
 | ||||||
|  |     if cmd == 'invalidate_email': | ||||||
|  |         methods = [ | ||||||
|  |             'login', | ||||||
|  |             'invalidate_email', | ||||||
|  |         ]   | ||||||
|  | 
 | ||||||
|     if not methods: |     if not methods: | ||||||
|         print 'Unbekanntes Kommando' |         print 'Unbekanntes Kommando' | ||||||
|         _usage() |         _usage() | ||||||
|  |  | ||||||
|  | @ -1,6 +1,9 @@ | ||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
| class Config(): | class Config(): | ||||||
|     def __init__(self): |     def __init__(self): | ||||||
|  |          | ||||||
|  |         self.dump_file = "upgraded_file_name.dump" | ||||||
|  |          | ||||||
|         self.module_name = None |         self.module_name = None | ||||||
|         self.lang = 'de_DE' # de_DE, en_US |         self.lang = 'de_DE' # de_DE, en_US | ||||||
|         self.chart_of_accounts = 'l10n_at' |         self.chart_of_accounts = 'l10n_at' | ||||||
|  | @ -98,6 +101,12 @@ class Config(): | ||||||
|             'group_costing_method': True,                # Benutzen Sie 'Einkaufs-' oder 'Durchschnittspreis' zur Bestandsbewertung |             'group_costing_method': True,                # Benutzen Sie 'Einkaufs-' oder 'Durchschnittspreis' zur Bestandsbewertung | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  |         self.finance_config = { | ||||||
|  |             #'group_multi_currency':True | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|         #Einstellungen Personal |         #Einstellungen Personal | ||||||
|         self.hr_config = { |         self.hr_config = { | ||||||
|             'module_hr_expense': True,                 # Spesen der Mitarbeiter verwalten |             'module_hr_expense': True,                 # Spesen der Mitarbeiter verwalten | ||||||
|  | @ -224,8 +233,11 @@ class Config(): | ||||||
| 
 | 
 | ||||||
|         self.users_file = 'res.users.csv' |         self.users_file = 'res.users.csv' | ||||||
| 
 | 
 | ||||||
|         self.translation_files = [ |         self.translation_files = [ # Reihenfolge! | ||||||
|                                   'ir.translation.csv' |                                  #'auto_translated2.po', | ||||||
|  |                                  'ir.translation.csv', | ||||||
|  |                                  #'auto_translated.po', | ||||||
|  |                                  #'auto_translated3.po', | ||||||
|                                   ] |                                   ] | ||||||
| 
 | 
 | ||||||
|         self.default_values = [   # ir.values |         self.default_values = [   # ir.values | ||||||
|  |  | ||||||
|  | @ -33,6 +33,22 @@ class CamadeusFunctions(): | ||||||
|             print 'Error occured: %s' % msg |             print 'Error occured: %s' % msg | ||||||
|             return False |             return False | ||||||
| 
 | 
 | ||||||
|  |     def create_db_from_dump(self): | ||||||
|  |         """ Neue Datenbank von Dump erstellen""" | ||||||
|  | 
 | ||||||
|  |         fh = open(self.config.dump_file, 'rb') | ||||||
|  |         files = { | ||||||
|  |             'db_file': ('db_file', fh.read(), 'application/octet-stream'), | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         url = '%s:%s/web/database/restore?restore_pwd=%s&new_db=%s&mode=restore' | ||||||
|  |         url %= (self.env.host, self.env.port, self.env.admin_pw, self.env.dbname) | ||||||
|  |         res = requests.post(url, files=files, verify=False) | ||||||
|  |         # print 'Status:', res.status_code | ||||||
|  |         # print 'Response:', res.content | ||||||
|  |         return True | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|     def login(self): |     def login(self): | ||||||
|         """Login""" |         """Login""" | ||||||
| 
 | 
 | ||||||
|  | @ -191,16 +207,16 @@ class CamadeusFunctions(): | ||||||
|         """Modul 'Sale' installieren""" |         """Modul 'Sale' installieren""" | ||||||
| 
 | 
 | ||||||
|         modules_to_install = self._execute('ir.module.module', 'search', [('name', '=', 'sale'), ('state', '!=', 'installed')]) |         modules_to_install = self._execute('ir.module.module', 'search', [('name', '=', 'sale'), ('state', '!=', 'installed')]) | ||||||
|         res = self._execute('ir.module.module', 'button_install', modules_to_install) |         self._execute('ir.module.module', 'button_install', modules_to_install) | ||||||
|         res = self._execute('base.module.upgrade', 'upgrade_module', modules_to_install) |         self._execute('base.module.upgrade', 'upgrade_module', modules_to_install) | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def install_modules(self): |     def install_modules(self): | ||||||
|         """Module installieren""" |         """Module installieren""" | ||||||
| 
 | 
 | ||||||
|         modules_to_install = self._execute('ir.module.module', 'search', [('name', 'in', self.config.modules), ('state', '!=', 'installed')]) |         modules_to_install = self._execute('ir.module.module', 'search', [('name', 'in', self.config.modules), ('state', '!=', 'installed')]) | ||||||
|         res = self._execute('ir.module.module', 'button_install', modules_to_install) |         self._execute('ir.module.module', 'button_install', modules_to_install) | ||||||
|         res = self._execute('base.module.upgrade', 'upgrade_module', modules_to_install) |         self._execute('base.module.upgrade', 'upgrade_module', modules_to_install) | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def _set_picking_sequence_prefix(self, code, value): |     def _set_picking_sequence_prefix(self, code, value): | ||||||
|  | @ -310,7 +326,7 @@ class CamadeusFunctions(): | ||||||
|         vals = self._execute('account.installer', 'default_get', []) |         vals = self._execute('account.installer', 'default_get', []) | ||||||
|         vals['charts'] = self.config.chart_of_accounts |         vals['charts'] = self.config.chart_of_accounts | ||||||
|         wizard_id = self._execute('account.installer', 'create', vals) |         wizard_id = self._execute('account.installer', 'create', vals) | ||||||
|         res = self._execute('account.installer', 'action_next', [wizard_id]) |         self._execute('account.installer', 'action_next', [wizard_id]) | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def setup_accounting2(self): |     def setup_accounting2(self): | ||||||
|  | @ -333,7 +349,7 @@ class CamadeusFunctions(): | ||||||
|         vals['company_id'] = 1 # Default |         vals['company_id'] = 1 # Default | ||||||
|         vals['currency_id'] = currency_id |         vals['currency_id'] = currency_id | ||||||
|         wizard_id = self._execute('wizard.multi.charts.accounts', 'create', vals) |         wizard_id = self._execute('wizard.multi.charts.accounts', 'create', vals) | ||||||
|         res = self._execute('wizard.multi.charts.accounts', 'action_next', [wizard_id]) |         self._execute('wizard.multi.charts.accounts', 'action_next', [wizard_id]) | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def set_currencies(self): |     def set_currencies(self): | ||||||
|  | @ -360,8 +376,8 @@ class CamadeusFunctions(): | ||||||
| 
 | 
 | ||||||
|         modules = ['im_chat', 'im_odoo_support', 'bus'] |         modules = ['im_chat', 'im_odoo_support', 'bus'] | ||||||
|         modules_to_install = self._execute('ir.module.module', 'search', [('name', 'in', modules)]) |         modules_to_install = self._execute('ir.module.module', 'search', [('name', 'in', modules)]) | ||||||
|         res = self._execute('ir.module.module', 'button_uninstall', modules_to_install) |         self._execute('ir.module.module', 'button_uninstall', modules_to_install) | ||||||
|         res = self._execute('base.module.upgrade', 'upgrade_module', modules_to_install) |         self._execute('base.module.upgrade', 'upgrade_module', modules_to_install) | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def set_uom(self): |     def set_uom(self): | ||||||
|  | @ -421,8 +437,8 @@ class CamadeusFunctions(): | ||||||
|         if not len(mod_ids) == 1: |         if not len(mod_ids) == 1: | ||||||
|            raise Exception('Module "%s" not found or not installed.' % module_name) |            raise Exception('Module "%s" not found or not installed.' % module_name) | ||||||
| 
 | 
 | ||||||
|         res = self._execute('ir.module.module', 'button_upgrade', mod_ids) |         self._execute('ir.module.module', 'button_upgrade', mod_ids) | ||||||
|         res = self._execute('base.module.upgrade', 'upgrade_module', []) |         self._execute('base.module.upgrade', 'upgrade_module', []) | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def install_module(self): |     def install_module(self): | ||||||
|  | @ -433,8 +449,8 @@ class CamadeusFunctions(): | ||||||
|         if not len(mod_ids) == 1: |         if not len(mod_ids) == 1: | ||||||
|            raise Exception('Module "%s" not found or is not in state "uninstalled".' % module_name) |            raise Exception('Module "%s" not found or is not in state "uninstalled".' % module_name) | ||||||
| 
 | 
 | ||||||
|         res = self._execute('ir.module.module', 'button_install', mod_ids) |         self._execute('ir.module.module', 'button_install', mod_ids) | ||||||
|         res = self._execute('base.module.upgrade', 'upgrade_module', []) |         self._execute('base.module.upgrade', 'upgrade_module', []) | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def update_modules(self): |     def update_modules(self): | ||||||
|  | @ -444,6 +460,27 @@ class CamadeusFunctions(): | ||||||
|         vals = self._execute('base.module.update', 'update_module', [wizard_id]) |         vals = self._execute('base.module.update', 'update_module', [wizard_id]) | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|  |     def uninstall_module(self): | ||||||
|  |         """Deinstalliere Modul""" | ||||||
|  |         module_name = self.config.module_name | ||||||
|  |         mod_ids = self._execute('ir.module.module', 'search', [('name','=',module_name),('state','=','installed')]) | ||||||
|  |         if not len(mod_ids) == 1: | ||||||
|  |            raise Exception("Module '%s' not found or is not installed." % module_name) | ||||||
|  | 
 | ||||||
|  |         self._execute('ir.module.module', 'button_uninstall', mod_ids) | ||||||
|  |         self._execute('base.module.upgrade', 'upgrade_module', []) | ||||||
|  |         return True | ||||||
|  | 
 | ||||||
|  |     def cancel_upgrade_module(self): | ||||||
|  |         """Modul Upgrade abbrechen""" | ||||||
|  |         module_name = self.config.module_name | ||||||
|  |         mod_ids = self._execute('ir.module.module', 'search', [('name','=',module_name),('state','=','to upgrade')]) | ||||||
|  |         if not len(mod_ids) == 1: | ||||||
|  |            raise Exception("Module '%s' not found or is not installed." % module_name) | ||||||
|  | 
 | ||||||
|  |         self._execute('ir.module.module', 'button_upgrade_cancel', mod_ids) | ||||||
|  |         return True | ||||||
|  | 
 | ||||||
|     def setup_journals(self): |     def setup_journals(self): | ||||||
|         """Update journals""" |         """Update journals""" | ||||||
| 
 | 
 | ||||||
|  | @ -465,9 +502,9 @@ class CamadeusFunctions(): | ||||||
|             mod_ids = self._execute('ir.module.module', 'search', [('name', '=', module_name), ('state', '=', 'installed')]) |             mod_ids = self._execute('ir.module.module', 'search', [('name', '=', module_name), ('state', '=', 'installed')]) | ||||||
|             if not len(mod_ids) == 1: |             if not len(mod_ids) == 1: | ||||||
|                 raise Exception('Module "%s" not found or ist not installed.' % module_name) |                 raise Exception('Module "%s" not found or ist not installed.' % module_name) | ||||||
|             res = self._execute('ir.module.module', 'button_upgrade', mod_ids) |             self._execute('ir.module.module', 'button_upgrade', mod_ids) | ||||||
| 
 | 
 | ||||||
|         res = self._execute('base.module.upgrade', 'upgrade_module', []) |         self._execute('base.module.upgrade', 'upgrade_module', []) | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|     def set_warehouse(self): |     def set_warehouse(self): | ||||||
|  | @ -635,6 +672,32 @@ class CamadeusFunctions(): | ||||||
|                 self._execute('ir.values', 'create', vals) |                 self._execute('ir.values', 'create', vals) | ||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  |     def update_special_values(self): | ||||||
|  |         """Spezialwerte setzen""" | ||||||
|  |          | ||||||
|  |         #Z.B.:  | ||||||
|  |         ## Lösche alle Anreden außer Herr und Frau | ||||||
|  |         #data_deletes = [ | ||||||
|  |         #    'base.res_partner_title_doctor', | ||||||
|  |         #    'base.res_partner_title_miss', | ||||||
|  |         #    'base.res_partner_title_prof', | ||||||
|  |         #    'base.res_partner_title_sir', | ||||||
|  |         #    'base.res_partner_title_pvt_ltd', | ||||||
|  |         #    'base.res_partner_title_ltd', | ||||||
|  |         #    'sale.email_template_edi_sale', | ||||||
|  |         #    'account.email_template_edi_invoice', | ||||||
|  |         #] | ||||||
|  |         #for xml_id in data_deletes: | ||||||
|  |         #    try: | ||||||
|  |         #        dummy,model,res_id = self._execute('ir.model.data', 'xmlid_lookup', xml_id)                         | ||||||
|  |         #        self._execute(model, 'unlink',  [res_id]) | ||||||
|  |         #    except: | ||||||
|  |         #        pass | ||||||
|  | 
 | ||||||
|  |         return True | ||||||
|  |      | ||||||
|  |      | ||||||
|     def update_values(self): |     def update_values(self): | ||||||
|         """Existierende Daten aktualisieren""" |         """Existierende Daten aktualisieren""" | ||||||
| 
 | 
 | ||||||
|  | @ -669,3 +732,112 @@ class CamadeusFunctions(): | ||||||
|             else: |             else: | ||||||
|                 return False |                 return False | ||||||
|         return True |         return True | ||||||
|  |      | ||||||
|  |     def invalidate_email(self): | ||||||
|  |         """E-Mail adressen @ durch # erstezen um unbeabsichtigen E-Mail Versand zu vermeiden""" | ||||||
|  | 
 | ||||||
|  |         #E-Mail adressen von res_partner: @ -> # | ||||||
|  |         p_ids = self._execute('res.partner', 'search', [('email','ilike','%@%')]) | ||||||
|  |         partner = self._execute('res.partner', 'read', p_ids, ['email']) | ||||||
|  |         for p in partner: | ||||||
|  |             id = p['id'] | ||||||
|  |             email = p['email'] | ||||||
|  |             new_email = email.replace('@','#') | ||||||
|  |             self._execute('res.partner', 'write', [id], {'email': new_email}) | ||||||
|  | 
 | ||||||
|  |     def finance_config(self): | ||||||
|  |         """Basiskonfiguration für Finanzen Laden""" | ||||||
|  | 
 | ||||||
|  |         if hasattr(self.config, 'finance_config'): | ||||||
|  |             vals = self._execute('account.config.settings', 'default_get', []) | ||||||
|  |             vals.update(self.config.finance_config) | ||||||
|  |             wizard_id = self._execute('account.config.settings', 'create', vals) | ||||||
|  |             return self._execute('account.config.settings', 'execute', [wizard_id]) | ||||||
|  |         return True | ||||||
|  | 
 | ||||||
|  |     def make_anonymous(self): | ||||||
|  |         """Anonymisieren der Daten""" | ||||||
|  | 
 | ||||||
|  |         res = True | ||||||
|  |         res &= self.make_anonymous_one('make_anonymous_partner') | ||||||
|  |         res &= self.make_anonymous_one('make_anonymous_project') | ||||||
|  |         res &= self.make_anonymous_one('make_anonymous_employee') | ||||||
|  |         res &= self.make_anonymous_one('make_anonymous_leads') | ||||||
|  |         res &= self.make_anonymous_one('make_anonymous_mailserver') | ||||||
|  |         res &= self.make_anonymous_one('make_anonymous_cron') | ||||||
|  |         return res | ||||||
|  |          | ||||||
|  |          | ||||||
|  |     def make_anonymous_one(self, func_name): | ||||||
|  |         """Anonymisieren der Daten ein Schritt""" | ||||||
|  |          | ||||||
|  |         try: | ||||||
|  |             getattr(self, func_name)() | ||||||
|  |             print '.............. ' + func_name + ": OK"  | ||||||
|  |         except: | ||||||
|  |             print '.............. ' + func_name + ": ERROR!!!" | ||||||
|  |             return False | ||||||
|  |         return True | ||||||
|  |   | ||||||
|  |     def make_anonymous_partner(self): | ||||||
|  |         ids = self._execute('res.partner', 'search', []) | ||||||
|  |         for id in ids: | ||||||
|  |             vals = { | ||||||
|  |                     'name': "Partner %s" % id, | ||||||
|  |                     'street': '----', | ||||||
|  |                     'email': 'test@example.com', | ||||||
|  |                     } | ||||||
|  |             self._execute('res.partner', 'write', [id], vals) | ||||||
|  | 
 | ||||||
|  |     def make_anonymous_project(self): | ||||||
|  |         if(self._execute('ir.module.module', 'search', [('name', '=', 'project'), ('state', '=', 'installed')])): | ||||||
|  |             ids = self._execute('project.project', 'search', []) | ||||||
|  |             for id in ids: | ||||||
|  |                 vals = { | ||||||
|  |                         'name': "Projekt %s" % id, | ||||||
|  |                         } | ||||||
|  |                 self._execute('project.project', 'write', [id], vals)         | ||||||
|  |       | ||||||
|  |             #Tasks | ||||||
|  |             ids = self._execute('project.task', 'search', []) | ||||||
|  |             for id in ids: | ||||||
|  |                 vals = { | ||||||
|  |                         'name': "Aufgabe %s" % id, | ||||||
|  |                         } | ||||||
|  |                 self._execute('project.task', 'write', [id], vals)         | ||||||
|  |          | ||||||
|  |     def make_anonymous_employee(self): | ||||||
|  |         if (self._execute('ir.module.module', 'search', [('name', '=', 'hr'), ('state', '=', 'installed')])): | ||||||
|  |             ids = self._execute('hr.employee', 'search', []) | ||||||
|  |             for id in ids: | ||||||
|  |                 vals = { | ||||||
|  |                         'name': "Mitarbeiter %s" % id, | ||||||
|  |                         'work_email': 'test@example.com',                 | ||||||
|  |                         } | ||||||
|  |                 self._execute('hr.employee','write', [id], vals) | ||||||
|  |                  | ||||||
|  |     def make_anonymous_leads(self): | ||||||
|  |         if (self._execute('ir.module.module', 'search', [('name', '=', 'crm'), ('state', '=', 'installed')])): | ||||||
|  |             ids = self._execute('crm.lead', 'search', []) | ||||||
|  |             for id in ids: | ||||||
|  |                 vals = { | ||||||
|  |                         'name': "Lead %s" % id,   | ||||||
|  |                         'email_from': 'test@example.com', | ||||||
|  |                         'description': '', | ||||||
|  |                         } | ||||||
|  |                 ids = self._execute('crm.lead','write', [id], vals)         | ||||||
|  | 
 | ||||||
|  |     def make_anonymous_mailserver(self): | ||||||
|  |         server_ids = self._execute('ir.mail_server', 'search', []) | ||||||
|  |         self._execute('ir.mail_server', 'write', server_ids, {'active': False}) | ||||||
|  |   | ||||||
|  |         server_ids = self._execute('fetchmail.server', 'search', []) | ||||||
|  |         self._execute('fetchmail.server', 'unlink', server_ids) | ||||||
|  | 
 | ||||||
|  |     def make_anonymous_cron(self): | ||||||
|  |         cron_ids = self._execute('ir.cron', 'search', []) | ||||||
|  |         if cron_ids: | ||||||
|  |             self._execute('ir.cron', 'write', cron_ids, {'active': False}) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |      | ||||||
		Loading…
	
		Reference in New Issue