Trucs d'OpenERP

Convertir report openoffice (sxw) a rml

cd bin/addons/base_report_designer/wizard/tiny_sxw2rml
./tiny_sxw2rml.py fitxer.sxw > fitxer.rml

Cerca dins del codi OpenERP

grep "text a cercar" * -r|grep "xml"|grep -v "msgid" |grep -v ".svn"|grep -v ".pyc"

tgz d'un mòdul d'OpenERP

tar --exclude=.svn --exclude=*pyc --exclude=*~ -cvzf modul.tgz modul

Traduccions en OpenERP

En OpenERP se utiliza la sintaxis al estilo gettext con _(“texto”) para marcar el texto a traducir. El problema que tiene OpenERP a diferencia del procedimiento habitual de gettext es que como se trata de un protocolo sin estado, el idioma de la traducción puede ser distinto cada vez que se llama la función. Por esto, a diferencia de la mayoría de aplicaciones de escritorio, no se puede establecer el idioma del usuario de forma global.

Afortunadamente, en OpenERP tenemos la variable “context” en casi todas las funciones y ahí dentro acostumbra a estar el idioma del usuario. Es precisamente esto lo que utiliza OpenERP para las traducciones, pero tiene que hacer un pequeño hack y tenemos que declarar la clase “_”.

Es por esto, que en cualquier fichero que tengamos que traducir algo debemos hacer el import correspondiente:

from tools.translate import _

Además, debemos asegurarnos que dónde están las llamadas a “_”, está disponible la variable “context”. Es decir si tenemos algo del estilo:

def check(self, values):
	if not values.get('field'):
		raise osv.except_osv(_("Error"), _("Error!"))

def create(self, cr, uid, values, context={}):
	self.mycheck(values)

No se va a traducir!! Tenemos que pasar el context como parámetro:

def check(self, values, context):
	if not values.get('field'):
		raise osv.except_osv(_("Error"), _("Error!"))

def create(self, cr, uid, values, context={}):
	self.mycheck(values, context)

A parte de esto comentar que _() debe englobar sólo texto:

_("Value: %s") % valor

y no

_("Value: %s" % valor)

Correcció arbre de comptes

alter table account_account drop parent_left;
alter table account_account drop parent_right;

and restart the server with –update=account

OpenERP starting improvement

First thing I do after creating a new database (to develop) is to add some indexes like these:

CREATE INDEX ir_model_data__module_model_id__index ON ir_model_data (module, model, id);
CREATE INDEX ir_model_fields__model_state__index ON ir_model_fields (model, state);

That make reloading modules faster (so you save time each time you need to test your module):

SELECT ir_model_data.id FROM "ir_model_data" WHERE (ir_model_data.module IN (E'')) AND (ir_model_data.model IN (E'',E'',E'')) ORDER BY id;

(runs about 400 times when reloading modules) ⇒ goes from a total 1.8 seconds to 0.2 seconds.

SELECT * FROM ir_model_fields WHERE model=E'' AND state=E'';

(runs about 800 times when reloading modules) ⇒ goes from 1.0 second to 0.3 seconds.

That's more than 2 seconds saved each time you reload the addons or start the server.

Code debbuging

Try with this code:

import pdb; pdb.set_trace()

It will 'stop' the server and open a command-line debugger (http://docs.python.org/library/pdb.html) when the code reaches the set_trace() sentence. You can use “p variable-name” to examine variables, “n” to run next sencence, “c” to continue running, “l” to list the code… It will not replace an IDE debugger, but it's a fast and simple way to set a break-point. Smile

Error/log terminal

import netsvc

logger = netsvc.Logger()
logger.notifyChannel(_("Internet Domain"), netsvc.LOG_INFO, _("Mail from Account %s successfully Sent.") % (id))
logger.notifyChannel(_("Power Email"), netsvc.LOG_ERROR, _("Sending of Mail %s failed. Probable Reason:Could not login to server\nError: %s")% (id,error))

Canviar companyia/adreça principal

Si hem eliminat la companyia amb id=1 o l'adreça principal de l'empresa de la companyia amb id=1 podem tenir problemes en actualitzar el servidor OpenERP amb l'opció -u all.

Cal cercar les id de la nova companyia i de l'adreça principal de l'empresa de la companyia i executar aquests SQL:

UPDATE ir_model_data SET res_id=nova_id_companyia WHERE name='main_company';
UPDATE ir_model_data SET res_id=nova_id_adreca WHERE name='main_address';

Per TinyERP 4.2 (obsolet)

Exportar fitxer CSV per la traducció:

./tinyerp-server.py -l es_ES --i18n-export=travel.csv -d terp.4.2.0 --modules=travel

Importar fitxer CSV amb la traducció:

./tinyerp-server.py -l es_ES --i18n-import=travel.csv -d terp.4.2.0
 
openerp/adaptacio.txt · Darrera modificació: 2010/04/24 15:03 per jesteve
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki