update Repo für 10.0

develop
Andreas Brückl 2016-11-08 07:06:49 +01:00
parent 5db603678a
commit ea7df087a0
17 changed files with 189 additions and 239 deletions

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.python.pydev.debug.regularLaunchConfigurationType">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/INSTANCE/setup/lib/cli.py"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:INSTANCE/setup/lib/cli.py}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_OTHER_WORKING_DIRECTORY" value=""/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="${env_var:CAM_USER} update cam_custom"/>
<stringAttribute key="org.python.pydev.debug.ATTR_INTERPRETER" value="__default"/>
<stringAttribute key="org.python.pydev.debug.ATTR_PROJECT" value="INSTANCE"/>
<stringAttribute key="process_factory_id" value="org.python.pydev.debug.processfactory.PyProcessFactory"/>
</launchConfiguration>

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.python.pydev.debug.regularLaunchConfigurationType">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/INSTANCE/ext/odoo/odoo-dev.py"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:INSTANCE/ext/odoo/odoo-dev.py}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_OTHER_WORKING_DIRECTORY" value=""/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-c dev/odoo-server-dev-${env_var:CAM_USER}.conf --db-filter=&quot;^INSTANCE.*&quot;"/>
<stringAttribute key="org.python.pydev.debug.ATTR_INTERPRETER" value="__default"/>
<stringAttribute key="org.python.pydev.debug.ATTR_PROJECT" value="INSTANCE"/>
<stringAttribute key="process_factory_id" value="org.python.pydev.debug.processfactory.PyProcessFactory"/>
</launchConfiguration>

View File

@ -1,15 +0,0 @@
[options]
xmlrpc_port = 8080
; This is the password that allows database operations:
; admin_passwd = admin
db_host = False
db_port = 5432
db_user = False
db_password = False
addons_path = ext/odoo/addons,ext/custom-addons,dmi/run1
timezone = Europe/Brussels
#dbfilter_test = ['.*',]
show_debug = 1

View File

@ -1,15 +0,0 @@
[options]
xmlrpc_port = 8080
; This is the password that allows database operations:
; admin_passwd = admin
db_host = False
db_port = 5432
db_user = False
db_password = False
addons_path = ext/odoo/addons,ext/custom-addons,dmi/run1
timezone = Europe/Brussels
#dbfilter_test = ['.*',]
show_debug = 1

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,13 +0,0 @@
--- ext/odoo/odoo-dev.py 2015-04-08 10:11:02.000000000 +0200
+++ ext/odoo/odoo-dev.py 2015-04-08 10:11:02.000000000 +0200
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+import sys
+if sys.modules.get("gevent") is not None:
+ del sys.modules['gevent']
+import openerp
+
+if __name__ == "__main__":
+ openerp.cli.main()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,11 +0,0 @@
--- ext/odoo/openerp/report/report_sxw.py 2015-04-15 12:18:30.132784074 +0200
+++ ext/odoo/openerp/report/report_sxw.py 2015-04-15 11:48:21.743518606 +0200
@@ -476,6 +476,8 @@
processed_rml = etree.XML(rml)
if report_xml.use_global_header:
rml_parser._add_header(processed_rml, self.header)
+ else:
+ rml_parser._add_header(processed_rml, 'internal')
processed_rml = self.preprocess_rml(processed_rml,report_xml.report_type)
if rml_parser.logo:
logo = base64.decodestring(rml_parser.logo)

View File

@ -1,11 +0,0 @@
--- ext/odoo/openerp/report/render/rml2pdf/trml2pdf.py 2014-01-14 14:18:12.302306370 +0100
+++ ext/odoo/openerp/report/render/rml2pdf/trml2pdf.py 2014-01-14 14:18:16.770419846 +0100
@@ -740,7 +740,7 @@
rowheights = [utils.unit_get(f.strip()) for f in node.get('rowHeights').split(',')]
if len(rowheights) == 1:
rowheights = rowheights[0]
- table = platypus.LongTable(data = data, colWidths=colwidths, rowHeights=rowheights, **(utils.attr_get(node, ['splitByRow'] ,{'repeatRows':'int','repeatCols':'int'})))
+ table = platypus.LongTable(data = data, colWidths=colwidths, rowHeights=rowheights, **(utils.attr_get(node, ['splitByRow'] ,{'repeatRows':'int','repeatCols':'int', 'hAlign':'str'})))
if node.get('style'):
table.setStyle(self.styles.table_styles[node.get('style')])
for s in styles:

View File

View File

@ -5,18 +5,18 @@ import urlparse
from config_at import Config
from environments import ENVIRONMENTS, Environment
from functions import CamadeusFunctions
from functions import DatenpolFunctions
def main():
def _usage():
print '\nVerwendung: cam.py <environment> <command> [<module_name>/<setup_function>]\n'
print '\nVerwendung: dp.py <environment> <command> [<module_name>/<setup_function>]\n'
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 ' rollout Setzt Dokumentnummern, importiert Benutzer, setzt dp_dmi auf noupdate, ...'
print ' update module_name Modul updaten'
print ' install module_name Modul installieren'
print ' uninstall module_name Modul deinstallieren'
@ -35,7 +35,7 @@ def main():
_usage()
# RUNBOT
# ./cam runbot create [db] [port] [working-dir]
# ./dp runbot create [db] [port] [working-dir]
if argv[0] == 'runbot':
import os
@ -67,7 +67,7 @@ def main():
print 'Unbekannte Umgebung'
_usage()
instance = CamadeusFunctions(env, config)
instance = DatenpolFunctions(env, config)
methods = None
@ -81,8 +81,8 @@ def main():
'create_db',
'login',
'install_module_sale',
'setup_accounting',
'setup_accounting2',
#'setup_accounting',
#'setup_accounting2',
'set_admin_rights',
]
@ -101,32 +101,32 @@ def main():
'uninstall_chat',
'install_modules',
'set_warehouse',
'base_config',
'sale_config',
#'base_config',
#'sale_config',
#'finance_config',
'hr_config',
'stock_config',
'mrp_config',
'stock_set_cost_method',
'set_incoterms',
'purchase_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',
#'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_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',
#'setup_reports',
]
if cmd == 'setup':
@ -135,10 +135,10 @@ def main():
if cmd == 'rollout':
methods = [
'login',
'set_dokumentennummern',
'set_dmi_noupdate',
'dmi_confirm_inventory',
'import_users',
#'set_dokumentennummern',
#'set_dmi_noupdate',
#'dmi_confirm_inventory',
#'import_users',
]
if cmd == 'update':

View File

@ -2,7 +2,7 @@
class Config():
def __init__(self):
self.dump_file = 'upgraded_file_name.dump'
self.dump_file = 'odoo_backup.dump'
self.module_name = None
self.lang = 'de_DE' # de_DE, en_US
@ -14,23 +14,23 @@ class Config():
self.uom_decimals = 3 # Nachkommastellen Mengeneinheiten
self.company_data = {
'name': 'Camadeus GmbH',
'street': 'Wiedner Hauptstraße 135/B3',
'name': 'datenpol gmbh',
'street': 'Lederergasse 32',
'street2': False,
'city': 'Wien',
'zip': '1050',
'phone': '+43 1 78910 96 70',
'city': 'Linz',
'zip': '4020',
'phone': '+43 732 997 035-0',
'fax': False,
'email': 'office@camadeus.at',
'website': 'http://www.camadeus.at/',
'company_registry': '280076b',
'email': 'office@datenpol.at',
'website': 'http://www.datenpol.at/',
'company_registry': '359270p',
'country_id': 'at', # 'de' für Deutschland
'logo': False,
'vat': 'ATU 62991855',
'vat': 'ATU 66309611',
'rml_header1': False,
'vat_check_vies': True,
'tax_calculation_rounding_method': 'round_globally',
'logo': '../ext/custom-addons/cam_custom/static/src/img/logo.png',
'logo': '../ext/custom-addons/dp_custom/static/src/img/logo.png',
}
self.mail_server = {
@ -241,8 +241,8 @@ class Config():
]
self.default_values = [ # ir.values
#('product.template', 'type', 'service'),
#('product.template', 'type', 'XML:xmlid'), #mit prefix "XML:" kann eine XML ID übergeben werden
('product.template', 'type', 'service'),
('product.template', 'type', 'XML:xmlid'), #mit prefix "XML:" kann eine XML ID übergeben werden
]
self.data_updates = {

View File

@ -26,11 +26,8 @@ Port: %s
ENVIRONMENTS = {
# Local environments are listed with passwords
'br': Environment('http://localhost', '8080', 'INSTANCE_1', 'admin', 'x', 'admin'),
'sk': Environment('http://localhost', '8080', 'INSTANCE_1', 'admin', 'x', 'admin'),
'ha': Environment('http://localhost', '8080', 'INSTANCE_1', 'admin', 'x', 'admin'),
'jb': Environment('http://localhost', '8080', 'INSTANCE_1', 'admin', 'x', 'admin'),
'uk': Environment('http://localhost', '8080', 'INSTANCE_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.camadeus.at', '443', 'INSTANCE_1', 'admin'),
'test': Environment('https://INSTANCE.datenpol.at', '443', 'INSTANCE_1', 'admin'),
}

View File

@ -8,7 +8,8 @@ import xmlrpclib
import requests
class CamadeusFunctions():
class DatenpolFunctions():
def __init__(self, environment, config):
self.env = environment
self.config = config
@ -16,23 +17,22 @@ class CamadeusFunctions():
def create_db(self):
"""Neue Datenbank erstellen"""
payload = {'fields': [ {'name': 'super_admin_pwd', 'value': self.env.super_admin_pw},
{'name': 'db_name', 'value': self.env.dbname},
{'name': 'demo_data', 'value': False},
{'name': 'db_lang', 'value': self.config.lang},
{'name': 'create_admin_pwd', 'value': self.env.pwd},
]
}
payload = {'params': payload}
json_data = json.dumps(payload)
headers = {'content-type': 'application/json'}
r = requests.post('%s:%s/web/database/create' % (self.env.host, self.env.port), data=json_data, headers=headers, auth=self.env.basic_auth, verify=False)
if r and r.json().get('result', False):
return True
else:
msg = pprint.pformat(r.json().get('error', '????'))
print 'Error occured: %s' % msg
params = {
'master_pwd': self.env.super_admin_pw,
'name': self.env.dbname,
'login': self.env.username,
'password': self.env.pwd,
'lang': self.config.lang,
'country_code': self.config.company_data.get('country_id', 'at'),
}
if self.env.demo:
params.update(demo=1)
base_url = '%s:%s/web/database/create' % (self.env.host, self.env.port)
res = requests.post(base_url, params=params, verify=False, stream=True)
if not res.ok:
return False
return True
def create_dump(self):
""" Erstelle Odoo-Dump"""
@ -43,9 +43,9 @@ class CamadeusFunctions():
'backup_pwd': self.env.super_admin_pw,
'token': 'x',
}
res = requests.post(base_url, params=params, verify=False, stream=True)
if res.headers['Content-Type'].startswith('application/octet-stream'):
with open(self.config.dump_file, 'wb') as fh:
chunk_size = 100000
@ -69,12 +69,11 @@ class CamadeusFunctions():
print "\nACHTUNG: Nicht vergessen './cam [env] anonym' auszuführen, sodass es zu keiner Kommunikation mit dem Produktivsystem kommt"
return True
def login(self):
"""Login"""
# Get the uid
sock_common = xmlrpclib.ServerProxy ('%s:%s/xmlrpc/common' % (self.env.host, self.env.port))
sock_common = xmlrpclib.ServerProxy('%s:%s/xmlrpc/common' % (self.env.host, self.env.port))
self.uid = sock_common.login(self.env.dbname, self.env.username, self.env.pwd)
if not self.uid:
raise Exception('Authentication Error')
@ -84,12 +83,12 @@ class CamadeusFunctions():
def _execute(self, *args):
return self.sock.execute(self.env.dbname, self.uid, self.env.pwd, *args)
def _readAndReturnFile(self, filename, encode =''):
fi = open (filename, 'r')
def _readAndReturnFile(self, filename, encode=''):
fi = open(filename, 'r')
content = ''
if encode=='':
if encode == '':
content = fi.read()
elif encode=='base64':
elif encode == 'base64':
content = base64.b64encode(fi.read())
else:
sys.exit(-1)
@ -100,7 +99,7 @@ class CamadeusFunctions():
"""Setze Unternehmensdaten (Allgemein, RML, Logo)"""
vals = self.config.company_data
dummy,country_id = self._execute('ir.model.data', 'get_object_reference', 'base', vals['country_id'])
dummy, country_id = self._execute('ir.model.data', 'get_object_reference', 'base', vals['country_id'])
if vals.get('logo', False):
vals['logo'] = self._readAndReturnFile(vals['logo'], encode='base64')
@ -195,8 +194,9 @@ class CamadeusFunctions():
if hasattr(self.config, 'incoterms'):
terms = self.config.incoterms
for name,code in terms:
existing_ids = self._execute('stock.incoterms', 'search', ['|', ('active', '=', True), ('active', '=', False), ('code', '=', code)])
for name, code in terms:
existing_ids = self._execute('stock.incoterms', 'search',
['|', ('active', '=', True), ('active', '=', False), ('code', '=', code)])
if existing_ids:
vals = {
'active': True,
@ -210,7 +210,7 @@ class CamadeusFunctions():
}
self._execute('stock.incoterms', 'create', vals)
codes = [code for name,code in terms]
codes = [code for name, code in terms]
inactive_ids = self._execute('stock.incoterms', 'search', [('code', 'not in', codes)])
self._execute('stock.incoterms', 'write', inactive_ids, {'active': False})
@ -227,7 +227,8 @@ class CamadeusFunctions():
def install_module_sale(self):
"""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')])
self._execute('ir.module.module', 'button_install', modules_to_install)
self._execute('base.module.upgrade', 'upgrade_module', modules_to_install)
return True
@ -235,7 +236,8 @@ class CamadeusFunctions():
def install_modules(self):
"""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')])
self._execute('ir.module.module', 'button_install', modules_to_install)
self._execute('base.module.upgrade', 'upgrade_module', modules_to_install)
return True
@ -261,15 +263,15 @@ class CamadeusFunctions():
seq_dict = self.config.sequences
# Lieferschein
if seq_dict.get('picking.out',False):
if seq_dict.get('picking.out', False):
self._set_picking_sequence_prefix('outgoing', 'picking.out')
if seq_dict.get('picking.in',False):
if seq_dict.get('picking.in', False):
self._set_picking_sequence_prefix('incoming', 'picking.in')
if seq_dict.get('picking.int',False):
if seq_dict.get('picking.int', False):
self._set_picking_sequence_prefix('internal', 'picking.int')
# Angebot
if seq_dict.get('sale.order',False):
if seq_dict.get('sale.order', False):
s_ids = self._execute('ir.sequence', 'search', [('code', '=', 'sale.order')])
if len(s_ids) != 1:
return False
@ -277,7 +279,7 @@ class CamadeusFunctions():
return False
# Arbeitsschein
if seq_dict.get('work.order',False):
if seq_dict.get('work.order', False):
s_ids = self._execute('ir.sequence', 'search', [('code', '=', 'work.order')])
if len(s_ids) != 1:
return False
@ -285,7 +287,7 @@ class CamadeusFunctions():
return False
# EK-Angebot
if seq_dict.get('purchase.order',False):
if seq_dict.get('purchase.order', False):
s_ids = self._execute('ir.sequence', 'search', [('code', '=', 'purchase.order')])
if len(s_ids) != 1:
return False
@ -293,7 +295,7 @@ class CamadeusFunctions():
return False
# Rechnungsnummer
if seq_dict.get('account.invoice',False):
if seq_dict.get('account.invoice', False):
j_ids = self._execute('account.journal', 'search', [('code', '=', 'VK')])
if len(j_ids) != 1:
return False
@ -323,15 +325,15 @@ class CamadeusFunctions():
def set_admin_rights(self):
"""Setze Administrator Rechte"""
dummy,user_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'user_root')
dummy, user_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'user_root')
groups = []
# Technische Eigenschaften
dummy,group_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'group_no_one')
dummy, group_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'group_no_one')
groups.append((4, group_id))
# Finanzmanager
dummy,group_id = self._execute('ir.model.data', 'get_object_reference', 'account', 'group_account_manager')
dummy, group_id = self._execute('ir.model.data', 'get_object_reference', 'account', 'group_account_manager')
groups.append((4, group_id))
vals = {
@ -354,20 +356,22 @@ class CamadeusFunctions():
"""Konfiguration Kontenplan"""
c = self.config
sales_tax_ids = self._execute('account.tax.template', 'search', [('description', '=', c.sales_tax), ('parent_id', '=', False)])
sales_tax_ids = self._execute('account.tax.template', 'search',
[('description', '=', c.sales_tax), ('parent_id', '=', False)])
if not sales_tax_ids:
return False
purchase_tax_ids = self._execute('account.tax.template', 'search', [('description', '=', c.purchase_tax), ('parent_id', '=', False)])
purchase_tax_ids = self._execute('account.tax.template', 'search',
[('description', '=', c.purchase_tax), ('parent_id', '=', False)])
if not purchase_tax_ids:
return False
# Set Your Accounting Options
dummy,currency_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'EUR')
dummy, currency_id = self._execute('ir.model.data', 'get_object_reference', 'base', 'EUR')
vals = {}
vals['chart_template_id'] = c.chart_template_id
vals['sale_tax'] = sales_tax_ids[0]
vals['purchase_tax'] = purchase_tax_ids[0]
vals['company_id'] = 1 # Default
vals['company_id'] = 1 # Default
vals['currency_id'] = currency_id
wizard_id = self._execute('wizard.multi.charts.accounts', 'create', vals)
self._execute('wizard.multi.charts.accounts', 'action_next', [wizard_id])
@ -426,7 +430,7 @@ class CamadeusFunctions():
return False
# Update names
for uom_xml_id,name in c.active_uoms.items():
for uom_xml_id, name in c.active_uoms.items():
uom_id = self._execute('ir.model.data', 'xmlid_to_res_id', uom_xml_id)
res = self._execute('product.uom', 'write', [uom_id], {'name': name}, context)
if not res:
@ -443,10 +447,13 @@ class CamadeusFunctions():
self._execute('account.fiscal.position', 'write', invalid_ids, {'active': False})
# Mappings inaktiver Steuern löschen (also wenn rechte Seite eine inaktive Steuer ist, wie z. B "strf. i.g.L"))
valid_position_ids = self._execute('account.fiscal.position', 'search', [('name', 'in', c.valid_fiscal_positions)])
valid_position_ids = self._execute('account.fiscal.position', 'search',
[('name', 'in', c.valid_fiscal_positions)])
valid_tax_ids = self._execute('account.tax', 'search', [('parent_id', '=', False)])
position_tax_line_ids = self._execute('account.fiscal.position.tax', 'search', [('position_id', 'in', valid_position_ids), ('tax_dest_id', 'not in', valid_tax_ids)])
position_tax_line_ids = self._execute('account.fiscal.position.tax', 'search',
[('position_id', 'in', valid_position_ids),
('tax_dest_id', 'not in', valid_tax_ids)])
vals = {'tax_dest_id': False}
return self._execute('account.fiscal.position.tax', 'write', position_tax_line_ids, vals)
@ -454,9 +461,9 @@ class CamadeusFunctions():
"""Aktualisiere Modul"""
module_name = self.config.module_name
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:
raise Exception('Module "%s" not found or not installed.' % module_name)
raise Exception('Module "%s" not found or not installed.' % module_name)
self._execute('ir.module.module', 'button_upgrade', mod_ids)
self._execute('base.module.upgrade', 'upgrade_module', [])
@ -466,9 +473,10 @@ class CamadeusFunctions():
"""Installiere Modul"""
module_name = self.config.module_name
mod_ids = self._execute('ir.module.module', 'search', [('name', '=', module_name), ('state', '=', 'uninstalled')])
mod_ids = self._execute('ir.module.module', 'search',
[('name', '=', module_name), ('state', '=', 'uninstalled')])
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)
self._execute('ir.module.module', 'button_install', mod_ids)
self._execute('base.module.upgrade', 'upgrade_module', [])
@ -484,9 +492,9 @@ class CamadeusFunctions():
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')])
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)
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', [])
@ -495,9 +503,10 @@ class CamadeusFunctions():
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')])
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)
raise Exception("Module '%s' not found or is not installed." % module_name)
self._execute('ir.module.module', 'button_upgrade_cancel', mod_ids)
return True
@ -520,7 +529,8 @@ class CamadeusFunctions():
"""Aktualisiere Modul"""
for module_name in self.config.modules:
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:
raise Exception('Module "%s" not found or ist not installed.' % module_name)
self._execute('ir.module.module', 'button_upgrade', mod_ids)
@ -531,7 +541,8 @@ class CamadeusFunctions():
def set_warehouse(self):
"""Name des Zentrallagers setzen"""
is_installed = self._execute('ir.module.module', 'search', [('name', '=', 'stock'), ('state', '=', 'installed')])
is_installed = self._execute('ir.module.module', 'search',
[('name', '=', 'stock'), ('state', '=', 'installed')])
if is_installed:
vals = {
'name': self.config.warehouse_name or self.config.company_data.get('name', 'Mein Unternehmen'),
@ -547,7 +558,7 @@ class CamadeusFunctions():
def set_dmi_noupdate(self):
"""DMI: Einträge auf 'no update' setzen"""
domain = [('module','=','cam_dmi'), ('noupdate', '=', False)]
domain = [('module', '=', 'dp_dmi'), ('noupdate', '=', False)]
data_ids = self._execute('ir.model.data', 'search', domain)
vals = {'noupdate': True}
@ -556,7 +567,7 @@ class CamadeusFunctions():
def dmi_confirm_inventory(self):
"""DMI: Lagerstand einbuchen"""
dummy,inventory_id = self._execute('ir.model.data', 'get_object_reference', 'cam_dmi','inv_init')
dummy, inventory_id = self._execute('ir.model.data', 'get_object_reference', 'dp_dmi', 'inv_init')
inventory = self._execute('stock.inventory', 'read', inventory_id, ['state'])
@ -620,12 +631,13 @@ class CamadeusFunctions():
vals = {}
vals['res_model'] = 'res.users'
vals['file'] = self._readAndReturnFile(self.config.users_file)
fields = [u'id', u'name', u'login', u'email', u'groups_id/id', False, u'tz', u'mobile', u'phone', u'function']
options = {u'headers': True, u'quoting': u'"', u'separator': u',', u'encoding': u'utf-8'}
fields = [u'id', u'name', u'login', u'email', u'groups_id/id', False, u'tz', u'mobile', u'phone',
u'function']
options = {u'headers': True, u'quoting': u'"', u'separator': u',', u'encoding': u'utf-8'}
wizard_id = self._execute('base_import.import', 'create', vals)
if wizard_id:
messages = self._execute('base_import.import', 'do', wizard_id, fields,options)
messages = self._execute('base_import.import', 'do', wizard_id, fields, options)
if messages:
print messages
return False
@ -677,11 +689,11 @@ class CamadeusFunctions():
def set_default_values(self):
"""Defaultwerte für Dokumente setzen"""
for model,field,value in self.config.default_values:
for model, field, value in self.config.default_values:
# Falls XML ID (prefix "XML:") dann die DB ID holen
if value[0:4] == 'XML:':
xml_id = value[4:]
dummy,dummy2,res_id = self._execute('ir.model.data', 'xmlid_lookup', xml_id)
dummy, dummy2, res_id = self._execute('ir.model.data', 'xmlid_lookup', xml_id)
if not res_id:
raise Exception('Defaultwerte anlegen: XML ID %s nicht vorhanden!' % (xml_id))
value = res_id
@ -704,9 +716,9 @@ class CamadeusFunctions():
def update_special_values(self):
"""Spezialwerte setzen"""
#Z. B.:
# Z. B.:
## Lösche alle Anreden außer Herr und Frau
#data_deletes = [
# data_deletes = [
# 'base.res_partner_title_doctor',
# 'base.res_partner_title_miss',
# 'base.res_partner_title_prof',
@ -715,8 +727,8 @@ class CamadeusFunctions():
# 'base.res_partner_title_ltd',
# 'sale.email_template_edi_sale',
# 'account.email_template_edi_invoice',
#]
#for xml_id in data_deletes:
# ]
# 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])
@ -728,8 +740,8 @@ class CamadeusFunctions():
def update_values(self):
"""Existierende Daten aktualisieren"""
for xml_id,vals in self.config.data_updates.items():
dummy,model,res_id = self._execute('ir.model.data', 'xmlid_lookup', xml_id)
for xml_id, vals in self.config.data_updates.items():
dummy, model, res_id = self._execute('ir.model.data', 'xmlid_lookup', xml_id)
self._execute(model, 'write', [res_id], vals)
return True
@ -737,7 +749,7 @@ class CamadeusFunctions():
def set_sys_params(self):
"""Systemparameter setzen"""
for key,value in self.config.system_parameters.items():
for key, value in self.config.system_parameters.items():
param_ids = self._execute('ir.config_parameter', 'search', [('key', '=', key)])
vals = {
'key': key,
@ -749,6 +761,17 @@ class CamadeusFunctions():
self._execute('ir.config_parameter', 'create', vals)
return True
def remove_sys_params(self):
"""Systemparameter entfernen"""
for key, value in self.config.system_parameters_remove_on_rollout.items():
print key
param_ids = self._execute('ir.config_parameter', 'search', [('key', '=', key)])
print param_ids
if param_ids:
self._execute('ir.config_parameter', 'unlink', param_ids)
return True
def setup_reports(self):
"""Berichte konfigurieren"""
@ -763,13 +786,13 @@ class CamadeusFunctions():
def invalidate_email(self):
"""In E-Mail-Adressen @ durch # ersetzen, um unbeabsichtigen E-Mail-Versand zu vermeiden"""
#E-Mail adressen von res_partner: @ -> #
p_ids = self._execute('res.partner', 'search', [('email','ilike','%@%')])
# 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('@','#')
new_email = email.replace('@', '#')
self._execute('res.partner', 'write', [id], {'email': new_email})
def finance_config(self):
@ -786,10 +809,10 @@ class CamadeusFunctions():
"""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_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
@ -809,27 +832,27 @@ class CamadeusFunctions():
ids = self._execute('res.partner', 'search', [])
for id in ids:
vals = {
'name': 'Partner %s' % id,
'street': '----',
'email': 'test@example.com',
}
'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')])):
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,
}
'name': 'Projekt %s' % id,
}
self._execute('project.project', 'write', [id], vals)
#Tasks
# Tasks
ids = self._execute('project.task', 'search', [])
for id in ids:
vals = {
'name': 'Aufgabe %s' % id,
}
'name': 'Aufgabe %s' % id,
}
self._execute('project.task', 'write', [id], vals)
def make_anonymous_employee(self):
@ -837,21 +860,21 @@ class CamadeusFunctions():
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)
'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)
'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', [])
@ -864,3 +887,28 @@ class CamadeusFunctions():
cron_ids = self._execute('ir.cron', 'search', [])
if cron_ids:
self._execute('ir.cron', 'write', cron_ids, {'active': False})
def set_ext_ids(self):
"""ExtIDs für Accounts und Types"""
# # Konten Ext IDs
# lst_accs = ['200000', '330000', '250000', '350000'] # odoo 9 nummern
# for acc in lst_accs:
# res_id = self._execute('account.account', 'search', [('code', '=', acc)])
# # print "---------------------------------------------"
# # print acc
# # print res_id
# vals = {
# 'name': 'cust_account_mapp_' + acc,
# 'module': 'account',
# 'model': 'account.account',
# 'res_id': res_id[0],
# }
# try:
# self._execute('ir.model.data', 'create', vals)
# except:
# print "Fehler Anlage ExtID " + 'cust_account_mapp_' + acc
return True