From 91f9eaf3b630fe174fa13c72811b598a4f17a482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 24 Apr 2012 12:18:29 +0200 Subject: [PATCH 01/85] Increase version number --- trytond/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/version.py b/trytond/version.py index f7c82c0b8e..e55fed6bbe 100644 --- a/trytond/version.py +++ b/trytond/version.py @@ -1,6 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.4.0" +VERSION = "2.4.1" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/" From 0406268c2d9220e4519d018e073deacbfe92dd5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 23 Apr 2012 22:01:53 +0200 Subject: [PATCH 02/85] Restore es_AR translation (transplanted from 0fb246751b99764b0cd429a2cf50b6c1070c61df) --- trytond/ir/locale/es_AR.po | 3820 ++++++++++++++++++++++++++++++++ trytond/res/locale/es_AR.po | 1058 +++++++++ trytond/webdav/locale/es_AR.po | 190 ++ 3 files changed, 5068 insertions(+) diff --git a/trytond/ir/locale/es_AR.po b/trytond/ir/locale/es_AR.po index 542f2921b5..b3889fac0f 100644 --- a/trytond/ir/locale/es_AR.po +++ b/trytond/ir/locale/es_AR.po @@ -1,3 +1,3823 @@ # msgid "" msgstr "Content-Type: text/plain; charset=utf-8\n" + +msgctxt "error:access_error:" +msgid "" +"You try to bypass an access rule!\n" +"(Document type: %s)" +msgstr "" +"Está intentando evitar una regla de acceso\n" +"(Tipo de documento: %s)" + +msgctxt "error:delete_xml_record:" +msgid "You are not allowed to delete this record." +msgstr "No está autorizado a borrar este registro." + +msgctxt "error:digits_validation_record:" +msgid "The field \"%s\" on \"%s\" has too many decimal digits." +msgstr "El campo \"%s\" en \"%s\" tiene demasiados dígitos decimales." + +msgctxt "error:domain_validation_record:" +msgid "The value of the field \"%s\" on \"%s\" is not valid according to its domain." +msgstr "El valor del campo «%s» en «%s» no es válido según su dominio." + +msgctxt "error:foreign_model_exist:" +msgid "Could not delete \"%s\" records because they are used on field \"%s\" of \"%s\"." +msgstr "" +"No se pudieron borrar «%s» registros porque se usan en el campo «%s» de " +"«%s»." + +msgctxt "error:foreign_model_missing:" +msgid "The value of field \"%s\" on \"%s\" doesn't exist." +msgstr "El valor del campo «%s» en «%s» no existe." + +msgctxt "error:ir.action.act_window:" +msgid "Invalid context!" +msgstr "¡Contexto inválido!" + +msgctxt "error:ir.action.act_window:" +msgid "Invalid domain or search criteria!" +msgstr "¡Dominio o criterios de búsqueda inválido!" + +msgctxt "error:ir.action.act_window:" +msgid "Invalid views!" +msgstr "¡Vistas inválidas!" + +msgctxt "error:ir.action.keyword:" +msgid "Wrong wizard model!" +msgstr "El modelo del asistente no es válido" + +msgctxt "error:ir.action.report:" +msgid "Invalid email!" +msgstr "¡Correo electrónico inválido!" + +msgctxt "error:ir.action.report:" +msgid "The internal name must be unique by module!" +msgstr "¡El nombre interno de los módulos debe ser único!" + +msgctxt "error:ir.attachment:" +msgid "The names of attachments must be unique by resource!" +msgstr "¡Los nombres de los archivos adjuntos deben ser únicos por recurso!" + +msgctxt "error:ir.cron:" +msgid "Scheduled action failed" +msgstr "La acción programada ha fallado" + +msgctxt "error:ir.cron:" +msgid "" +"The following action failed to execute properly: \"%s\"\n" +" Traceback: \n" +"\n" +"%s\n" +msgstr "" +"La siguiente acción no se ejecutó correctamente: «%s»\n" +" Traza:\n" +"\n" +"%s\n" + +msgctxt "error:ir.lang:" +msgid "Invalid Grouping!" +msgstr "El agrupamiento no es válido" + +msgctxt "error:ir.lang:" +msgid "The date format is not valid!" +msgstr "El formato de la fecha no es válido" + +msgctxt "error:ir.lang:" +msgid "decimal_point and thousands_sep must be different!" +msgstr "«decimal_point» y «thousands_sep» deben ser distintos" + +msgctxt "error:ir.model.access:" +msgid "Only one record by model and group is allowed!" +msgstr "Solo se permite un registro por modelo y grupo" + +msgctxt "error:ir.model.access:" +msgid "You can not create this kind of document! (%s)" +msgstr "No puede crear este tipo de documento (%s)" + +msgctxt "error:ir.model.access:" +msgid "You can not delete this document! (%s)" +msgstr "No puede borrar este documento (%s)" + +msgctxt "error:ir.model.access:" +msgid "You can not read this document! (%s)" +msgstr "No puede leer este documento (%s)" + +msgctxt "error:ir.model.access:" +msgid "You can not write in this document! (%s)" +msgstr "No puede escribir en este documento (%s)" + +msgctxt "error:ir.model.button:" +msgid "The button name in model must be unique!" +msgstr "¡El nombre del botón en el modelo debe ser único!" + +msgctxt "error:ir.model.data:" +msgid "The triple (fs_id, module, model) must be unique!" +msgstr "¡La terna (fs_id, module, model) debe ser única!" + +msgctxt "error:ir.model.field.access:" +msgid "Only one record by field and group is allowed!" +msgstr "¡Sólo está permitido un registro por campo y grupo!" + +msgctxt "error:ir.model.field.access:" +msgid "You can not read the field! (%s.%s)" +msgstr "¡No puede leer el campo! (%s.%s)" + +msgctxt "error:ir.model.field.access:" +msgid "You can not write on the field! (%s.%s)" +msgstr "¡No puede escribir en el campo! (%s.%s)" + +msgctxt "error:ir.model.field:" +msgid "Model Field Name must be a python identifier!" +msgstr "¡El campo del Nombre del Modelo debe ser un identificador de Python!" + +msgctxt "error:ir.model.field:" +msgid "The field name in model must be unique!" +msgstr "¡El nombre del campo en el modelo debe ser único!" + +msgctxt "error:ir.model:" +msgid "Module Name must be a python identifier!" +msgstr "¡El Nombre del Módulo debe ser un identificador de Python!" + +msgctxt "error:ir.model:" +msgid "The model must be unique!" +msgstr "¡El modelo debe ser único!" + +msgctxt "error:ir.module.module.dependency:" +msgid "Dependency must be unique by module!" +msgstr "¡Las dependencias por módulo deben ser únicas!" + +msgctxt "error:ir.module.module:" +msgid "Missing dependencies %s for module \"%s\"" +msgstr "Faltan las dependencias %s para el módulo «%s»" + +msgctxt "error:ir.module.module:" +msgid "The modules you are trying to uninstall depends on installed modules:" +msgstr "" +"Los módulos que está intentando desinstalar dependen de módulos instalados:" + +msgctxt "error:ir.module.module:" +msgid "The name of the module must be unique!" +msgstr "¡El nombre del módulo debe ser único!" + +msgctxt "error:ir.module.module:" +msgid "You can not remove a module that is installed or will be installed" +msgstr "" +"No puede eliminar un módulo que está instalado o que va a ser instalado" + +msgctxt "error:ir.rule.group:" +msgid "Global and Default are mutually exclusive!" +msgstr "«Global» y «Predeterminado» son mutuamente excluyentes" + +msgctxt "error:ir.sequence.strict:" +msgid "Invalid prefix/suffix!" +msgstr "prefijo/sufijo no válido" + +msgctxt "error:ir.sequence.strict:" +msgid "Last Timestamp could not be in future!" +msgstr "¡La Última Marca de Tiempo no puede situarse en el futuro!" + +msgctxt "error:ir.sequence.strict:" +msgid "Missing sequence!" +msgstr "Falta la secuencia" + +msgctxt "error:ir.sequence.strict:" +msgid "Timestamp rounding should be greater than 0" +msgstr "El redondeo de la marca de tiempo debe ser mayor que 0" + +msgctxt "error:ir.sequence:" +msgid "Invalid prefix/suffix!" +msgstr "prefijo/sufijo no válido" + +msgctxt "error:ir.sequence:" +msgid "Last Timestamp could not be in future!" +msgstr "¡La Última Marca de Tiempo no puede situarse en el futuro!" + +msgctxt "error:ir.sequence:" +msgid "Missing sequence!" +msgstr "Falta la secuencia" + +msgctxt "error:ir.sequence:" +msgid "Timestamp rounding should be greater than 0" +msgstr "El redondeo de la marca de tiempo debe ser mayor que 0" + +msgctxt "error:ir.translation:" +msgid "Translation must be unique" +msgstr "La traducción debe ser única" + +msgctxt "error:ir.trigger:" +msgid "\"On Time\" and others are mutually exclusive!" +msgstr "¡\"Al Tiempo\" y otros son mutuamente excluyentes!" + +msgctxt "error:ir.trigger:" +msgid "Condition must be a python expression!" +msgstr "¡Condición debe ser una expresión Python!" + +msgctxt "error:ir.ui.menu:" +msgid "You can not create recursive menu!" +msgstr "¡No puede crear menú recursivo!" + +msgctxt "error:ir.ui.menu:" +msgid "You can not use \" / \" in name field!" +msgstr "¡No puede utilizar \" /\" en el nombre del campo!" + +msgctxt "error:ir.ui.view:" +msgid "Invalid XML for View!" +msgstr "El XML de la vista no es válido" + +msgctxt "error:not_found_in_selection:" +msgid "Key %r not found in selection field %r" +msgstr "Clave %r no encontrada en campo de selección %r" + +msgctxt "error:read_error:" +msgid "" +"You try to read records that don't exist anymore!\n" +"(Document type: %s)" +msgstr "" +"Está intentando leer registros que ya no existen\n" +"(Tipo de documento: %s)" + +msgctxt "error:reference_syntax_error:" +msgid "Syntax error for reference %r in %s" +msgstr "Error de sintaxis para referencia %r en %s" + +msgctxt "error:relation_not_found:" +msgid "Relation not found: %r in %s" +msgstr "Relación no encontrada: %r en %s" + +msgctxt "error:required_field:" +msgid "The field \"%s\" on \"%s\" is required." +msgstr "El campo «%s» en «%s» es necesario." + +msgctxt "error:required_validation_record:" +msgid "The field \"%s\" on \"%s\" is required." +msgstr "El campo «%s» en «%s» es necesario." + +msgctxt "error:search_function_missing:" +msgid "Missing search function on field \"%s\"." +msgstr "¡Falta función de búsqueda en el campo \"%s\"." + +msgctxt "error:size_validation_record:" +msgid "The field \"%s\" on \"%s\" is too long." +msgstr "El campo «%s» en «%s» es muy largo." + +msgctxt "error:too_many_relations_found:" +msgid "Too many relations found: %r in %s" +msgstr "Demasiadas relaciones encontradas: %r en %s" + +msgctxt "error:write_error:" +msgid "" +"You try to write on records that don't exist anymore!\n" +"(Document type: %s)" +msgstr "" +"Está tratando de escribir en registros que ya no existen\n" +"(Tipo de documento: %s)" + +msgctxt "error:write_xml_record:" +msgid "You are not allowed to modify this record." +msgstr "No está autorizado para modificar este registro." + +msgctxt "error:xml_id_syntax_error:" +msgid "Syntax error for XML id %r in %s" +msgstr "Error de sintaxis para id XML %r en %s" + +msgctxt "error:xml_record_desc:" +msgid "This record is part of the base configuration." +msgstr "Este registro es parte de la configuración base." + +msgctxt "field:ir.action,active:" +msgid "Active" +msgstr "Activo" + +msgctxt "field:ir.action,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.action,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.action,groups:" +msgid "Groups" +msgstr "Grupos" + +msgctxt "field:ir.action,icon:" +msgid "Icon" +msgstr "Icono" + +msgctxt "field:ir.action,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.action,keywords:" +msgid "Keywords" +msgstr "Palabras clave" + +msgctxt "field:ir.action,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.action,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.action,type:" +msgid "Type" +msgstr "Tipo" + +msgctxt "field:ir.action,usage:" +msgid "Usage" +msgstr "Uso" + +msgctxt "field:ir.action,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.action,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.action.act_window,act_window_views:" +msgid "Views" +msgstr "Vistas" + +msgctxt "field:ir.action.act_window,action:" +msgid "Action" +msgstr "Acción" + +msgctxt "field:ir.action.act_window,auto_refresh:" +msgid "Auto-Refresh" +msgstr "Auto-Recargar" + +msgctxt "field:ir.action.act_window,context:" +msgid "Context Value" +msgstr "Valor del contexto" + +msgctxt "field:ir.action.act_window,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.action.act_window,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.action.act_window,domain:" +msgid "Domain Value" +msgstr "Valor del dominio" + +msgctxt "field:ir.action.act_window,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.action.act_window,limit:" +msgid "Limit" +msgstr "Límite" + +msgctxt "field:ir.action.act_window,pyson_context:" +msgid "PySON Context" +msgstr "Contexto PySON" + +msgctxt "field:ir.action.act_window,pyson_domain:" +msgid "PySON Domain" +msgstr "Dominio de PySON" + +msgctxt "field:ir.action.act_window,pyson_search_value:" +msgid "PySON Search Criteria" +msgstr "Criterio de Búsqueda de PySON" + +msgctxt "field:ir.action.act_window,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.action.act_window,res_model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.action.act_window,search_value:" +msgid "Search Criteria" +msgstr "Criterio de búsqueda" + +msgctxt "field:ir.action.act_window,views:" +msgid "Views" +msgstr "Vistas" + +msgctxt "field:ir.action.act_window,window_name:" +msgid "Window Name" +msgstr "Nombre de la ventana" + +msgctxt "field:ir.action.act_window,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.action.act_window,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.action.act_window.view,act_window:" +msgid "Action" +msgstr "Acción" + +msgctxt "field:ir.action.act_window.view,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.action.act_window.view,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.action.act_window.view,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.action.act_window.view,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.action.act_window.view,sequence:" +msgid "Sequence" +msgstr "Secuencia" + +msgctxt "field:ir.action.act_window.view,view:" +msgid "View" +msgstr "Vista" + +msgctxt "field:ir.action.act_window.view,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.action.act_window.view,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.action.keyword,action:" +msgid "Action" +msgstr "Acción" + +msgctxt "field:ir.action.keyword,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.action.keyword,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.action.keyword,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.action.keyword,keyword:" +msgid "Keyword" +msgstr "Palabra clave" + +msgctxt "field:ir.action.keyword,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.action.keyword,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.action.keyword,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.action.keyword,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.action.report,action:" +msgid "Action" +msgstr "Acción" + +msgctxt "field:ir.action.report,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.action.report,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.action.report,direct_print:" +msgid "Direct Print" +msgstr "Impresión directa" + +msgctxt "field:ir.action.report,email:" +msgid "Email" +msgstr "Correo electrónico" + +msgctxt "field:ir.action.report,extension:" +msgid "Extension" +msgstr "Extensión" + +msgctxt "field:ir.action.report,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.action.report,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.action.report,module:" +msgid "Module" +msgstr "Módulo" + +msgctxt "field:ir.action.report,pyson_email:" +msgid "PySON Email" +msgstr "Correo electrónico PySON" + +msgctxt "field:ir.action.report,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.action.report,report:" +msgid "Path" +msgstr "Ruta" + +msgctxt "field:ir.action.report,report_content:" +msgid "Content" +msgstr "Contenido" + +msgctxt "field:ir.action.report,report_content_custom:" +msgid "Content" +msgstr "Contenido" + +msgctxt "field:ir.action.report,report_name:" +msgid "Internal Name" +msgstr "Nombre interno" + +msgctxt "field:ir.action.report,style:" +msgid "Style" +msgstr "Estilo" + +msgctxt "field:ir.action.report,style_content:" +msgid "Style" +msgstr "Estilo" + +msgctxt "field:ir.action.report,template_extension:" +msgid "Template Extension" +msgstr "Plantilla de Extensión" + +msgctxt "field:ir.action.report,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.action.report,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.action.url,action:" +msgid "Action" +msgstr "Acción" + +msgctxt "field:ir.action.url,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.action.url,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.action.url,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.action.url,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.action.url,url:" +msgid "Action Url" +msgstr "URL de la acción" + +msgctxt "field:ir.action.url,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.action.url,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.action.wizard,action:" +msgid "Action" +msgstr "Acción" + +msgctxt "field:ir.action.wizard,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.action.wizard,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.action.wizard,email:" +msgid "Email" +msgstr "Correo electrónico" + +msgctxt "field:ir.action.wizard,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.action.wizard,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.action.wizard,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.action.wizard,window:" +msgid "Window" +msgstr "Ventana" + +msgctxt "field:ir.action.wizard,wiz_name:" +msgid "Wizard name" +msgstr "Nombre del asistente" + +msgctxt "field:ir.action.wizard,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.action.wizard,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.attachment,collision:" +msgid "Collision" +msgstr "Colisión" + +msgctxt "field:ir.attachment,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.attachment,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.attachment,data:" +msgid "Data" +msgstr "Datos" + +msgctxt "field:ir.attachment,data_size:" +msgid "Data size" +msgstr "Tamaño de datos" + +msgctxt "field:ir.attachment,description:" +msgid "Description" +msgstr "Descripción" + +msgctxt "field:ir.attachment,digest:" +msgid "Digest" +msgstr "Resumen" + +msgctxt "field:ir.attachment,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.attachment,last_modification:" +msgid "Last Modification" +msgstr "Última Modificación" + +msgctxt "field:ir.attachment,last_user:" +msgid "Last User" +msgstr "Último Usuario" + +msgctxt "field:ir.attachment,link:" +msgid "Link" +msgstr "Enlace" + +msgctxt "field:ir.attachment,name:" +msgid "Name" +msgstr "Nombre del adjunto" + +msgctxt "field:ir.attachment,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.attachment,resource:" +msgid "Resource" +msgstr "Recurso" + +msgctxt "field:ir.attachment,summary:" +msgid "Summary" +msgstr "Resumen" + +msgctxt "field:ir.attachment,type:" +msgid "Type" +msgstr "Tipo" + +msgctxt "field:ir.attachment,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.attachment,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.cache,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.cache,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.cache,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.cache,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.cache,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.cache,timestamp:" +msgid "Timestamp" +msgstr "Marca de tiempo" + +msgctxt "field:ir.cache,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.cache,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.cron,active:" +msgid "Active" +msgstr "Activo" + +msgctxt "field:ir.cron,args:" +msgid "Arguments" +msgstr "Argumentos" + +msgctxt "field:ir.cron,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.cron,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.cron,function:" +msgid "Function" +msgstr "Función" + +msgctxt "field:ir.cron,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.cron,interval_number:" +msgid "Interval Number" +msgstr "Número intervalo" + +msgctxt "field:ir.cron,interval_type:" +msgid "Interval Unit" +msgstr "Unidad intervalo" + +msgctxt "field:ir.cron,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.cron,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.cron,next_call:" +msgid "Next Call" +msgstr "Próxima Llamada" + +msgctxt "field:ir.cron,number_calls:" +msgid "Number of Calls" +msgstr "Número de Llamadas" + +msgctxt "field:ir.cron,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.cron,repeat_missed:" +msgid "Repeat Missed" +msgstr "Repetir Fallidos" + +msgctxt "field:ir.cron,request_user:" +msgid "Request User" +msgstr "Ordenante" + +msgctxt "field:ir.cron,user:" +msgid "Execution User" +msgstr "Ejecutado por" + +msgctxt "field:ir.cron,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.cron,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.date,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.export,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.export,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.export,export_fields:" +msgid "Fields" +msgstr "Campos" + +msgctxt "field:ir.export,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.export,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.export,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.export,resource:" +msgid "Resource" +msgstr "Recurso" + +msgctxt "field:ir.export,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.export,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.export.line,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.export.line,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.export.line,export:" +msgid "Export" +msgstr "Exportar" + +msgctxt "field:ir.export.line,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.export.line,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.export.line,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.export.line,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.export.line,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.lang,active:" +msgid "Active" +msgstr "Activo" + +msgctxt "field:ir.lang,code:" +msgid "Code" +msgstr "Código" + +msgctxt "field:ir.lang,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.lang,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.lang,date:" +msgid "Date" +msgstr "Fecha" + +msgctxt "field:ir.lang,decimal_point:" +msgid "Decimal Separator" +msgstr "Separador decimal" + +msgctxt "field:ir.lang,direction:" +msgid "Direction" +msgstr "Dirección" + +msgctxt "field:ir.lang,grouping:" +msgid "Grouping" +msgstr "Agrupación" + +msgctxt "field:ir.lang,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.lang,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.lang,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.lang,thousands_sep:" +msgid "Thousands Separator" +msgstr "Separador de miles" + +msgctxt "field:ir.lang,translatable:" +msgid "Translatable" +msgstr "Traducible" + +msgctxt "field:ir.lang,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.lang,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.model,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.model,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.model,fields:" +msgid "Fields" +msgstr "Campos" + +msgctxt "field:ir.model,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.model,info:" +msgid "Information" +msgstr "Información" + +msgctxt "field:ir.model,model:" +msgid "Model Name" +msgstr "Nombre del modelo" + +msgctxt "field:ir.model,module:" +msgid "Module" +msgstr "Módulo" + +msgctxt "field:ir.model,name:" +msgid "Model Description" +msgstr "Descripción del modelo" + +msgctxt "field:ir.model,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.model,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.model,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.model.access,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.model.access,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.model.access,description:" +msgid "Description" +msgstr "Descripción" + +msgctxt "field:ir.model.access,group:" +msgid "Group" +msgstr "Grupo" + +msgctxt "field:ir.model.access,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.model.access,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.model.access,perm_create:" +msgid "Create Access" +msgstr "Acceso para crear" + +msgctxt "field:ir.model.access,perm_delete:" +msgid "Delete Access" +msgstr "Acceso para borrar" + +msgctxt "field:ir.model.access,perm_read:" +msgid "Read Access" +msgstr "Acceso para leer" + +msgctxt "field:ir.model.access,perm_write:" +msgid "Write Access" +msgstr "Acceso para escribir" + +msgctxt "field:ir.model.access,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.model.access,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.model.access,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.model.button,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.model.button,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.model.button,groups:" +msgid "Groups" +msgstr "Grupos" + +msgctxt "field:ir.model.button,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.model.button,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.model.button,name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.model.button,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.model.button,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.model.button,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.model.data,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.model.data,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.model.data,date_init:" +msgid "Init Date" +msgstr "Fecha de inicio" + +msgctxt "field:ir.model.data,date_update:" +msgid "Update Date" +msgstr "Fecha de actualización" + +msgctxt "field:ir.model.data,db_id:" +msgid "Resource ID" +msgstr "ID del recurso" + +msgctxt "field:ir.model.data,fs_id:" +msgid "Identifier on File System" +msgstr "Identificador en el sistema de archivos" + +msgctxt "field:ir.model.data,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.model.data,inherit:" +msgid "Inherit" +msgstr "Hereda" + +msgctxt "field:ir.model.data,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.model.data,module:" +msgid "Module" +msgstr "Módulo" + +msgctxt "field:ir.model.data,noupdate:" +msgid "No Update" +msgstr "No Actualizar" + +msgctxt "field:ir.model.data,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.model.data,values:" +msgid "Values" +msgstr "Valores" + +msgctxt "field:ir.model.data,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.model.data,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.model.field,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.model.field,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.model.field,field_description:" +msgid "Field Description" +msgstr "Descripción del campo" + +msgctxt "field:ir.model.field,groups:" +msgid "Groups" +msgstr "Grupos" + +msgctxt "field:ir.model.field,help:" +msgid "Help" +msgstr "Ayuda" + +msgctxt "field:ir.model.field,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.model.field,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.model.field,module:" +msgid "Module" +msgstr "Módulo" + +msgctxt "field:ir.model.field,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.model.field,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.model.field,relation:" +msgid "Model Relation" +msgstr "Relación del modelo" + +msgctxt "field:ir.model.field,ttype:" +msgid "Field Type" +msgstr "Tipo de campo" + +msgctxt "field:ir.model.field,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.model.field,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.model.field.access,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.model.field.access,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.model.field.access,description:" +msgid "Description" +msgstr "Descripción" + +msgctxt "field:ir.model.field.access,field:" +msgid "Field" +msgstr "Campo" + +msgctxt "field:ir.model.field.access,group:" +msgid "Group" +msgstr "Grupo" + +msgctxt "field:ir.model.field.access,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.model.field.access,perm_read:" +msgid "Read Access" +msgstr "Acceso para leer" + +msgctxt "field:ir.model.field.access,perm_write:" +msgid "Write Access" +msgstr "Acceso para escribir" + +msgctxt "field:ir.model.field.access,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.model.field.access,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.model.field.access,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.model.print_model_graph.start,filter:" +msgid "Filter" +msgstr "Filtro" + +msgctxt "field:ir.model.print_model_graph.start,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.model.print_model_graph.start,level:" +msgid "Level" +msgstr "Nivel" + +msgctxt "field:ir.module.module,author:" +msgid "Author" +msgstr "Autor" + +msgctxt "field:ir.module.module,childs:" +msgid "Childs" +msgstr "Hijos" + +msgctxt "field:ir.module.module,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.module.module,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.module.module,dependencies:" +msgid "Dependencies" +msgstr "Dependencias" + +msgctxt "field:ir.module.module,description:" +msgid "Description" +msgstr "Descripción" + +msgctxt "field:ir.module.module,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.module.module,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.module.module,parents:" +msgid "Parents" +msgstr "Padres" + +msgctxt "field:ir.module.module,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.module.module,shortdesc:" +msgid "Short description" +msgstr "Descripción corta" + +msgctxt "field:ir.module.module,state:" +msgid "State" +msgstr "Estado" + +msgctxt "field:ir.module.module,version:" +msgid "Version" +msgstr "Versión" + +msgctxt "field:ir.module.module,website:" +msgid "Website" +msgstr "Sitio web" + +msgctxt "field:ir.module.module,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.module.module,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.module.module.config_wizard.first,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.module.module.config_wizard.item,action:" +msgid "Action" +msgstr "Acción" + +msgctxt "field:ir.module.module.config_wizard.item,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.module.module.config_wizard.item,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.module.module.config_wizard.item,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.module.module.config_wizard.item,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.module.module.config_wizard.item,sequence:" +msgid "Sequence" +msgstr "Secuencia" + +msgctxt "field:ir.module.module.config_wizard.item,state:" +msgid "State" +msgstr "Estado" + +msgctxt "field:ir.module.module.config_wizard.item,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.module.module.config_wizard.item,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.module.module.config_wizard.other,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.module.module.config_wizard.other,percentage:" +msgid "Percentage" +msgstr "Porcentaje" + +msgctxt "field:ir.module.module.dependency,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.module.module.dependency,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.module.module.dependency,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.module.module.dependency,module:" +msgid "Module" +msgstr "Módulo" + +msgctxt "field:ir.module.module.dependency,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.module.module.dependency,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.module.module.dependency,state:" +msgid "State" +msgstr "Estado" + +msgctxt "field:ir.module.module.dependency,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.module.module.dependency,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.module.module.install_upgrade.done,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.module.module.install_upgrade.start,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.module.module.install_upgrade.start,module_info:" +msgid "Modules to update" +msgstr "Módulos a actualizar" + +msgctxt "field:ir.property,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.property,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.property,field:" +msgid "Field" +msgstr "Campo" + +msgctxt "field:ir.property,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.property,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.property,res:" +msgid "Resource" +msgstr "Recurso" + +msgctxt "field:ir.property,value:" +msgid "Value" +msgstr "Valor" + +msgctxt "field:ir.property,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.property,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.rule,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.rule,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.rule,field:" +msgid "Field" +msgstr "Campo" + +msgctxt "field:ir.rule,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.rule,operand:" +msgid "Operand" +msgstr "Operando" + +msgctxt "field:ir.rule,operator:" +msgid "Operator" +msgstr "Operador" + +msgctxt "field:ir.rule,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.rule,rule_group:" +msgid "Group" +msgstr "Grupo" + +msgctxt "field:ir.rule,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.rule,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.rule.group,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.rule.group,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.rule.group,default_p:" +msgid "Default" +msgstr "Predeterminado" + +msgctxt "field:ir.rule.group,global_p:" +msgid "Global" +msgstr "Global" + +msgctxt "field:ir.rule.group,groups:" +msgid "Groups" +msgstr "Grupos" + +msgctxt "field:ir.rule.group,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.rule.group,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.rule.group,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.rule.group,perm_create:" +msgid "Create Access" +msgstr "Acceso para crear" + +msgctxt "field:ir.rule.group,perm_delete:" +msgid "Delete Access" +msgstr "Acceso para borrar" + +msgctxt "field:ir.rule.group,perm_read:" +msgid "Read Access" +msgstr "Acceso para leer" + +msgctxt "field:ir.rule.group,perm_write:" +msgid "Write Access" +msgstr "Acceso para escribir" + +msgctxt "field:ir.rule.group,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.rule.group,rules:" +msgid "Tests" +msgstr "Pruebas" + +msgctxt "field:ir.rule.group,users:" +msgid "Users" +msgstr "Usuarios" + +msgctxt "field:ir.rule.group,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.rule.group,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.sequence,active:" +msgid "Active" +msgstr "Activo" + +msgctxt "field:ir.sequence,code:" +msgid "Sequence Code" +msgstr "Tipo de la secuencia" + +msgctxt "field:ir.sequence,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.sequence,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.sequence,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.sequence,last_timestamp:" +msgid "Last Timestamp" +msgstr "Última Marca de Tiempo" + +msgctxt "field:ir.sequence,name:" +msgid "Sequence Name" +msgstr "Nombre de la secuencia" + +msgctxt "field:ir.sequence,number_increment:" +msgid "Increment Number" +msgstr "Cantidad a incrementar" + +msgctxt "field:ir.sequence,number_next:" +msgid "Next Number" +msgstr "Siguiente número" + +msgctxt "field:ir.sequence,number_next_internal:" +msgid "Next Number" +msgstr "Siguiente número" + +msgctxt "field:ir.sequence,padding:" +msgid "Number padding" +msgstr "Dígitos de relleno" + +msgctxt "field:ir.sequence,prefix:" +msgid "Prefix" +msgstr "Prefijo" + +msgctxt "field:ir.sequence,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.sequence,suffix:" +msgid "Suffix" +msgstr "Sufijo" + +msgctxt "field:ir.sequence,timestamp_offset:" +msgid "Timestamp Offset" +msgstr "Compensación de Marca de Tiempo" + +msgctxt "field:ir.sequence,timestamp_rounding:" +msgid "Timestamp Rounding" +msgstr "Redondeo de Marca de Tiempo" + +msgctxt "field:ir.sequence,type:" +msgid "Type" +msgstr "Tipo" + +msgctxt "field:ir.sequence,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.sequence,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.sequence.strict,active:" +msgid "Active" +msgstr "Activo" + +msgctxt "field:ir.sequence.strict,code:" +msgid "Sequence Code" +msgstr "Tipo de la secuencia" + +msgctxt "field:ir.sequence.strict,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.sequence.strict,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.sequence.strict,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.sequence.strict,last_timestamp:" +msgid "Last Timestamp" +msgstr "Última Marca de Tiempo" + +msgctxt "field:ir.sequence.strict,name:" +msgid "Sequence Name" +msgstr "Nombre de la secuencia" + +msgctxt "field:ir.sequence.strict,number_increment:" +msgid "Increment Number" +msgstr "Cantidad a incrementar" + +msgctxt "field:ir.sequence.strict,number_next:" +msgid "Next Number" +msgstr "Número siguiente" + +msgctxt "field:ir.sequence.strict,number_next_internal:" +msgid "Next Number" +msgstr "Siguiente número" + +msgctxt "field:ir.sequence.strict,padding:" +msgid "Number padding" +msgstr "Dígitos de relleno" + +msgctxt "field:ir.sequence.strict,prefix:" +msgid "Prefix" +msgstr "Prefijo" + +msgctxt "field:ir.sequence.strict,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.sequence.strict,suffix:" +msgid "Suffix" +msgstr "Sufijo" + +msgctxt "field:ir.sequence.strict,timestamp_offset:" +msgid "Timestamp Offset" +msgstr "Compensación de Marca de Tiempo" + +msgctxt "field:ir.sequence.strict,timestamp_rounding:" +msgid "Timestamp Rounding" +msgstr "Redondeo de Marca de Tiempo" + +msgctxt "field:ir.sequence.strict,type:" +msgid "Type" +msgstr "Tipo" + +msgctxt "field:ir.sequence.strict,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.sequence.strict,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.sequence.type,code:" +msgid "Sequence Code" +msgstr "Código de la secuencia" + +msgctxt "field:ir.sequence.type,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.sequence.type,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.sequence.type,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.sequence.type,name:" +msgid "Sequence Name" +msgstr "Nombre de la secuencia" + +msgctxt "field:ir.sequence.type,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.sequence.type,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.sequence.type,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.session,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.session,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.session,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.session,key:" +msgid "Key" +msgstr "Clave" + +msgctxt "field:ir.session,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.session,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.session,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.session.wizard,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.session.wizard,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.session.wizard,data:" +msgid "Data" +msgstr "Datos" + +msgctxt "field:ir.session.wizard,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.session.wizard,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.session.wizard,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.session.wizard,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.translation,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.translation,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.translation,fuzzy:" +msgid "Fuzzy" +msgstr "Necesita revisión" + +msgctxt "field:ir.translation,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.translation,lang:" +msgid "Language" +msgstr "Idioma" + +msgctxt "field:ir.translation,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.translation,module:" +msgid "Module" +msgstr "Módulo" + +msgctxt "field:ir.translation,name:" +msgid "Field Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.translation,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.translation,res_id:" +msgid "Resource ID" +msgstr "ID del recurso" + +msgctxt "field:ir.translation,src:" +msgid "Source" +msgstr "Fuente" + +msgctxt "field:ir.translation,src_md5:" +msgid "Source MD5" +msgstr "Origen MD5" + +msgctxt "field:ir.translation,type:" +msgid "Type" +msgstr "Tipo" + +msgctxt "field:ir.translation,value:" +msgid "Translation Value" +msgstr "Valor de la traducción" + +msgctxt "field:ir.translation,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.translation,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.translation.clean.start,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.translation.clean.succeed,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.translation.export.result,file:" +msgid "File" +msgstr "Archivo" + +msgctxt "field:ir.translation.export.result,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.translation.export.start,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.translation.export.start,language:" +msgid "Language" +msgstr "Idioma" + +msgctxt "field:ir.translation.export.start,module:" +msgid "Module" +msgstr "Módulo" + +msgctxt "field:ir.translation.set_report.start,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.translation.set_report.succeed,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.translation.update.start,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.translation.update.start,language:" +msgid "Language" +msgstr "Idioma" + +msgctxt "field:ir.trigger,action_function:" +msgid "Action Function" +msgstr "Función de Acción" + +msgctxt "field:ir.trigger,action_model:" +msgid "Action Model" +msgstr "Modelo de Acción" + +msgctxt "field:ir.trigger,active:" +msgid "Active" +msgstr "Activo" + +msgctxt "field:ir.trigger,condition:" +msgid "Condition" +msgstr "Condición" + +msgctxt "field:ir.trigger,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.trigger,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.trigger,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.trigger,limit_number:" +msgid "Limit Number" +msgstr "Número Límite" + +msgctxt "field:ir.trigger,minimum_delay:" +msgid "Minimum Delay" +msgstr "Retardo Mínimo" + +msgctxt "field:ir.trigger,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.trigger,name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.trigger,on_create:" +msgid "On Create" +msgstr "Al ser creado" + +msgctxt "field:ir.trigger,on_delete:" +msgid "On Delete" +msgstr "Al Borrar" + +msgctxt "field:ir.trigger,on_time:" +msgid "On Time" +msgstr "Al Tiempo" + +msgctxt "field:ir.trigger,on_write:" +msgid "On Write" +msgstr "Al Escribir" + +msgctxt "field:ir.trigger,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.trigger,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.trigger,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.trigger.log,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.trigger.log,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.trigger.log,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.trigger.log,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.trigger.log,record_id:" +msgid "Record ID" +msgstr "ID del registro" + +msgctxt "field:ir.trigger.log,trigger:" +msgid "Trigger" +msgstr "Disparador" + +msgctxt "field:ir.trigger.log,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.trigger.log,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.ui.icon,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.ui.icon,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.ui.icon,icon:" +msgid "Icon" +msgstr "Icono" + +msgctxt "field:ir.ui.icon,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.ui.icon,module:" +msgid "Module" +msgstr "Módulo" + +msgctxt "field:ir.ui.icon,name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.ui.icon,path:" +msgid "SVG Path" +msgstr "Ruta al SVG" + +msgctxt "field:ir.ui.icon,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.ui.icon,sequence:" +msgid "Sequence" +msgstr "Secuencia" + +msgctxt "field:ir.ui.icon,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.ui.icon,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.ui.menu,action:" +msgid "Action" +msgstr "Acción" + +msgctxt "field:ir.ui.menu,active:" +msgid "Active" +msgstr "Activo" + +msgctxt "field:ir.ui.menu,childs:" +msgid "Children" +msgstr "Hijos" + +msgctxt "field:ir.ui.menu,complete_name:" +msgid "Complete Name" +msgstr "Nombre completo" + +msgctxt "field:ir.ui.menu,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.ui.menu,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.ui.menu,groups:" +msgid "Groups" +msgstr "Grupos" + +msgctxt "field:ir.ui.menu,icon:" +msgid "Icon" +msgstr "Icono" + +msgctxt "field:ir.ui.menu,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.ui.menu,name:" +msgid "Menu" +msgstr "Menú" + +msgctxt "field:ir.ui.menu,parent:" +msgid "Parent Menu" +msgstr "Menú padre" + +msgctxt "field:ir.ui.menu,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.ui.menu,sequence:" +msgid "Sequence" +msgstr "Secuencia" + +msgctxt "field:ir.ui.menu,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.ui.menu,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.ui.view,arch:" +msgid "View Architecture" +msgstr "Ver arquitectura" + +msgctxt "field:ir.ui.view,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.ui.view,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.ui.view,domain:" +msgid "Domain" +msgstr "Dominio" + +msgctxt "field:ir.ui.view,field_childs:" +msgid "Children Field" +msgstr "Campo hijos" + +msgctxt "field:ir.ui.view,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.ui.view,inherit:" +msgid "Inherited View" +msgstr "Vista heredada" + +msgctxt "field:ir.ui.view,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.ui.view,module:" +msgid "Module" +msgstr "Módulo" + +msgctxt "field:ir.ui.view,priority:" +msgid "Priority" +msgstr "Prioridad" + +msgctxt "field:ir.ui.view,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.ui.view,type:" +msgid "View Type" +msgstr "Tipo de vista" + +msgctxt "field:ir.ui.view,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.ui.view,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.ui.view.show.start,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.ui.view_sc,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.ui.view_sc,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.ui.view_sc,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.ui.view_sc,name:" +msgid "Shortcut Name" +msgstr "Nombre del marcador" + +msgctxt "field:ir.ui.view_sc,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.ui.view_sc,res_id:" +msgid "Resource Ref." +msgstr "Ref. del recurso" + +msgctxt "field:ir.ui.view_sc,resource:" +msgid "Resource Name" +msgstr "Nombre del recurso" + +msgctxt "field:ir.ui.view_sc,sequence:" +msgid "Sequence" +msgstr "Secuencia" + +msgctxt "field:ir.ui.view_sc,user_id:" +msgid "User Ref." +msgstr "Ref. del usuario" + +msgctxt "field:ir.ui.view_sc,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.ui.view_sc,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.ui.view_tree_expanded_state,child_name:" +msgid "Child Name" +msgstr "Nombre del hijo" + +msgctxt "field:ir.ui.view_tree_expanded_state,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.ui.view_tree_expanded_state,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.ui.view_tree_expanded_state,domain:" +msgid "Domain" +msgstr "Dominio" + +msgctxt "field:ir.ui.view_tree_expanded_state,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.ui.view_tree_expanded_state,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.ui.view_tree_expanded_state,nodes:" +msgid "Expanded Nodes" +msgstr "Nodos Expandidos" + +msgctxt "field:ir.ui.view_tree_expanded_state,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.ui.view_tree_expanded_state,user:" +msgid "User" +msgstr "Usuario" + +msgctxt "field:ir.ui.view_tree_expanded_state,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.ui.view_tree_expanded_state,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.ui.view_tree_width,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.ui.view_tree_width,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.ui.view_tree_width,field:" +msgid "Field" +msgstr "Campo" + +msgctxt "field:ir.ui.view_tree_width,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.ui.view_tree_width,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:ir.ui.view_tree_width,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.ui.view_tree_width,user:" +msgid "User" +msgstr "Usuario" + +msgctxt "field:ir.ui.view_tree_width,width:" +msgid "Width" +msgstr "Ancho" + +msgctxt "field:ir.ui.view_tree_width,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.ui.view_tree_width,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "help:ir.action.act_window,auto_refresh:" +msgid "Add an auto-refresh on the view" +msgstr "Añade un refresco automático a la vista" + +msgctxt "help:ir.action.act_window,limit:" +msgid "Default limit for the list view" +msgstr "Límite predeterminado para la vista en lista" + +msgctxt "help:ir.action.act_window,search_value:" +msgid "Default search criteria for the list view" +msgstr "Criterio de búsqueda predeterminado para la vista en lista" + +msgctxt "help:ir.action.act_window,window_name:" +msgid "Use the action name as window name" +msgstr "Usar el nombre de la acción como el nombre de la ventana" + +msgctxt "help:ir.action.report,email:" +msgid "" +"Python dictonary where keys define \"to\" \"cc\" \"subject\"\n" +"Example: {'to': 'test@example.com', 'cc': 'user@example.com'}" +msgstr "" +"Diccionario de Python donde las claves definen \"to\" \"cc\" \"subject\"\n" +"Ejemplo: {'to': 'test@example.com', 'cc': 'user@example.com'}" + +msgctxt "help:ir.action.report,extension:" +msgid "" +"Leave empty for the same as template, see unoconv documentation for " +"compatible format" +msgstr "" +"Dejar vacío para el mismo como plantilla, consulte la documentación de " +"unoconv por formato compatible" + +msgctxt "help:ir.action.report,style:" +msgid "Define the style to apply on the report." +msgstr "Definir el estilo a aplicar al informe." + +msgctxt "help:ir.action.wizard,window:" +msgid "Run wizard in a new window" +msgstr "Ejecutar asistente en una nueva ventana" + +msgctxt "help:ir.cron,number_calls:" +msgid "" +"Number of times the function is called, a negative number indicates that the" +" function will always be called" +msgstr "" +"Número de veces que se llama la función, un número negativo indica que la " +"función siempre se llamará" + +msgctxt "help:ir.cron,request_user:" +msgid "The user who will receive requests in case of failure" +msgstr "El usuario que recibirá peticiones en caso de error" + +msgctxt "help:ir.cron,user:" +msgid "The user used to execute this action" +msgstr "El usuario que se utilizará para ejecutar esta acción" + +msgctxt "help:ir.lang,code:" +msgid "RFC 4646 tag: http://tools.ietf.org/html/rfc4646" +msgstr "RFC 4646 tag: http://tools.ietf.org/html/rfc4646" + +msgctxt "help:ir.model,module:" +msgid "Module in which this model is defined" +msgstr "El módulo en el que este modelo está definido" + +msgctxt "help:ir.model.data,db_id:" +msgid "The id of the record in the database." +msgstr "El id del registro en la base de datos." + +msgctxt "help:ir.model.data,fs_id:" +msgid "The id of the record as known on the file system." +msgstr "El id del registro tal y como se conoce en el sistema de archivos." + +msgctxt "help:ir.model.field,module:" +msgid "Module in which this field is defined" +msgstr "El módulo en el que este campo está definido" + +msgctxt "help:ir.model.print_model_graph.start,filter:" +msgid "" +"Entering a Python Regular Expression will exclude matching models from the " +"graph." +msgstr "" +"Introducir una Expresión Regular de Python excluirá modelos equivalentes de " +"la gráfica." + +msgctxt "help:ir.rule.group,default_p:" +msgid "Add this rule to all users by default" +msgstr "Añadir esta regla para todos los usuarios de forma predeterminada" + +msgctxt "help:ir.rule.group,global_p:" +msgid "" +"Make the rule global \n" +"so every users must follow this rule" +msgstr "" +"Hacer la regla global\n" +"de forma que todos los usuarios deban seguirla" + +msgctxt "help:ir.rule.group,rules:" +msgid "The rule is satisfied if at least one test is True" +msgstr "La regla se satisface si al menos una condición es cierta" + +msgctxt "help:ir.trigger,condition:" +msgid "" +"A Python statement evaluated with record represented by \"self\"\n" +"It triggers the action if true." +msgstr "" +"Una instrucción Python evaluada con el registro representado por \"self\"\n" +"Se dispara la acción si es verdadera." + +msgctxt "help:ir.trigger,limit_number:" +msgid "" +"Limit the number of call to \"Action Function\" by records.\n" +"0 for no limit." +msgstr "" +"Limitar el número de llamada a la \"Función de Acción\" por registros.\n" +"0 para ningún límite." + +msgctxt "help:ir.trigger,minimum_delay:" +msgid "" +"Set a minimum delay in minutes between call to \"Action Function\" for the same record.\n" +"0 for no delay." +msgstr "" +"Establecer un retraso mínimo en minutos entre llamadas a la \"Función de Acción\" para el mismo registro.\n" +"0 para ningún retraso." + +msgctxt "model:ir.action,name:" +msgid "Action" +msgstr "Acción" + +msgctxt "model:ir.action,name:act_action_act_window_form" +msgid "Window Actions" +msgstr "Acciones de la ventana" + +msgctxt "model:ir.action,name:act_action_form" +msgid "Actions" +msgstr "Acciones" + +msgctxt "model:ir.action,name:act_action_report_form" +msgid "Reports" +msgstr "Informes" + +msgctxt "model:ir.action,name:act_action_url_form" +msgid "URLs" +msgstr "URLs" + +msgctxt "model:ir.action,name:act_action_wizard_form" +msgid "Wizards" +msgstr "Asistentes" + +msgctxt "model:ir.action,name:act_attachment_form" +msgid "Attachments" +msgstr "Adjuntos" + +msgctxt "model:ir.action,name:act_config_wizard_item_form" +msgid "Config Wizard Items" +msgstr "Configurar los elementos del asistente" + +msgctxt "model:ir.action,name:act_cron_form" +msgid "Scheduled Actions" +msgstr "Acciones programadas" + +msgctxt "model:ir.action,name:act_export_form" +msgid "Exports" +msgstr "Exportaciones" + +msgctxt "model:ir.action,name:act_icon_form" +msgid "Icons" +msgstr "Iconos" + +msgctxt "model:ir.action,name:act_lang_form" +msgid "Languages" +msgstr "Idiomas" + +msgctxt "model:ir.action,name:act_menu_list" +msgid "Menu" +msgstr "Menú" + +msgctxt "model:ir.action,name:act_menu_tree" +msgid "Menu" +msgstr "Menú" + +msgctxt "model:ir.action,name:act_model_access_form" +msgid "Models Access" +msgstr "Acceso a los modelos" + +msgctxt "model:ir.action,name:act_model_button_form" +msgid "Buttons" +msgstr "Botones" + +msgctxt "model:ir.action,name:act_model_field_access_form" +msgid "Fields Access" +msgstr "Campos de Acceso" + +msgctxt "model:ir.action,name:act_model_fields_form" +msgid "Fields" +msgstr "Campos" + +msgctxt "model:ir.action,name:act_model_form" +msgid "Models" +msgstr "Modelos" + +msgctxt "model:ir.action,name:act_module_config" +msgid "Configure Modules" +msgstr "Configurar Módulos" + +msgctxt "model:ir.action,name:act_module_config_wizard" +msgid "Module Configuration" +msgstr "Configuración del módulo" + +msgctxt "model:ir.action,name:act_module_form" +msgid "Modules" +msgstr "Módulos" + +msgctxt "model:ir.action,name:act_module_install_upgrade" +msgid "Perform Pending Installation/Upgrade" +msgstr "Realizar Instalaciones/Actualizaciones pendientes" + +msgctxt "model:ir.action,name:act_property_form" +msgid "Properties" +msgstr "Propiedades" + +msgctxt "model:ir.action,name:act_property_form_default" +msgid "Default Properties" +msgstr "Propiedades predeterminadas" + +msgctxt "model:ir.action,name:act_rule_group_form" +msgid "Record Rules" +msgstr "Grabar reglas" + +msgctxt "model:ir.action,name:act_sequence_form" +msgid "Sequences" +msgstr "Secuencias" + +msgctxt "model:ir.action,name:act_sequence_strict_form" +msgid "Sequences Strict" +msgstr "Secuencias estrictas" + +msgctxt "model:ir.action,name:act_sequence_type_form" +msgid "Sequence Types" +msgstr "Tipos de secuencia" + +msgctxt "model:ir.action,name:act_translation_clean" +msgid "Clean Translations" +msgstr "Limpiar traducciones" + +msgctxt "model:ir.action,name:act_translation_export" +msgid "Export Translations" +msgstr "Exportar traducciones" + +msgctxt "model:ir.action,name:act_translation_form" +msgid "Translations" +msgstr "Traducciones" + +msgctxt "model:ir.action,name:act_translation_set_report" +msgid "Set Report Translations" +msgstr "Extraer traducciones de los informes" + +msgctxt "model:ir.action,name:act_translation_update" +msgid "Synchronize Translations" +msgstr "Sincronizar traducciones" + +msgctxt "model:ir.action,name:act_trigger_form" +msgid "Triggers" +msgstr "Disparadores" + +msgctxt "model:ir.action,name:act_view_form" +msgid "Views" +msgstr "Vistas" + +msgctxt "model:ir.action,name:act_view_sc_add" +msgid "Add Shortcut" +msgstr "Agregar Marcador" + +msgctxt "model:ir.action,name:act_view_sc_form" +msgid "View Shortcuts" +msgstr "Ver marcadores" + +msgctxt "model:ir.action,name:act_view_sc_open" +msgid "Open Shortcut" +msgstr "Abrir Marcador" + +msgctxt "model:ir.action,name:act_view_show" +msgid "Show View" +msgstr "Mostrar Vista" + +msgctxt "model:ir.action,name:act_view_tree_expanded_state" +msgid "Tree Expanded State" +msgstr "Estado del Árbol Expandido" + +msgctxt "model:ir.action,name:act_view_tree_width_form" +msgid "View Tree Width" +msgstr "Ancho de la vista en árbol" + +msgctxt "model:ir.action,name:print_model_graph" +msgid "Graph" +msgstr "Gráfico" + +msgctxt "model:ir.action,name:report_model_graph" +msgid "Graph" +msgstr "Gráfico" + +msgctxt "model:ir.action.act_window,name:" +msgid "Action act window" +msgstr "Ventana de acciones" + +msgctxt "model:ir.action.act_window.view,name:" +msgid "Action act window view" +msgstr "Vista de ventana de acción" + +msgctxt "model:ir.action.keyword,name:" +msgid "Action keyword" +msgstr "Palabra clave de acción" + +msgctxt "model:ir.action.report,name:" +msgid "Action report" +msgstr "Informe de acción" + +msgctxt "model:ir.action.url,name:" +msgid "Action URL" +msgstr "URL de la acción" + +msgctxt "model:ir.action.wizard,name:" +msgid "Action wizard" +msgstr "Asistente de la acción" + +msgctxt "model:ir.attachment,name:" +msgid "Attachment" +msgstr "Adjunto" + +msgctxt "model:ir.cache,name:" +msgid "Cache" +msgstr "Caché" + +msgctxt "model:ir.cron,name:" +msgid "Cron" +msgstr "Programador de tareas" + +msgctxt "model:ir.date,name:" +msgid "Date" +msgstr "Fecha" + +msgctxt "model:ir.export,name:" +msgid "Export" +msgstr "Exportar" + +msgctxt "model:ir.export.line,name:" +msgid "Export line" +msgstr "Exportar línea" + +msgctxt "model:ir.lang,name:" +msgid "Language" +msgstr "Idioma" + +msgctxt "model:ir.lang,name:lang_ar" +msgid "Spanish (Argentina)" +msgstr "Español (Argentina)" + +msgctxt "model:ir.lang,name:lang_bg" +msgid "Bulgarian" +msgstr "Búlgaro" + +msgctxt "model:ir.lang,name:lang_ca" +msgid "Català" +msgstr "Catalán" + +msgctxt "model:ir.lang,name:lang_cs" +msgid "Czech" +msgstr "Checo" + +msgctxt "model:ir.lang,name:lang_de" +msgid "German" +msgstr "Alemán" + +msgctxt "model:ir.lang,name:lang_en" +msgid "English" +msgstr "Inglés" + +msgctxt "model:ir.lang,name:lang_es" +msgid "Spanish (Spain)" +msgstr "Español (España)" + +msgctxt "model:ir.lang,name:lang_es_CO" +msgid "Spanish (Colombia)" +msgstr "Español (Colombia)" + +msgctxt "model:ir.lang,name:lang_fr" +msgid "French" +msgstr "Francés" + +msgctxt "model:ir.lang,name:lang_nl" +msgid "Dutch" +msgstr "Holandés" + +msgctxt "model:ir.lang,name:lang_ru" +msgid "Russian" +msgstr "Ruso" + +msgctxt "model:ir.model,name:" +msgid "Model" +msgstr "Modelo" + +msgctxt "model:ir.model.access,name:" +msgid "Model access" +msgstr "Modelo de accesos" + +msgctxt "model:ir.model.button,name:" +msgid "Model Button" +msgstr "Modelo de Botón" + +msgctxt "model:ir.model.data,name:" +msgid "Model data" +msgstr "Modelo de datos" + +msgctxt "model:ir.model.field,name:" +msgid "Model field" +msgstr "Modelo de campo" + +msgctxt "model:ir.model.field.access,name:" +msgid "Model Field Access" +msgstr "Modelo de Acceso a Campo" + +msgctxt "model:ir.model.print_model_graph.start,name:" +msgid "Print Model Graph" +msgstr "Imprimir Gráfico del Modelo" + +msgctxt "model:ir.module.module,name:" +msgid "Module" +msgstr "Módulo" + +msgctxt "model:ir.module.module.config_wizard.first,name:" +msgid "Module Config Wizard First" +msgstr "Módulo del primer asistente de configuración" + +msgctxt "model:ir.module.module.config_wizard.item,name:" +msgid "Config wizard to run after installing module" +msgstr "" +"El asistente de configuración a ejecutar después de instalar un módulo" + +msgctxt "model:ir.module.module.config_wizard.other,name:" +msgid "Module Config Wizard Other" +msgstr "Módulo de Configuración de otro Asistente" + +msgctxt "model:ir.module.module.dependency,name:" +msgid "Module dependency" +msgstr "Dependencias del módulo" + +msgctxt "model:ir.module.module.install_upgrade.done,name:" +msgid "Module Install Upgrade Done" +msgstr "Instalación de Módulo de Mejora Terminada" + +msgctxt "model:ir.module.module.install_upgrade.start,name:" +msgid "Module Install Upgrade Start" +msgstr "Iniciar la instalación de actualizaciones de módulos" + +msgctxt "model:ir.property,name:" +msgid "Property" +msgstr "Propiedad" + +msgctxt "model:ir.rule,name:" +msgid "Rule" +msgstr "Regla" + +msgctxt "model:ir.rule.group,name:" +msgid "Rule group" +msgstr "Regla de grupo" + +msgctxt "model:ir.sequence,name:" +msgid "Sequence" +msgstr "Secuencia" + +msgctxt "model:ir.sequence.strict,name:" +msgid "Sequence Strict" +msgstr "Secuencia estricta" + +msgctxt "model:ir.sequence.type,name:" +msgid "Sequence type" +msgstr "Tipo de secuencia" + +msgctxt "model:ir.session,name:" +msgid "Session" +msgstr "Sesión" + +msgctxt "model:ir.session.wizard,name:" +msgid "Session Wizard" +msgstr "Asistente de Sesión" + +msgctxt "model:ir.translation,name:" +msgid "Translation" +msgstr "Traducción" + +msgctxt "model:ir.translation.clean.start,name:" +msgid "Clean translation" +msgstr "Iniciar limpieza de traducciones" + +msgctxt "model:ir.translation.clean.succeed,name:" +msgid "Clean translation" +msgstr "Iniciar limpieza de traducciones" + +msgctxt "model:ir.translation.export.result,name:" +msgid "Export translation" +msgstr "Exportar traducción - archivo" + +msgctxt "model:ir.translation.export.start,name:" +msgid "Export translation" +msgstr "Exportar traducción - archivo" + +msgctxt "model:ir.translation.set_report.start,name:" +msgid "Update Report Translation" +msgstr "Actualizar traducciones de informes" + +msgctxt "model:ir.translation.set_report.succeed,name:" +msgid "Update Report Translation" +msgstr "Actualizar traducciones de informes" + +msgctxt "model:ir.translation.update.start,name:" +msgid "Update translation" +msgstr "Actualizar traducción" + +msgctxt "model:ir.trigger,name:" +msgid "Trigger" +msgstr "Disparador" + +msgctxt "model:ir.trigger.log,name:" +msgid "Trigger Log" +msgstr "Registro del Disparador" + +msgctxt "model:ir.ui.icon,name:" +msgid "Icon" +msgstr "Icono" + +msgctxt "model:ir.ui.menu,name:" +msgid "UI menu" +msgstr "Menú UI" + +msgctxt "model:ir.ui.menu,name:menu_act_action" +msgid "Actions" +msgstr "Acciones" + +msgctxt "model:ir.ui.menu,name:menu_action" +msgid "Actions" +msgstr "Acciones" + +msgctxt "model:ir.ui.menu,name:menu_action_act_window" +msgid "Window Actions" +msgstr "Acciones de la ventana" + +msgctxt "model:ir.ui.menu,name:menu_action_report_form" +msgid "Reports" +msgstr "Informes" + +msgctxt "model:ir.ui.menu,name:menu_action_url" +msgid "URLs" +msgstr "URLs" + +msgctxt "model:ir.ui.menu,name:menu_action_wizard" +msgid "Wizards" +msgstr "Asistentes" + +msgctxt "model:ir.ui.menu,name:menu_administration" +msgid "Administration" +msgstr "Administración" + +msgctxt "model:ir.ui.menu,name:menu_attachment_form" +msgid "Attachments" +msgstr "Adjuntos" + +msgctxt "model:ir.ui.menu,name:menu_config_wizard_item_form" +msgid "Config Wizard Items" +msgstr "Configurar los elementos del asistente" + +msgctxt "model:ir.ui.menu,name:menu_cron_form" +msgid "Scheduled Actions" +msgstr "Acciones programadas" + +msgctxt "model:ir.ui.menu,name:menu_export_form" +msgid "Exports" +msgstr "Exportaciones" + +msgctxt "model:ir.ui.menu,name:menu_icon_form" +msgid "Icons" +msgstr "Iconos" + +msgctxt "model:ir.ui.menu,name:menu_ir_sequence_type" +msgid "Sequence Types" +msgstr "Tipos de secuencia" + +msgctxt "model:ir.ui.menu,name:menu_lang_form" +msgid "Languages" +msgstr "Idiomas" + +msgctxt "model:ir.ui.menu,name:menu_localization" +msgid "Localization" +msgstr "Localización" + +msgctxt "model:ir.ui.menu,name:menu_menu_list" +msgid "Menu" +msgstr "Menú" + +msgctxt "model:ir.ui.menu,name:menu_model_access_form" +msgid "Models Access" +msgstr "Acceso a los modelos" + +msgctxt "model:ir.ui.menu,name:menu_model_button_form" +msgid "Buttons" +msgstr "Botones" + +msgctxt "model:ir.ui.menu,name:menu_model_field_access_form" +msgid "Fields Access" +msgstr "Campos de Acceso" + +msgctxt "model:ir.ui.menu,name:menu_model_form" +msgid "Models" +msgstr "Modelos" + +msgctxt "model:ir.ui.menu,name:menu_models" +msgid "Models" +msgstr "Modelos" + +msgctxt "model:ir.ui.menu,name:menu_module_form" +msgid "Modules" +msgstr "Módulos" + +msgctxt "model:ir.ui.menu,name:menu_module_install_upgrade" +msgid "Perform Pending Installation/Upgrade" +msgstr "Realizar Instalaciones/Actualizaciones pendientes" + +msgctxt "model:ir.ui.menu,name:menu_modules" +msgid "Modules" +msgstr "Módulos" + +msgctxt "model:ir.ui.menu,name:menu_property_form" +msgid "Properties" +msgstr "Propiedades" + +msgctxt "model:ir.ui.menu,name:menu_property_form_default" +msgid "Default Properties" +msgstr "Propiedades predeterminadas" + +msgctxt "model:ir.ui.menu,name:menu_rule_group_form" +msgid "Record Rules" +msgstr "Grabar reglas" + +msgctxt "model:ir.ui.menu,name:menu_scheduler" +msgid "Scheduler" +msgstr "Programador de tareas" + +msgctxt "model:ir.ui.menu,name:menu_sequence_form" +msgid "Sequences" +msgstr "Secuencias" + +msgctxt "model:ir.ui.menu,name:menu_sequence_strict_form" +msgid "Sequences Strict" +msgstr "Secuencias estrictas" + +msgctxt "model:ir.ui.menu,name:menu_sequences" +msgid "Sequences" +msgstr "Secuencias" + +msgctxt "model:ir.ui.menu,name:menu_translation_clean" +msgid "Clean Translations" +msgstr "Limpiar traducciones" + +msgctxt "model:ir.ui.menu,name:menu_translation_export" +msgid "Export Translations" +msgstr "Exportar traducciones" + +msgctxt "model:ir.ui.menu,name:menu_translation_form" +msgid "Translations" +msgstr "Traducciones" + +msgctxt "model:ir.ui.menu,name:menu_translation_set_report" +msgid "Set Report Translations" +msgstr "Extraer traducciones de los informes" + +msgctxt "model:ir.ui.menu,name:menu_translation_update" +msgid "Synchronize Translations" +msgstr "Sincronizar traducciones" + +msgctxt "model:ir.ui.menu,name:menu_trigger_form" +msgid "Triggers" +msgstr "Disparadores" + +msgctxt "model:ir.ui.menu,name:menu_ui" +msgid "User Interface" +msgstr "Interfaz de usuario" + +msgctxt "model:ir.ui.menu,name:menu_view" +msgid "Views" +msgstr "Vistas" + +msgctxt "model:ir.ui.menu,name:menu_view_sc" +msgid "View Shortcuts" +msgstr "Ver marcadores" + +msgctxt "model:ir.ui.menu,name:menu_view_tree_expanded_state" +msgid "Tree Expanded State" +msgstr "Estado del Árbol Expandido" + +msgctxt "model:ir.ui.menu,name:menu_view_tree_width" +msgid "View Tree Width" +msgstr "Ancho de la vista en árbol" + +msgctxt "model:ir.ui.menu,name:model_model_fields_form" +msgid "Fields" +msgstr "Campos" + +msgctxt "model:ir.ui.view,name:" +msgid "View" +msgstr "Vista" + +msgctxt "model:ir.ui.view.show.start,name:" +msgid "ir.ui.view.show.start" +msgstr "ir.ui.view.show.start" + +msgctxt "model:ir.ui.view_sc,name:" +msgid "View shortcut" +msgstr "Vista del marcador" + +msgctxt "model:ir.ui.view_tree_expanded_state,name:" +msgid "ir.ui.view_tree_expanded_state" +msgstr "ir.ui.view_tree_expanded_state" + +msgctxt "model:ir.ui.view_tree_width,name:" +msgid "View Tree Width" +msgstr "Ancho de la vista en árbol" + +msgctxt "selection:ir.action.keyword,keyword:" +msgid "Action form" +msgstr "Formulario de acción" + +msgctxt "selection:ir.action.keyword,keyword:" +msgid "Action tree" +msgstr "Árbol de acciones" + +msgctxt "selection:ir.action.keyword,keyword:" +msgid "Form relate" +msgstr "Formulario relacionado" + +msgctxt "selection:ir.action.keyword,keyword:" +msgid "Open Graph" +msgstr "Abrir gráfico" + +msgctxt "selection:ir.action.keyword,keyword:" +msgid "Open tree" +msgstr "Desplegar árbol" + +msgctxt "selection:ir.action.keyword,keyword:" +msgid "Print form" +msgstr "Imprimir formulario" + +msgctxt "selection:ir.attachment,type:" +msgid "Data" +msgstr "Datos" + +msgctxt "selection:ir.attachment,type:" +msgid "Link" +msgstr "Enlace" + +msgctxt "selection:ir.cron,interval_type:" +msgid "Days" +msgstr "Días" + +msgctxt "selection:ir.cron,interval_type:" +msgid "Hours" +msgstr "Horas" + +msgctxt "selection:ir.cron,interval_type:" +msgid "Minutes" +msgstr "Minutos" + +msgctxt "selection:ir.cron,interval_type:" +msgid "Months" +msgstr "Meses" + +msgctxt "selection:ir.cron,interval_type:" +msgid "Weeks" +msgstr "Semanas" + +msgctxt "selection:ir.lang,direction:" +msgid "Left-to-right" +msgstr "De izquierda a derecha" + +msgctxt "selection:ir.lang,direction:" +msgid "Right-to-left" +msgstr "De derecha a izquierda" + +msgctxt "selection:ir.module.module,state:" +msgid "Installed" +msgstr "Instalado" + +msgctxt "selection:ir.module.module,state:" +msgid "Not Installed" +msgstr "No instalado" + +msgctxt "selection:ir.module.module,state:" +msgid "To be installed" +msgstr "Pendiente de ser instalado" + +msgctxt "selection:ir.module.module,state:" +msgid "To be removed" +msgstr "Pendiente de ser eliminado" + +msgctxt "selection:ir.module.module,state:" +msgid "To be upgraded" +msgstr "Pendiente de ser actualizado" + +msgctxt "selection:ir.module.module.config_wizard.item,state:" +msgid "Done" +msgstr "Terminado" + +msgctxt "selection:ir.module.module.config_wizard.item,state:" +msgid "Open" +msgstr "Abrir" + +msgctxt "selection:ir.module.module.dependency,state:" +msgid "Installed" +msgstr "Instalado" + +msgctxt "selection:ir.module.module.dependency,state:" +msgid "Not Installed" +msgstr "No instalado" + +msgctxt "selection:ir.module.module.dependency,state:" +msgid "To be installed" +msgstr "Pendiente de instalar" + +msgctxt "selection:ir.module.module.dependency,state:" +msgid "To be removed" +msgstr "Pendiente de ser eliminado" + +msgctxt "selection:ir.module.module.dependency,state:" +msgid "To be upgraded" +msgstr "Pendiente de ser actualizado" + +msgctxt "selection:ir.module.module.dependency,state:" +msgid "Unknown" +msgstr "Desconocido" + +msgctxt "selection:ir.sequence,type:" +msgid "Decimal Timestamp" +msgstr "Marca de Tiempo Decimal" + +msgctxt "selection:ir.sequence,type:" +msgid "Hexadecimal Timestamp" +msgstr "Marca de Tiempo Hexadecimal" + +msgctxt "selection:ir.sequence,type:" +msgid "Incremental" +msgstr "Incremental" + +msgctxt "selection:ir.sequence.strict,type:" +msgid "Decimal Timestamp" +msgstr "Marca de Tiempo Decimal" + +msgctxt "selection:ir.sequence.strict,type:" +msgid "Hexadecimal Timestamp" +msgstr "Marca de Tiempo Hexadecimal" + +msgctxt "selection:ir.sequence.strict,type:" +msgid "Incremental" +msgstr "Incremental" + +msgctxt "selection:ir.translation,type:" +msgid "Error" +msgstr "Error" + +msgctxt "selection:ir.translation,type:" +msgid "Field" +msgstr "Campo" + +msgctxt "selection:ir.translation,type:" +msgid "Help" +msgstr "Ayuda" + +msgctxt "selection:ir.translation,type:" +msgid "Model" +msgstr "Modelo" + +msgctxt "selection:ir.translation,type:" +msgid "ODT" +msgstr "ODT" + +msgctxt "selection:ir.translation,type:" +msgid "Selection" +msgstr "Selección" + +msgctxt "selection:ir.translation,type:" +msgid "View" +msgstr "Vista" + +msgctxt "selection:ir.translation,type:" +msgid "Wizard Button" +msgstr "Botón de asistente" + +msgctxt "selection:ir.ui.menu,action:" +msgid "ir.action.act_window" +msgstr "ir.action.act_window" + +msgctxt "selection:ir.ui.menu,action:" +msgid "ir.action.report" +msgstr "ir.action.report" + +msgctxt "selection:ir.ui.menu,action:" +msgid "ir.action.url" +msgstr "ir.action.url" + +msgctxt "selection:ir.ui.menu,action:" +msgid "ir.action.wizard" +msgstr "ir.action.wizard" + +msgctxt "selection:ir.ui.view,type:" +msgid "" +msgstr "" + +msgctxt "selection:ir.ui.view,type:" +msgid "Board" +msgstr "Tablón" + +msgctxt "selection:ir.ui.view,type:" +msgid "Form" +msgstr "Formulario" + +msgctxt "selection:ir.ui.view,type:" +msgid "Graph" +msgstr "Gráfico" + +msgctxt "selection:ir.ui.view,type:" +msgid "Tree" +msgstr "Árbol" + +msgctxt "view:ir.action.act_window.view:" +msgid "Views" +msgstr "Vistas" + +msgctxt "view:ir.action.act_window:" +msgid "General" +msgstr "General" + +msgctxt "view:ir.action.act_window:" +msgid "Keyword" +msgstr "Palabra clave" + +msgctxt "view:ir.action.act_window:" +msgid "Keywords" +msgstr "Palabras clave" + +msgctxt "view:ir.action.act_window:" +msgid "Open Window" +msgstr "Abrir ventana" + +msgctxt "view:ir.action.act_window:" +msgid "Open a Window" +msgstr "Abrir una ventana" + +msgctxt "view:ir.action.act_window:" +msgid "Views" +msgstr "Vistas" + +msgctxt "view:ir.action.keyword:" +msgid "Keyword" +msgstr "Palabra clave" + +msgctxt "view:ir.action.keyword:" +msgid "Keywords" +msgstr "Palabras clave" + +msgctxt "view:ir.action.report:" +msgid "General" +msgstr "General" + +msgctxt "view:ir.action.report:" +msgid "Keyword" +msgstr "Palabra clave" + +msgctxt "view:ir.action.report:" +msgid "Keywords" +msgstr "Palabras clave" + +msgctxt "view:ir.action.report:" +msgid "Report" +msgstr "Informe" + +msgctxt "view:ir.action.report:" +msgid "Report xml" +msgstr "Informe xml" + +msgctxt "view:ir.action.url:" +msgid "General" +msgstr "General" + +msgctxt "view:ir.action.url:" +msgid "Keyword" +msgstr "Palabra clave" + +msgctxt "view:ir.action.url:" +msgid "Keywords" +msgstr "Palabras clave" + +msgctxt "view:ir.action.url:" +msgid "URL" +msgstr "URL" + +msgctxt "view:ir.action.wizard:" +msgid "General" +msgstr "General" + +msgctxt "view:ir.action.wizard:" +msgid "Keyword" +msgstr "Palabra clave" + +msgctxt "view:ir.action.wizard:" +msgid "Keywords" +msgstr "Palabras clave" + +msgctxt "view:ir.action.wizard:" +msgid "Wizard" +msgstr "Asistente" + +msgctxt "view:ir.action:" +msgid "Action" +msgstr "Acción" + +msgctxt "view:ir.action:" +msgid "General" +msgstr "General" + +msgctxt "view:ir.action:" +msgid "Keyword" +msgstr "Palabra clave" + +msgctxt "view:ir.action:" +msgid "Keywords" +msgstr "Palabras clave" + +msgctxt "view:ir.attachment:" +msgid "Attachments" +msgstr "Adjuntos" + +msgctxt "view:ir.cron:" +msgid "Action to trigger" +msgstr "Acción a disparar" + +msgctxt "view:ir.cron:" +msgid "Scheduled Action" +msgstr "Acción programada" + +msgctxt "view:ir.cron:" +msgid "Scheduled Actions" +msgstr "Acciones programadas" + +msgctxt "view:ir.export:" +msgid "Exports" +msgstr "Exportaciones" + +msgctxt "view:ir.lang:" +msgid "Date Formatting" +msgstr "Formato de fecha" + +msgctxt "view:ir.lang:" +msgid "Language" +msgstr "Idioma" + +msgctxt "view:ir.lang:" +msgid "Languages" +msgstr "Idiomas" + +msgctxt "view:ir.lang:" +msgid "Numbers Formatting" +msgstr "Formato de números" + +msgctxt "view:ir.model.access:" +msgid "Access controls" +msgstr "Acceso a controles" + +msgctxt "view:ir.model.button:" +msgid "Button" +msgstr "Botón" + +msgctxt "view:ir.model.button:" +msgid "Buttons" +msgstr "Botones" + +msgctxt "view:ir.model.field.access:" +msgid "Field Access" +msgstr "Acceso al Campo" + +msgctxt "view:ir.model.field:" +msgid "Fields" +msgstr "Campos" + +msgctxt "view:ir.model.print_model_graph.start:" +msgid "Print Model Graph" +msgstr "Imprimir Gráfico del Modelo" + +msgctxt "view:ir.model:" +msgid "Fields Description" +msgstr "Descripción de campos" + +msgctxt "view:ir.model:" +msgid "Model Description" +msgstr "Descripción del modelo" + +msgctxt "view:ir.module.module.config_wizard.first:" +msgid "Welcome to the module configuration wizard!" +msgstr "Bienvenido al asistente de configuración del módulo" + +msgctxt "view:ir.module.module.config_wizard.first:" +msgid "You will be able to configure your installation" +msgstr "Podrá configurar su instalación" + +msgctxt "view:ir.module.module.config_wizard.first:" +msgid "" +"You will be able to configure your installation depending on the modules you" +" have installed." +msgstr "" +"Usted será capaz de configurar la instalación en función de los módulos que " +"ha instalado." + +msgctxt "view:ir.module.module.config_wizard.first:" +msgid "depending on the modules you have installed." +msgstr "dependiendo de los módulos que haya instalado." + +msgctxt "view:ir.module.module.config_wizard.item:" +msgid "Config Wizard Items" +msgstr "Configurar los elementos del asistente" + +msgctxt "view:ir.module.module.config_wizard.other:" +msgid "Configuration Wizard Next Step!" +msgstr "¡Asistente de Configuración de los Pasos siguientes!" + +msgctxt "view:ir.module.module.dependency:" +msgid "Dependencies" +msgstr "Dependencias" + +msgctxt "view:ir.module.module.dependency:" +msgid "Dependency" +msgstr "Dependencia" + +msgctxt "view:ir.module.module.install_upgrade.done:" +msgid "System Upgrade Done" +msgstr "Actualización del Sistema finalizada" + +msgctxt "view:ir.module.module.install_upgrade.done:" +msgid "The modules have been upgraded / installed !" +msgstr "Los módulos se han actualizado / instalado" + +msgctxt "view:ir.module.module.install_upgrade.start:" +msgid "Note that this operation my take a few minutes." +msgstr "Tenga en cuenta que esta operación puede durar varios minutos." + +msgctxt "view:ir.module.module.install_upgrade.start:" +msgid "System Upgrade" +msgstr "Mejora del Sistema" + +msgctxt "view:ir.module.module.install_upgrade.start:" +msgid "System upgrade done" +msgstr "Actualización del sistema terminada" + +msgctxt "view:ir.module.module.install_upgrade.start:" +msgid "The modules have been upgraded / installed !" +msgstr "Los módulos se han actualizado / instalado" + +msgctxt "view:ir.module.module.install_upgrade.start:" +msgid "We suggest you to reload the menu tab (Ctrl+t Ctrl+r)." +msgstr "Le sugerimos que recargue la barra del menú (Ctrl+t Ctrl+r)." + +msgctxt "view:ir.module.module.install_upgrade.start:" +msgid "You may have to reinstall some language pack." +msgstr "Es posible que necesite reinstalar un paquete de idioma." + +msgctxt "view:ir.module.module.install_upgrade.start:" +msgid "Your system will be upgraded." +msgstr "Su sistema se actualizará." + +msgctxt "view:ir.module.module:" +msgid "Cancel Installation" +msgstr "Cancelar instalación" + +msgctxt "view:ir.module.module:" +msgid "Cancel Uninstallation" +msgstr "Cancelar desinstalación" + +msgctxt "view:ir.module.module:" +msgid "Cancel Upgrade" +msgstr "Cancelar actualización" + +msgctxt "view:ir.module.module:" +msgid "Dependencies" +msgstr "Dependencias" + +msgctxt "view:ir.module.module:" +msgid "Mark for Installation" +msgstr "Marcar para instalar" + +msgctxt "view:ir.module.module:" +msgid "Mark for Uninstallation (beta)" +msgstr "Marcar para desinstalar (beta)" + +msgctxt "view:ir.module.module:" +msgid "Mark for Upgrade" +msgstr "Marcar para actualizar" + +msgctxt "view:ir.module.module:" +msgid "Module" +msgstr "Módulo" + +msgctxt "view:ir.module.module:" +msgid "Modules" +msgstr "Módulos" + +msgctxt "view:ir.property:" +msgid "Properties" +msgstr "Propiedades" + +msgctxt "view:ir.property:" +msgid "Property" +msgstr "Propiedad" + +msgctxt "view:ir.rule.group:" +msgid "" +"If there is no test defined, the rule is always satisfied if not global" +msgstr "" +"Si no hay ninguna prueba definida, la regla se aplica siempre que no sea " +"global" + +msgctxt "view:ir.rule.group:" +msgid "Record rules" +msgstr "Grabar reglas" + +msgctxt "view:ir.rule.group:" +msgid "The rule is satisfied if at least one test is True" +msgstr "La regla se satisface si por lo menos una condición es verdadera" + +msgctxt "view:ir.rule:" +msgid "Test" +msgstr "Prueba" + +msgctxt "view:ir.sequence.strict:" +msgid "${day}" +msgstr "${day}" + +msgctxt "view:ir.sequence.strict:" +msgid "${month}" +msgstr "${month}" + +msgctxt "view:ir.sequence.strict:" +msgid "${year}" +msgstr "${year}" + +msgctxt "view:ir.sequence.strict:" +msgid "Day:" +msgstr "Día:" + +msgctxt "view:ir.sequence.strict:" +msgid "Legend (for prefix, suffix)" +msgstr "Leyenda (variables para usar en prefijo y/o sufijo)" + +msgctxt "view:ir.sequence.strict:" +msgid "Month:" +msgstr "Mes:" + +msgctxt "view:ir.sequence.strict:" +msgid "Sequences Strict" +msgstr "Secuencias estrictas" + +msgctxt "view:ir.sequence.strict:" +msgid "Year:" +msgstr "Año:" + +msgctxt "view:ir.sequence.type:" +msgid "Sequence Type" +msgstr "Tipo de secuencia" + +msgctxt "view:ir.sequence:" +msgid "${day}" +msgstr "${day}" + +msgctxt "view:ir.sequence:" +msgid "${month}" +msgstr "${month}" + +msgctxt "view:ir.sequence:" +msgid "${year}" +msgstr "${year}" + +msgctxt "view:ir.sequence:" +msgid "Day:" +msgstr "Día:" + +msgctxt "view:ir.sequence:" +msgid "Incremental" +msgstr "Incremental" + +msgctxt "view:ir.sequence:" +msgid "Legend (Placeholders for prefix, suffix)" +msgstr "Leyenda (variables para usar en prefijo y/o sufijo)" + +msgctxt "view:ir.sequence:" +msgid "Legend (for prefix, suffix)" +msgstr "Leyenda (para prefijo, sufijo)" + +msgctxt "view:ir.sequence:" +msgid "Month:" +msgstr "Mes:" + +msgctxt "view:ir.sequence:" +msgid "Sequences" +msgstr "Secuencias" + +msgctxt "view:ir.sequence:" +msgid "Timestamp" +msgstr "Marca de tiempo" + +msgctxt "view:ir.sequence:" +msgid "Year:" +msgstr "Año:" + +msgctxt "view:ir.translation.clean.start:" +msgid "Clean Translations" +msgstr "Limpiar Traducciones" + +msgctxt "view:ir.translation.clean.start:" +msgid "Clean Translations Succeed!" +msgstr "¡Las traducciones se limpiaron correctamente!" + +msgctxt "view:ir.translation.clean.start:" +msgid "Clean Translations?" +msgstr "¿Limpiar Traducciones?" + +msgctxt "view:ir.translation.clean.succeed:" +msgid "Clean Translations" +msgstr "Limpiar Traducciones" + +msgctxt "view:ir.translation.clean.succeed:" +msgid "Clean Translations Succeed!" +msgstr "¡Las traducciones se limpiaron correctamente!" + +msgctxt "view:ir.translation.export.result:" +msgid "Export Translation" +msgstr "Exportar traducción" + +msgctxt "view:ir.translation.export.start:" +msgid "Export Translation" +msgstr "Exportar traducción" + +msgctxt "view:ir.translation.set_report.start:" +msgid "Set Report Translations" +msgstr "Extraer traducciones de los informes" + +msgctxt "view:ir.translation.set_report.start:" +msgid "Set Translations Succeed!" +msgstr "La extracción de las traducciones terminó correctamente" + +msgctxt "view:ir.translation.set_report.start:" +msgid "Synchronize Report Translations?" +msgstr "¿Sincronizar las traducciones de reportes?" + +msgctxt "view:ir.translation.set_report.succeed:" +msgid "Set Report Translations" +msgstr "Extraer traducciones de los informes" + +msgctxt "view:ir.translation.set_report.succeed:" +msgid "Set Translations Succeed!" +msgstr "La extracción de las traducciones terminó correctamente" + +msgctxt "view:ir.translation.update.start:" +msgid "Synchronize Translations" +msgstr "Sincronizar traducciones" + +msgctxt "view:ir.translation:" +msgid "Translations" +msgstr "Traducciones" + +msgctxt "view:ir.trigger:" +msgid "Trigger" +msgstr "Disparador" + +msgctxt "view:ir.trigger:" +msgid "Triggers" +msgstr "Disparadores" + +msgctxt "view:ir.ui.icon:" +msgid "Icon" +msgstr "Icono" + +msgctxt "view:ir.ui.icon:" +msgid "Icons" +msgstr "Iconos" + +msgctxt "view:ir.ui.menu:" +msgid "Menu" +msgstr "Menú" + +msgctxt "view:ir.ui.view:" +msgid "View" +msgstr "Vista" + +msgctxt "view:ir.ui.view:" +msgid "_Show" +msgstr "_Mostrar" + +msgctxt "view:ir.ui.view_sc:" +msgid "Shortcut" +msgstr "Marcador" + +msgctxt "view:ir.ui.view_sc:" +msgid "Shortcuts" +msgstr "Marcadores" + +msgctxt "view:ir.ui.view_tree_expanded_state:" +msgid "View Tree Expanded State" +msgstr "Estado de Vista de Árbol Expandido" + +msgctxt "view:ir.ui.view_tree_expanded_state:" +msgid "Views Tree Expanded State" +msgstr "Estado de Vista de Árbol Expandido" + +msgctxt "view:ir.ui.view_tree_width:" +msgid "View Tree Width" +msgstr "Ancho de la vista en árbol" + +msgctxt "view:ir.ui.view_tree_width:" +msgid "Views Tree Width" +msgstr "Ancho de la vista en árbol" + +msgctxt "wizard_button:ir.model.print_model_graph,start,end:" +msgid "Cancel" +msgstr "Cancelar" + +msgctxt "wizard_button:ir.model.print_model_graph,start,print_:" +msgid "Print" +msgstr "Imprimir" + +msgctxt "wizard_button:ir.module.module.config_wizard,first,action:" +msgid "Ok" +msgstr "Aceptar" + +msgctxt "wizard_button:ir.module.module.config_wizard,first,end:" +msgid "Cancel" +msgstr "Cancelar" + +msgctxt "wizard_button:ir.module.module.config_wizard,other,action:" +msgid "Next" +msgstr "Siguiente" + +msgctxt "wizard_button:ir.module.module.config_wizard,other,end:" +msgid "Cancel" +msgstr "Cancelar" + +msgctxt "wizard_button:ir.module.module.install_upgrade,done,config:" +msgid "Ok" +msgstr "Aceptar" + +msgctxt "wizard_button:ir.module.module.install_upgrade,start,end:" +msgid "Cancel" +msgstr "Cancelar" + +msgctxt "wizard_button:ir.module.module.install_upgrade,start,upgrade:" +msgid "Start Upgrade" +msgstr "Iniciar Mejora" + +msgctxt "wizard_button:ir.translation.clean,start,clean:" +msgid "Clean" +msgstr "Limpiar" + +msgctxt "wizard_button:ir.translation.clean,start,end:" +msgid "Cancel" +msgstr "Cancelar" + +msgctxt "wizard_button:ir.translation.clean,start,end:" +msgid "Ok" +msgstr "Aceptar" + +msgctxt "wizard_button:ir.translation.clean,succeed,end:" +msgid "Ok" +msgstr "Aceptar" + +msgctxt "wizard_button:ir.translation.export,result,end:" +msgid "Close" +msgstr "Cerrar" + +msgctxt "wizard_button:ir.translation.export,start,end:" +msgid "Cancel" +msgstr "Cancelar" + +msgctxt "wizard_button:ir.translation.export,start,end:" +msgid "Close" +msgstr "Cerrar" + +msgctxt "wizard_button:ir.translation.export,start,export:" +msgid "Export" +msgstr "Exportar" + +msgctxt "wizard_button:ir.translation.set_report,start,end:" +msgid "Cancel" +msgstr "Cancelar" + +msgctxt "wizard_button:ir.translation.set_report,start,end:" +msgid "Ok" +msgstr "Aceptar" + +msgctxt "wizard_button:ir.translation.set_report,start,set_report:" +msgid "Start Update" +msgstr "Iniciar Actualización" + +msgctxt "wizard_button:ir.translation.set_report,succeed,end:" +msgid "Ok" +msgstr "Aceptar" + +msgctxt "wizard_button:ir.translation.update,start,end:" +msgid "Cancel" +msgstr "Cancelar" + +msgctxt "wizard_button:ir.translation.update,start,update:" +msgid "Update" +msgstr "Actualizar" + +msgctxt "wizard_button:ir.ui.view.show,start,end:" +msgid "Close" +msgstr "Cerrar" diff --git a/trytond/res/locale/es_AR.po b/trytond/res/locale/es_AR.po index 542f2921b5..79d0b0e65b 100644 --- a/trytond/res/locale/es_AR.po +++ b/trytond/res/locale/es_AR.po @@ -1,3 +1,1061 @@ # msgid "" msgstr "Content-Type: text/plain; charset=utf-8\n" + +msgctxt "error:res.group:" +msgid "The name of the group must be unique!" +msgstr "¡El nombre del grupo debe ser único!" + +msgctxt "error:res.user:" +msgid "Wrong password!" +msgstr "¡Contraseña incorrecta!" + +msgctxt "error:res.user:" +msgid "You can not have two users with the same login!" +msgstr "No puede tener dos usuarios con el mismo nombre de usuario" + +msgctxt "error:res.user:" +msgid "" +"You can not remove the root user\n" +"as it is used internally for resources\n" +"created by the system (updates, module installation, ...)" +msgstr "" +"No puede eliminar al usuario root\n" +"ya que se utiliza internamente para recursos\n" +"creados por el sistema (actualizaciones, instalación de módulos, ...)" + +msgctxt "field:ir.action-res.group,action:" +msgid "Action" +msgstr "Acción" + +msgctxt "field:ir.action-res.group,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.action-res.group,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.action-res.group,group:" +msgid "Group" +msgstr "Grupo" + +msgctxt "field:ir.action-res.group,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.action-res.group,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.action-res.group,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.action-res.group,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.model.button-res.group,active:" +msgid "Active" +msgstr "Activo" + +msgctxt "field:ir.model.button-res.group,button:" +msgid "Button" +msgstr "Botón" + +msgctxt "field:ir.model.button-res.group,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.model.button-res.group,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.model.button-res.group,group:" +msgid "Group" +msgstr "Grupo" + +msgctxt "field:ir.model.button-res.group,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.model.button-res.group,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.model.button-res.group,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.model.button-res.group,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.model.field-res.group,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.model.field-res.group,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.model.field-res.group,field_id:" +msgid "Model Field" +msgstr "Modelo de campo" + +msgctxt "field:ir.model.field-res.group,group_id:" +msgid "Group" +msgstr "Grupo" + +msgctxt "field:ir.model.field-res.group,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.model.field-res.group,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.model.field-res.group,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.model.field-res.group,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.rule.group-res.group,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.rule.group-res.group,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.rule.group-res.group,group:" +msgid "Group" +msgstr "Grupo" + +msgctxt "field:ir.rule.group-res.group,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.rule.group-res.group,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.rule.group-res.group,rule_group:" +msgid "Rule Group" +msgstr "Regla de Grupo" + +msgctxt "field:ir.rule.group-res.group,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.rule.group-res.group,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.rule.group-res.user,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.rule.group-res.user,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.rule.group-res.user,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.rule.group-res.user,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.rule.group-res.user,rule_group:" +msgid "Rule Group" +msgstr "Regla de Grupo" + +msgctxt "field:ir.rule.group-res.user,user:" +msgid "User" +msgstr "Usuario" + +msgctxt "field:ir.rule.group-res.user,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.rule.group-res.user,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.sequence,groups:" +msgid "User Groups" +msgstr "Grupos de usuarios" + +msgctxt "field:ir.sequence.strict,groups:" +msgid "User Groups" +msgstr "Grupos de usuarios" + +msgctxt "field:ir.sequence.type,groups:" +msgid "User Groups" +msgstr "Grupos de usuarios" + +msgctxt "field:ir.sequence.type-res.group,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.sequence.type-res.group,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.sequence.type-res.group,group:" +msgid "User Groups" +msgstr "Grupos de usuarios" + +msgctxt "field:ir.sequence.type-res.group,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.sequence.type-res.group,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:ir.sequence.type-res.group,sequence_type:" +msgid "Sequence Type" +msgstr "Tipo de secuencia" + +msgctxt "field:ir.sequence.type-res.group,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.sequence.type-res.group,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:ir.ui.menu-res.group,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:ir.ui.menu-res.group,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:ir.ui.menu-res.group,group:" +msgid "Group" +msgstr "Grupo" + +msgctxt "field:ir.ui.menu-res.group,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:ir.ui.menu-res.group,menu:" +msgid "Menu" +msgstr "Menú" + +msgctxt "field:ir.ui.menu-res.group,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:ir.ui.menu-res.group,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:ir.ui.menu-res.group,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:res.group,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:res.group,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:res.group,field_access:" +msgid "Access Field" +msgstr "Acceso a Campo" + +msgctxt "field:res.group,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:res.group,menu_access:" +msgid "Access Menu" +msgstr "Acceso a Menú" + +msgctxt "field:res.group,model_access:" +msgid "Access Model" +msgstr "Acceso a Modelo" + +msgctxt "field:res.group,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.group,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.group,rule_groups:" +msgid "Rules" +msgstr "Reglas" + +msgctxt "field:res.group,users:" +msgid "Users" +msgstr "Usuarios" + +msgctxt "field:res.group,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:res.group,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:res.request,act_from:" +msgid "From" +msgstr "De" + +msgctxt "field:res.request,act_to:" +msgid "To" +msgstr "A" + +msgctxt "field:res.request,active:" +msgid "Active" +msgstr "Activo" + +msgctxt "field:res.request,body:" +msgid "Body" +msgstr "Cuerpo" + +msgctxt "field:res.request,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:res.request,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:res.request,date_sent:" +msgid "Date" +msgstr "Fecha" + +msgctxt "field:res.request,history:" +msgid "History" +msgstr "Histórico" + +msgctxt "field:res.request,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:res.request,name:" +msgid "Subject" +msgstr "Asunto" + +msgctxt "field:res.request,number_references:" +msgid "Number of References" +msgstr "Número de referencias" + +msgctxt "field:res.request,priority:" +msgid "Priority" +msgstr "Prioridad" + +msgctxt "field:res.request,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.request,references:" +msgid "References" +msgstr "Referencias" + +msgctxt "field:res.request,state:" +msgid "State" +msgstr "Estado" + +msgctxt "field:res.request,trigger_date:" +msgid "Trigger Date" +msgstr "Fecha del disparo" + +msgctxt "field:res.request,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:res.request,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:res.request.history,act_from:" +msgid "From" +msgstr "De" + +msgctxt "field:res.request.history,act_to:" +msgid "To" +msgstr "A" + +msgctxt "field:res.request.history,body:" +msgid "Body" +msgstr "Cuerpo" + +msgctxt "field:res.request.history,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:res.request.history,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:res.request.history,date_sent:" +msgid "Date sent" +msgstr "Fecha de envío" + +msgctxt "field:res.request.history,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:res.request.history,name:" +msgid "Summary" +msgstr "Resumen" + +msgctxt "field:res.request.history,number_references:" +msgid "References" +msgstr "Referencias" + +msgctxt "field:res.request.history,priority:" +msgid "Priority" +msgstr "Prioridad" + +msgctxt "field:res.request.history,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.request.history,request:" +msgid "Request" +msgstr "Solicitud" + +msgctxt "field:res.request.history,state:" +msgid "State" +msgstr "Estado" + +msgctxt "field:res.request.history,subject:" +msgid "Subject" +msgstr "Asunto" + +msgctxt "field:res.request.history,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:res.request.history,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:res.request.link,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:res.request.link,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:res.request.link,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:res.request.link,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:res.request.link,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.request.link,priority:" +msgid "Priority" +msgstr "Prioridad" + +msgctxt "field:res.request.link,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.request.link,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:res.request.link,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:res.request.reference,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:res.request.reference,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:res.request.reference,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:res.request.reference,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.request.reference,reference:" +msgid "Reference" +msgstr "Referencia" + +msgctxt "field:res.request.reference,request:" +msgid "Request" +msgstr "Solicitud" + +msgctxt "field:res.request.reference,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:res.request.reference,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:res.user,actions:" +msgid "Actions" +msgstr "Acciones" + +msgctxt "field:res.user,active:" +msgid "Active" +msgstr "Activo" + +msgctxt "field:res.user,connections:" +msgid "Connections" +msgstr "Conexiones" + +msgctxt "field:res.user,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:res.user,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:res.user,email:" +msgid "Email" +msgstr "Correo electrónico" + +msgctxt "field:res.user,groups:" +msgid "Groups" +msgstr "Grupos" + +msgctxt "field:res.user,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:res.user,language:" +msgid "Language" +msgstr "Idioma" + +msgctxt "field:res.user,language_direction:" +msgid "Language Direction" +msgstr "Dirección del idioma" + +msgctxt "field:res.user,login:" +msgid "Login" +msgstr "Nombre de usuario" + +msgctxt "field:res.user,login_try:" +msgid "Login Try" +msgstr "Reintento de inicio de sesión" + +msgctxt "field:res.user,menu:" +msgid "Menu Action" +msgstr "Menú de acciones" + +msgctxt "field:res.user,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.user,password:" +msgid "Password" +msgstr "Contraseña" + +msgctxt "field:res.user,pyson_menu:" +msgid "PySON Menu" +msgstr "Menú PySON" + +msgctxt "field:res.user,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.user,rule_groups:" +msgid "Rules" +msgstr "Reglas" + +msgctxt "field:res.user,salt:" +msgid "Salt" +msgstr "Sal" + +msgctxt "field:res.user,signature:" +msgid "Signature" +msgstr "Firma" + +msgctxt "field:res.user,status_bar:" +msgid "Status Bar" +msgstr "Barra de estado" + +msgctxt "field:res.user,timezone:" +msgid "Timezone" +msgstr "Zona horaria" + +msgctxt "field:res.user,warnings:" +msgid "Warnings" +msgstr "Avisos" + +msgctxt "field:res.user,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:res.user,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:res.user-ir.action,action:" +msgid "Action" +msgstr "Acción" + +msgctxt "field:res.user-ir.action,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:res.user-ir.action,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:res.user-ir.action,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:res.user-ir.action,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:res.user-ir.action,user:" +msgid "User" +msgstr "Usuario" + +msgctxt "field:res.user-ir.action,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:res.user-ir.action,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:res.user-res.group,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:res.user-res.group,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:res.user-res.group,group:" +msgid "Group" +msgstr "Grupo" + +msgctxt "field:res.user-res.group,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:res.user-res.group,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.user-res.group,user:" +msgid "User" +msgstr "Usuario" + +msgctxt "field:res.user-res.group,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:res.user-res.group,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:res.user.config.start,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:res.user.warning,always:" +msgid "Always" +msgstr "Siempre" + +msgctxt "field:res.user.warning,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:res.user.warning,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:res.user.warning,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:res.user.warning,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.user.warning,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:res.user.warning,user:" +msgid "User" +msgstr "Usuario" + +msgctxt "field:res.user.warning,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:res.user.warning,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "help:ir.sequence.type,groups:" +msgid "Groups allowed to edit the sequences of this type" +msgstr "Los grupos son autorizados para editar secuencias en este tipo" + +msgctxt "help:res.user,actions:" +msgid "Actions that will be run at login" +msgstr "Acciones que se ejecutan al iniciar sesión" + +msgctxt "model:ir.action,name:act_group_form" +msgid "Groups" +msgstr "Grupos" + +msgctxt "model:ir.action,name:act_request_form" +msgid "Requests" +msgstr "Solicitudes" + +msgctxt "model:ir.action,name:act_request_link_form" +msgid "Request Links" +msgstr "Enlaces a solicitudes" + +msgctxt "model:ir.action,name:act_user_config" +msgid "Configure Users" +msgstr "Configurar Usuarios" + +msgctxt "model:ir.action,name:act_user_form" +msgid "Users" +msgstr "Usuarios" + +msgctxt "model:ir.action-res.group,name:" +msgid "Action - Group" +msgstr "Acción - Grupo" + +msgctxt "model:ir.cron,name:cron_trigger_time" +msgid "Run On Time Triggers" +msgstr "Ejecutar Disparadores Al Tiempo" + +msgctxt "model:ir.model.button-res.group,name:" +msgid "Model Button - Group" +msgstr "Modelo de Botón - Grupo" + +msgctxt "model:ir.model.field-res.group,name:" +msgid "Model Field Group Rel" +msgstr "Relación entre grupo y campo del modelo" + +msgctxt "model:ir.rule.group-res.group,name:" +msgid "Rule Group - Group" +msgstr "Regla de grupo - grupo" + +msgctxt "model:ir.rule.group-res.user,name:" +msgid "Rule Group - User" +msgstr "Regla de grupo - usuario" + +msgctxt "model:ir.sequence.type-res.group,name:" +msgid "Sequence Type - Group" +msgstr "Secuencia de Tipo - Grupo" + +msgctxt "model:ir.ui.menu,name:menu_group_form" +msgid "Groups" +msgstr "Grupos" + +msgctxt "model:ir.ui.menu,name:menu_request_form" +msgid "Requests" +msgstr "Solicitudes" + +msgctxt "model:ir.ui.menu,name:menu_request_link_form" +msgid "Request Links" +msgstr "Enlaces a solicitudes" + +msgctxt "model:ir.ui.menu,name:menu_res" +msgid "Users" +msgstr "Usuarios" + +msgctxt "model:ir.ui.menu,name:menu_user_form" +msgid "Users" +msgstr "Usuarios" + +msgctxt "model:ir.ui.menu-res.group,name:" +msgid "UI Menu - Group" +msgstr "Menú UI - Grupo" + +msgctxt "model:res.group,name:" +msgid "Group" +msgstr "Grupo" + +msgctxt "model:res.group,name:group_admin" +msgid "Administration" +msgstr "Administración" + +msgctxt "model:res.request,name:" +msgid "Request" +msgstr "Solicitud" + +msgctxt "model:res.request.history,name:" +msgid "Request history" +msgstr "Histórico de solicitudes" + +msgctxt "model:res.request.link,name:" +msgid "Request link" +msgstr "Enlace a solicitud" + +msgctxt "model:res.request.link,name:request_link_cron" +msgid "Scheduler" +msgstr "Programador de tareas" + +msgctxt "model:res.request.reference,name:" +msgid "Request Reference" +msgstr "Referencia de la solicitud" + +msgctxt "model:res.user,name:" +msgid "User" +msgstr "Usuario" + +msgctxt "model:res.user,name:user_admin" +msgid "Administrator" +msgstr "Administrador" + +msgctxt "model:res.user,name:user_trigger" +msgid "Cron Trigger" +msgstr "Disparador del Programador de tareas" + +msgctxt "model:res.user-ir.action,name:" +msgid "res.user-ir.action" +msgstr "res.user-ir.action" + +msgctxt "model:res.user-res.group,name:" +msgid "User - Group" +msgstr "Usuario - Grupo" + +msgctxt "model:res.user.config.start,name:" +msgid "User Config Init" +msgstr "Inicio de Configuración de Usuario" + +msgctxt "model:res.user.warning,name:" +msgid "User Warning" +msgstr "Aviso al usuario" + +msgctxt "selection:res.request,priority:" +msgid "High" +msgstr "Alta" + +msgctxt "selection:res.request,priority:" +msgid "Low" +msgstr "Baja" + +msgctxt "selection:res.request,priority:" +msgid "Normal" +msgstr "Normal" + +msgctxt "selection:res.request,state:" +msgid "Chatting" +msgstr "En discusión" + +msgctxt "selection:res.request,state:" +msgid "Closed" +msgstr "Cerrada" + +msgctxt "selection:res.request,state:" +msgid "Draft" +msgstr "Borrador" + +msgctxt "selection:res.request,state:" +msgid "Waiting" +msgstr "En espera" + +msgctxt "selection:res.request.history,priority:" +msgid "High" +msgstr "Alta" + +msgctxt "selection:res.request.history,priority:" +msgid "Low" +msgstr "Baja" + +msgctxt "selection:res.request.history,priority:" +msgid "Normal" +msgstr "Normal" + +msgctxt "selection:res.request.history,state:" +msgid "Chatting" +msgstr "En discusión" + +msgctxt "selection:res.request.history,state:" +msgid "Closed" +msgstr "Cerrada" + +msgctxt "selection:res.request.history,state:" +msgid "Draft" +msgstr "Borrador" + +msgctxt "selection:res.request.history,state:" +msgid "Waiting" +msgstr "En espera" + +msgctxt "view:ir.module.module:" +msgid "Cancel Installation" +msgstr "Cancelar instalación" + +msgctxt "view:ir.module.module:" +msgid "Cancel Uninstallation" +msgstr "Cancelar la desinstalación" + +msgctxt "view:ir.module.module:" +msgid "Cancel Upgrade" +msgstr "Cancelar actualización" + +msgctxt "view:ir.module.module:" +msgid "Mark for Installation" +msgstr "Marcar para Instalación" + +msgctxt "view:ir.module.module:" +msgid "Mark for Uninstallation (beta)" +msgstr "Marcar para desinstalar (beta)" + +msgctxt "view:ir.module.module:" +msgid "Mark for Upgrade" +msgstr "Marcar para actualizar" + +msgctxt "view:res.group:" +msgid "Access Permissions" +msgstr "Permisos de Acceso" + +msgctxt "view:res.group:" +msgid "Group" +msgstr "Grupo" + +msgctxt "view:res.group:" +msgid "Groups" +msgstr "Grupos" + +msgctxt "view:res.group:" +msgid "Members" +msgstr "Miembros" + +msgctxt "view:res.group:" +msgid "Security" +msgstr "Seguridad" + +msgctxt "view:res.request.history:" +msgid "Request History" +msgstr "Histórico de solicitudes" + +msgctxt "view:res.request.link:" +msgid "Request Link" +msgstr "Enlace a solicitud" + +msgctxt "view:res.request.reference:" +msgid "Request Reference" +msgstr "Referencia de la solicitud" + +msgctxt "view:res.request.reference:" +msgid "Request References" +msgstr "Referencias de la solicitud" + +msgctxt "view:res.request:" +msgid "Close" +msgstr "Cerrar" + +msgctxt "view:res.request:" +msgid "References" +msgstr "Referencias" + +msgctxt "view:res.request:" +msgid "Reply" +msgstr "Responder" + +msgctxt "view:res.request:" +msgid "Request" +msgstr "Solicitud" + +msgctxt "view:res.request:" +msgid "Requests" +msgstr "Solicitudes" + +msgctxt "view:res.request:" +msgid "Send" +msgstr "Enviar" + +msgctxt "view:res.user.config.start:" +msgid "Add Users" +msgstr "Agregar Usuarios" + +msgctxt "view:res.user.config.start:" +msgid "Be careful that the login must be unique!" +msgstr "¡Asegúrese de hacer los nombres de usuario únicos!" + +msgctxt "view:res.user.config.start:" +msgid "You can now add some users into the system." +msgstr "Ahora puede agregar algunos usuarios al sistema." + +msgctxt "view:res.user.warning:" +msgid "Warning" +msgstr "Advertencia" + +msgctxt "view:res.user.warning:" +msgid "Warnings" +msgstr "Advertencias" + +msgctxt "view:res.user:" +msgid "Access Permissions" +msgstr "Permisos de Acceso" + +msgctxt "view:res.user:" +msgid "Actions" +msgstr "Acciones" + +msgctxt "view:res.user:" +msgid "Group Membership" +msgstr "Membresía del grupo" + +msgctxt "view:res.user:" +msgid "Preferences" +msgstr "Preferencias" + +msgctxt "view:res.user:" +msgid "Security" +msgstr "Seguridad" + +msgctxt "view:res.user:" +msgid "User" +msgstr "Usuario" + +msgctxt "view:res.user:" +msgid "Users" +msgstr "Usuarios" + +msgctxt "wizard_button:res.user.config,start,end:" +msgid "Cancel" +msgstr "Cancelar" + +msgctxt "wizard_button:res.user.config,start,user:" +msgid "Ok" +msgstr "Aceptar" + +msgctxt "wizard_button:res.user.config,user,add:" +msgid "Add" +msgstr "Añadir" + +msgctxt "wizard_button:res.user.config,user,end:" +msgid "End" +msgstr "Finalizar" diff --git a/trytond/webdav/locale/es_AR.po b/trytond/webdav/locale/es_AR.po index 542f2921b5..0dd1306738 100644 --- a/trytond/webdav/locale/es_AR.po +++ b/trytond/webdav/locale/es_AR.po @@ -1,3 +1,193 @@ # msgid "" msgstr "Content-Type: text/plain; charset=utf-8\n" + +msgctxt "error:ir.attachment:" +msgid "" +"You can not create an attachment\n" +"in a collection with the name\n" +"of an existing child collection!" +msgstr "" +"No puede crear un adjunto\n" +"en una colección con el nombre\n" +"de una colección hija existente" + +msgctxt "error:webdav.collection:" +msgid "The collection name must be unique inside a collection!" +msgstr "¡El nombre de la colección debe ser único dentro de dicha colección!" + +msgctxt "error:webdav.collection:" +msgid "" +"You can not create a collection\n" +"in a collection with the name of an existing file!" +msgstr "" +"No puede crear una colección\n" +"en una colección con el nombre de un archivo existente" + +msgctxt "error:webdav.collection:" +msgid "You can not create recursive collections!" +msgstr "No puede crear colecciones recursivas" + +msgctxt "field:ir.attachment,path:" +msgid "Path" +msgstr "Ruta" + +msgctxt "field:ir.attachment,shares:" +msgid "Shares" +msgstr "Recuros Compartidos" + +msgctxt "field:ir.attachment,url:" +msgid "URL" +msgstr "URL" + +msgctxt "field:webdav.collection,childs:" +msgid "Children" +msgstr "Hijos" + +msgctxt "field:webdav.collection,complete_name:" +msgid "Complete Name" +msgstr "Nombre completo" + +msgctxt "field:webdav.collection,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:webdav.collection,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:webdav.collection,domain:" +msgid "Domain" +msgstr "Dominio" + +msgctxt "field:webdav.collection,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:webdav.collection,model:" +msgid "Model" +msgstr "Modelo" + +msgctxt "field:webdav.collection,name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:webdav.collection,parent:" +msgid "Parent" +msgstr "Padre" + +msgctxt "field:webdav.collection,rec_name:" +msgid "Name" +msgstr "Nombre" + +msgctxt "field:webdav.collection,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:webdav.collection,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "field:webdav.share,create_date:" +msgid "Create Date" +msgstr "Fecha de Creación" + +msgctxt "field:webdav.share,create_uid:" +msgid "Create User" +msgstr "Creado por Usuario" + +msgctxt "field:webdav.share,expiration_date:" +msgid "Expiration Date" +msgstr "Fecha de Expiración" + +msgctxt "field:webdav.share,id:" +msgid "ID" +msgstr "ID" + +msgctxt "field:webdav.share,key:" +msgid "Key" +msgstr "Clave" + +msgctxt "field:webdav.share,note:" +msgid "Note" +msgstr "Nota" + +msgctxt "field:webdav.share,path:" +msgid "Path" +msgstr "Ruta" + +msgctxt "field:webdav.share,rec_name:" +msgid "Name" +msgstr "Nombre del campo" + +msgctxt "field:webdav.share,url:" +msgid "URL" +msgstr "URL" + +msgctxt "field:webdav.share,user:" +msgid "User" +msgstr "Usuario" + +msgctxt "field:webdav.share,write_date:" +msgid "Write Date" +msgstr "Fecha de Modificación" + +msgctxt "field:webdav.share,write_uid:" +msgid "Write User" +msgstr "Modificado por Usuario" + +msgctxt "model:ir.action,name:act_collection_list" +msgid "Collections" +msgstr "Colecciones" + +msgctxt "model:ir.action,name:act_collection_tree" +msgid "Collections" +msgstr "Colecciones" + +msgctxt "model:ir.action,name:act_share_list" +msgid "Shares" +msgstr "Recuros Compartidos" + +msgctxt "model:ir.ui.menu,name:menu_collection_list" +msgid "Collections" +msgstr "Colecciones" + +msgctxt "model:ir.ui.menu,name:menu_collection_tree" +msgid "Collections" +msgstr "Colecciones" + +msgctxt "model:ir.ui.menu,name:menu_share_list" +msgid "Shares" +msgstr "Recuros Compartidos" + +msgctxt "model:ir.ui.menu,name:menu_webdav" +msgid "WebDAV" +msgstr "WebDAV" + +msgctxt "model:webdav.collection,name:" +msgid "Collection" +msgstr "Colección" + +msgctxt "model:webdav.share,name:" +msgid "Share" +msgstr "Recurso compartido" + +msgctxt "view:ir.attachment:" +msgid "WebDAV" +msgstr "WebDAV" + +msgctxt "view:webdav.collection:" +msgid "Collection" +msgstr "Colección" + +msgctxt "view:webdav.collection:" +msgid "Collections" +msgstr "Colecciones" + +msgctxt "view:webdav.share:" +msgid "Share" +msgstr "Recurso compartido" + +msgctxt "view:webdav.share:" +msgid "Shares" +msgstr "Recuros Compartidos" From 836fd1aeb7b1e62fb9216944b9635c4bec577592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 24 Apr 2012 19:40:16 +0200 Subject: [PATCH 03/85] Prepare release 2.4.1 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 7f8e2a63f1..759c7afe6c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.4.1 - 2012-04-24 +* Restore es_AR translation + Version 2.4.0 - 2012-04-23 * Bug fixes (see mercurial logs for details) * Don't allow rpc call on ModelStorage without ModelView (CVE-2012-0215) From 60536e953a4562b083241d9049a290d233152cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 24 Apr 2012 19:40:24 +0200 Subject: [PATCH 04/85] Added tag 2.4.1 for changeset f062945b1b02 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index d31a40c086..c0c1358b47 100644 --- a/.hgtags +++ b/.hgtags @@ -6,3 +6,4 @@ af3a6063b46bf8739a513a06400fbb9858b5869b 1.8.0 3475040a8fe081b1b8609350186b779cc640fba4 2.0.0 1df3f0702c621e65279af52d1f87725747ae8fa4 2.2.0 640af4420c8eace7ee59a432bec54692f4808b20 2.4.0 +f062945b1b02d8b453100b7bb4e43fbefcef0a06 2.4.1 From 82cd67f20d5e125b65e2d0e2260764b6236fe310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 24 Apr 2012 19:42:07 +0200 Subject: [PATCH 05/85] Increase version number --- trytond/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/version.py b/trytond/version.py index e55fed6bbe..bde6c706d0 100644 --- a/trytond/version.py +++ b/trytond/version.py @@ -1,6 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.4.1" +VERSION = "2.4.2" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/" From 15f8e9509ec81e6d618b12e554e06bfb4743f50f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 25 Apr 2012 17:50:01 +0200 Subject: [PATCH 06/85] Missing quote arround table name in order clause (transplanted from 4929bf1c53d95db2ce2812bafa468093121b744f) --- trytond/model/modelsql.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index 2f2296f640..a23f59446c 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -2034,7 +2034,7 @@ class ModelSQL(ModelStorage): if field_name: if '%(table)s' in field_name or '%(order)s' in field_name: order_by.append(field_name % { - 'table': table_name, + 'table': '"%s"' % table_name, 'order': otype, }) else: From 33977c7eb363a240b1ee21ebdca4c38efc5fcf5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 27 Apr 2012 12:44:35 +0200 Subject: [PATCH 07/85] Wizard session record must not return BrowseRecordNull for list When the target comes from a xxx2Many field, an empty list must not be converted into a BrowseRecordNull. (transplanted from 6ab5d8671c68ce1335c0c67e0603435c38bdb153) --- trytond/wizard/wizard.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/wizard/wizard.py b/trytond/wizard/wizard.py index 57b2b993b7..4b8dc816ac 100644 --- a/trytond/wizard/wizard.py +++ b/trytond/wizard/wizard.py @@ -177,7 +177,7 @@ class _SessionRecord(object): data = [instance(x) for x in data] else: data = instance(data) - elif target_obj: + elif target_obj and not isinstance(data, list): return BrowseRecordNull() self.__cache[name] = data return data From 35ca1338b0f43b0bb2628f8dc170eea9d8df3c31 Mon Sep 17 00:00:00 2001 From: Giedrius Slavinskas Date: Fri, 4 May 2012 10:36:26 +0300 Subject: [PATCH 08/85] Fix report translation issue2586 review357001 (transplanted from d508e3aa340771096c8cf0bae59d70178b95edd6) --- trytond/report/report.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/report/report.py b/trytond/report/report.py index 88eddec7c7..801eeb62f9 100644 --- a/trytond/report/report.py +++ b/trytond/report/report.py @@ -78,9 +78,9 @@ class TranslateFactory: ('type', '=', 'odt'), ('name', '=', self.report_name), ('value', '!=', ''), - ('value', '!=', False), + ('value', '!=', None), ('fuzzy', '=', False), - ('res_id', '=', 0), + ('res_id', '=', None), ]) for translation in self.translation.browse(translation_ids): self.cache[self.language][translation.src] = translation.value From a062f161c722ca376aae7f863db985f045b82d02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 5 May 2012 09:28:41 +0200 Subject: [PATCH 09/85] Fix nested order_calc tables_args manipulation issue2572 review340003 (transplanted from 140087fedf85ceeb8be5d12aed23057a1f1bf74b) --- trytond/model/modelsql.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index a23f59446c..9f5ab973eb 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -1895,8 +1895,7 @@ class ModelSQL(ModelStorage): table_name + '.' + link_field) for i in range(len(tables)): if table_name in tables[i]: - args = tables_args[tables[i]] - del tables_args[tables[i]] + args = tables_args.pop(tables[i], []) tables[i] = tables[i].replace(table_name, table_name + '.' + link_field) tables_args[tables[i]] = args @@ -1931,8 +1930,7 @@ class ModelSQL(ModelStorage): table_name + '.' + link_field) for i in range(len(tables)): if table_name in tables[i]: - args = tables_args[tables[i]] - del tables_args[tables[i]] + args = tables_args.pop(tables[i], []) tables[i] = tables[i].replace(table_name, table_name + '.' + link_field) tables_args[tables[i]] = args @@ -1951,8 +1949,7 @@ class ModelSQL(ModelStorage): table_name2 + '.' + link_field2) for i in range(1, len(tables)): if table_name2 in tables[i]: - args = tables_args[tables[i]] - del tables_args[tables[i]] + args = tables_args.pop(tables[i], []) tables[i] = tables[i].replace(table_name2, table_name2 + '.' + link_field2) tables_args[tables[i]] = args From 259f1d25c52420249e15a27bf8e934718ed5f58d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 5 May 2012 09:32:24 +0200 Subject: [PATCH 10/85] Fix usage of None in search clause review353002 (transplanted from 0f00112edc776a10a920e1dab099e12cbfb2076b) --- trytond/model/fields/property.py | 13 +++++++++---- trytond/model/modelsql.py | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/trytond/model/fields/property.py b/trytond/model/fields/property.py index 05ac36eed2..7dfa64437a 100644 --- a/trytond/model/fields/property.py +++ b/trytond/model/fields/property.py @@ -119,11 +119,13 @@ class Property(Function): break if not default \ - or (clause[2] is False and clause[1] in ['=', '!=']) \ + or ((clause[2] is False or clause[2] is None) + and clause[1] in ['=', '!=']) \ or (clause[1] in ['not like', 'not ilike', 'not in', '!=']): operator = 'in' # default operator - if ((clause[2] is False and clause[1] == '=') - or (clause[2] is not False + if (((clause[2] is False or clause[2] is None) + and clause[1] == '=') + or ((clause[2] is not False and clause[2] is not None) and clause[1] in [ 'not like', 'not ilike', 'not in', '!='])): operator = 'not in' @@ -161,7 +163,8 @@ class Property(Function): operator = operator % '%%s' return ("(CAST(SPLIT_PART(value,',',2) AS %s) IN (" + ",".join((operator,) * len(clause[2])) + ")) ") % sql_type - elif clause[2] is False and clause[1] in ['=', '!=']: + elif ((clause[2] is False or clause[2] is None) + and clause[1] in ['=', '!=']): return "((cast(split_part(value,',',2) as %s) IS NULL " \ ") = %%s) " % sql_type elif clause[1] in ['not like', 'not ilike']: @@ -179,6 +182,8 @@ class Property(Function): res = [] if clause[1] in ('in', 'not in'): res.extend(clause[2]) + elif clause[2] is None: + res.append(False) else: res.append(clause[2]) return res diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index 9f5ab973eb..7c0bfa4ee6 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -1554,7 +1554,7 @@ class ModelSQL(ModelStorage): domain[i] = ('id', 'not in', ids2 + _rec_get(ids2, table, domain[i][0])) else: - if isinstance(domain[i][2], bool): + if isinstance(domain[i][2], bool) or domain[i][2] is None: relation_obj = pool.get(field.relation_name) query1 = 'SELECT "' + field.origin + '" ' \ 'FROM "' + relation_obj._table + '" '\ From 352ad7e4dfc1cbc7c62eae25d89780cf8fbb16bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 7 May 2012 13:58:26 +0200 Subject: [PATCH 11/85] Remove default value in init.sql review356001 (transplanted from a145e9a6503cfbf552c7f376ceb0e7735d054986) --- trytond/backend/mysql/init.sql | 2 +- trytond/backend/postgresql/init.sql | 4 ++-- trytond/backend/sqlite/init.sql | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/trytond/backend/mysql/init.sql b/trytond/backend/mysql/init.sql index a3f0f6b064..f0bbbfed10 100644 --- a/trytond/backend/mysql/init.sql +++ b/trytond/backend/mysql/init.sql @@ -45,7 +45,7 @@ CREATE TABLE ir_translation ( src TEXT, src_md5 VARCHAR(32) NOT NULL, name VARCHAR(255) NOT NULL, - res_id BIGINT NOT NULL DEFAULT 0, + res_id BIGINT NOT NULL, value TEXT, type VARCHAR(255), module VARCHAR(255), diff --git a/trytond/backend/postgresql/init.sql b/trytond/backend/postgresql/init.sql index 5389ec333f..ecbce7a91b 100644 --- a/trytond/backend/postgresql/init.sql +++ b/trytond/backend/postgresql/init.sql @@ -32,7 +32,7 @@ CREATE TABLE ir_ui_view ( "type" VARCHAR, arch TEXT NOT NULL, field_childs VARCHAR, - priority INTEGER NOT NULL DEFAULT 0, + priority INTEGER NOT NULL, PRIMARY KEY(id) ); @@ -55,7 +55,7 @@ CREATE TABLE ir_translation ( src TEXT, src_md5 VARCHAR(32) NOT NULL, name VARCHAR NOT NULL, - res_id INTEGER NOT NULL DEFAULT 0, + res_id INTEGER NOT NULL, value TEXT, "type" VARCHAR, module VARCHAR, diff --git a/trytond/backend/sqlite/init.sql b/trytond/backend/sqlite/init.sql index 2243542b84..d665fd4fc6 100644 --- a/trytond/backend/sqlite/init.sql +++ b/trytond/backend/sqlite/init.sql @@ -24,7 +24,7 @@ CREATE TABLE ir_ui_view ( "type" VARCHAR, arch TEXT, field_childs VARCHAR, - priority INTEGER DEFAULT 0 + priority INTEGER ); CREATE TABLE ir_ui_menu ( @@ -40,7 +40,7 @@ CREATE TABLE ir_translation ( src TEXT, src_md5 VARCHAR(32) NOT NULL, name VARCHAR, - res_id INTEGER DEFAULT 0, + res_id INTEGER, value TEXT, "type" VARCHAR, module VARCHAR, From bb970fe21ae74465d83ec2562ab89f79e4fa8197 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 7 May 2012 18:39:43 +0200 Subject: [PATCH 12/85] Remove not null from res_id of ir.translation in init.sql (transplanted from b06862b3f2794a47535690675e67b1049387c7dc) --- trytond/backend/mysql/init.sql | 2 +- trytond/backend/postgresql/init.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/backend/mysql/init.sql b/trytond/backend/mysql/init.sql index f0bbbfed10..ad80e3427e 100644 --- a/trytond/backend/mysql/init.sql +++ b/trytond/backend/mysql/init.sql @@ -45,7 +45,7 @@ CREATE TABLE ir_translation ( src TEXT, src_md5 VARCHAR(32) NOT NULL, name VARCHAR(255) NOT NULL, - res_id BIGINT NOT NULL, + res_id BIGINT, value TEXT, type VARCHAR(255), module VARCHAR(255), diff --git a/trytond/backend/postgresql/init.sql b/trytond/backend/postgresql/init.sql index ecbce7a91b..b4eb3aadcb 100644 --- a/trytond/backend/postgresql/init.sql +++ b/trytond/backend/postgresql/init.sql @@ -55,7 +55,7 @@ CREATE TABLE ir_translation ( src TEXT, src_md5 VARCHAR(32) NOT NULL, name VARCHAR NOT NULL, - res_id INTEGER NOT NULL, + res_id INTEGER, value TEXT, "type" VARCHAR, module VARCHAR, From f496011d312aa749e435efb72a60a5e3c05b92dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 12 May 2012 16:50:11 +0200 Subject: [PATCH 13/85] Add missing quote on order field review340005 (transplanted from c1ab49a749912d0a1681ce19a21ed1d9e4b273b9) --- trytond/model/modelsql.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index 7c0bfa4ee6..c88260ee6b 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -2035,8 +2035,8 @@ class ModelSQL(ModelStorage): 'order': otype, }) else: - order_by.append('"' + table_name + '".' + field_name + \ - ' ' + otype) + order_by.append('"%s"."%s" %s' + % (table_name, field_name, otype)) return order_by, tables, tables_args if field in self._inherit_fields.keys(): From 424a7ad521908bd8d09b6ac8f12c5fab4fac8e74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 12 May 2012 17:25:00 +0200 Subject: [PATCH 14/85] Add missing empty selection for action in menu issue2599 (transplanted from df2144bfa0200416108beb12c77a7887cec07509) --- trytond/ir/ui/menu.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/trytond/ir/ui/menu.py b/trytond/ir/ui/menu.py index 696b32c4f6..3831a4e1a3 100644 --- a/trytond/ir/ui/menu.py +++ b/trytond/ir/ui/menu.py @@ -77,12 +77,13 @@ class UIMenu(ModelSQL, ModelView): order_field='name'), 'get_rec_name', searcher='search_rec_name') icon = fields.Selection('list_icons', 'Icon', translate=False) action = fields.Function(fields.Reference('Action', - selection=[ - ('ir.action.report', 'ir.action.report'), - ('ir.action.act_window', 'ir.action.act_window'), - ('ir.action.wizard', 'ir.action.wizard'), - ('ir.action.url', 'ir.action.url'), - ]), 'get_action', setter='set_action') + selection=[ + ('', ''), + ('ir.action.report', 'ir.action.report'), + ('ir.action.act_window', 'ir.action.act_window'), + ('ir.action.wizard', 'ir.action.wizard'), + ('ir.action.url', 'ir.action.url'), + ]), 'get_action', setter='set_action') active = fields.Boolean('Active') def __init__(self): From d87738d8ffd6fa3e3f75a1f1b56b41afee66eae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 17 May 2012 12:59:58 +0200 Subject: [PATCH 15/85] Fix MySQLdb to use time for TIME instead of timedelta (transplanted from ea54d01020f2bf5eaa9f9d6be6446970cfc9b4d2) --- trytond/backend/mysql/database.py | 1 + 1 file changed, 1 insertion(+) diff --git a/trytond/backend/mysql/database.py b/trytond/backend/mysql/database.py index 82e2aef56b..a4a05407c1 100644 --- a/trytond/backend/mysql/database.py +++ b/trytond/backend/mysql/database.py @@ -42,6 +42,7 @@ class Database(DatabaseInterface): def cursor(self, autocommit=False, readonly=False): conv = MySQLdb.converters.conversions.copy() conv[float] = lambda value, _: repr(value) + conv[MySQLdb.constants.FIELD_TYPE.TIME] = MySQLdb.times.Time_or_None args = { 'db': self.database_name, 'sql_mode': 'traditional,postgresql', From b8b3e5aaeec0519e5cf14dd0be2e2034efb2bf0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 19 May 2012 15:30:38 +0200 Subject: [PATCH 16/85] Add missing shutdown_request on TCPServer for Python <= 2.6 issue2606 review374001 (transplanted from 7fefd5066a68b959af0be125d13aa003a41cf917) --- trytond/protocols/jsonrpc.py | 12 ++++++++++++ trytond/protocols/xmlrpc.py | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/trytond/protocols/jsonrpc.py b/trytond/protocols/jsonrpc.py index e5d0a0d73f..7ed33642aa 100644 --- a/trytond/protocols/jsonrpc.py +++ b/trytond/protocols/jsonrpc.py @@ -306,6 +306,18 @@ class SimpleJSONRPCServer(SocketServer.TCPServer, for handler in self.handlers: self.shutdown_request(handler.request) + if sys.version_info[:2] <= (2, 6): + + def shutdown_request(self, request): + """Called to shutdown and close an individual request.""" + try: + #explicitly shutdown. socket.close() merely releases + #the socket and waits for GC to perform the actual close. + request.shutdown(socket.SHUT_WR) + except socket.error: + pass # some platforms may raise ENOTCONN here + self.close_request(request) + class SimpleThreadedJSONRPCServer(SocketServer.ThreadingMixIn, SimpleJSONRPCServer): diff --git a/trytond/protocols/xmlrpc.py b/trytond/protocols/xmlrpc.py index 9114a75db5..c6d26dac53 100644 --- a/trytond/protocols/xmlrpc.py +++ b/trytond/protocols/xmlrpc.py @@ -206,6 +206,18 @@ class SimpleThreadedXMLRPCServer(SocketServer.ThreadingMixIn, for handler in self.handlers: self.shutdown_request(handler.request) + if sys.version_info[:2] <= (2, 6): + + def shutdown_request(self, request): + """Called to shutdown and close an individual request.""" + try: + #explicitly shutdown. socket.close() merely releases + #the socket and waits for GC to perform the actual close. + request.shutdown(socket.SHUT_WR) + except socket.error: + pass # some platforms may raise ENOTCONN here + self.close_request(request) + class SimpleThreadedXMLRPCServer6(SimpleThreadedXMLRPCServer): address_family = socket.AF_INET6 From b5436d7f88f1649b906ec2a8ea2fa9811c788593 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 2 Jun 2012 13:51:37 +0200 Subject: [PATCH 17/85] Fix missing update of depending modules (transplanted from f04dafda78bea3c6edfc98f4b06dcac40a1c9978) --- trytond/modules/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/trytond/modules/__init__.py b/trytond/modules/__init__.py index 05e702a895..f9b16328bc 100644 --- a/trytond/modules/__init__.py +++ b/trytond/modules/__init__.py @@ -107,9 +107,6 @@ class Node(Singleton): def __setattr__(self, name, value): super(Node, self).__setattr__(name, value) - if name in ('init', 'update'): - for child in self.childs: - setattr(child, name, value) if name == 'depth': for child in self.childs: setattr(child, name, value + 1) @@ -221,6 +218,9 @@ def load_module_graph(graph, pool, lang=None): package_state = module2state.get(module, 'uninstalled') if (is_module_to_install(module) or package_state in ('to install', 'to upgrade')): + for kind in ('init', 'update'): + for child in package.childs: + CONFIG[kind][child.name] = 1 for type in objects.keys(): for obj in objects[type]: logger.info('%s:init %s' % (module, obj._name)) From 63d1cbd8a379d6c0ab4b0e89c895efc4f8feeabb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 8 Jun 2012 18:56:52 +0200 Subject: [PATCH 18/85] Don't alter CONFIG to init/update children modules (transplanted from 08ef04e5660a6401f584232ed478042264008224) --- trytond/modules/__init__.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/trytond/modules/__init__.py b/trytond/modules/__init__.py index f9b16328bc..76661ea237 100644 --- a/trytond/modules/__init__.py +++ b/trytond/modules/__init__.py @@ -218,9 +218,10 @@ def load_module_graph(graph, pool, lang=None): package_state = module2state.get(module, 'uninstalled') if (is_module_to_install(module) or package_state in ('to install', 'to upgrade')): - for kind in ('init', 'update'): - for child in package.childs: - CONFIG[kind][child.name] = 1 + if package_state not in ('to install', 'to upgrade'): + package_state = 'to install' + for child in package.childs: + module2state[child.name] = package_state for type in objects.keys(): for obj in objects[type]: logger.info('%s:init %s' % (module, obj._name)) From 19444a6c0b5bc963fb43480a75f07f7f88bf8c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 20 Jun 2012 18:15:04 +0200 Subject: [PATCH 19/85] Skip empty arch when searching other strings of same model review397006 (transplanted from ab888dad00c295a627962fd0d78b64085d07c772) --- trytond/ir/ui/view.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/trytond/ir/ui/view.py b/trytond/ir/ui/view.py index 9d0ed1f8d6..2838f77381 100644 --- a/trytond/ir/ui/view.py +++ b/trytond/ir/ui/view.py @@ -140,7 +140,10 @@ class View(ModelSQL, ModelView): ('module', '=', view.module), ]) for view2 in self.browse(view_ids): - tree2 = etree.fromstring(view2.arch) + xml2 = view2.arch.strip() + if not xml2: + continue + tree2 = etree.fromstring(xml2) root2_element = tree2.getroottree().getroot() strings += self._translate_view(root2_element) if not strings: From 97f50c900169f790a19c2d83b12bd053c26953a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 28 Jun 2012 14:59:53 +0200 Subject: [PATCH 20/85] Fix comparison of BrowseRecord when other is not a BrowseRecord review395002 (transplanted from f4f87514514c358a0f010e9e384974f0e125434c) --- trytond/model/browse.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/trytond/model/browse.py b/trytond/model/browse.py index d6f66c0703..2bc2f2c86f 100644 --- a/trytond/model/browse.py +++ b/trytond/model/browse.py @@ -244,9 +244,13 @@ class BrowseRecord(object): return "BrowseRecord(%s, %d)" % (self._model_name, self.id) def __eq__(self, other): + if not isinstance(other, BrowseRecord): + return False return (self._model_name, self.id) == (other._model_name, other.id) def __ne__(self, other): + if not isinstance(other, BrowseRecord): + return True return (self._model_name, self.id) != (other._model_name, other.id) # we need to define __unicode__ even though we've already defined __str__ From 9b5a7644ab86e0254a3955333e57e998a7ca4f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 19 Jul 2012 09:55:09 +0200 Subject: [PATCH 21/85] Fix reading from cache in field one2many issue2706 review419001 (transplanted from 3f8c8cd3a79b9526fc215fd5031b7a61ae215c70) --- trytond/model/fields/one2many.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/model/fields/one2many.py b/trytond/model/fields/one2many.py index 5ac1c6e74d..4a69524cbd 100644 --- a/trytond/model/fields/one2many.py +++ b/trytond/model/fields/one2many.py @@ -88,7 +88,7 @@ class One2Many(Field): for i in chain(*ids2): if i in cache[self.model_name] \ and self.field in cache[self.model_name][i]: - res[cache[self.model_name][i][self.field].id].append(i) + res[cache[self.model_name][i][self.field]].append(i) else: ids3.append(i) From aab2ea449eb4852ec299eb374bf2cab47e9322f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 25 Jul 2012 20:51:36 +0200 Subject: [PATCH 22/85] Don't fail on unknown database for WebDAV issue2717 review426002 (transplanted from 66dfaa06e7f80da00229b88e9b9aae7fb4a1e70b) --- trytond/protocols/webdav.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/trytond/protocols/webdav.py b/trytond/protocols/webdav.py index 1d043f70ca..0e6bbd44ef 100644 --- a/trytond/protocols/webdav.py +++ b/trytond/protocols/webdav.py @@ -558,8 +558,11 @@ class WebDAVAuthRequestHandler(WebDAVServer.DAVRequestHandler): def get_userinfo(self, user, password, command=''): path = urlparse.urlparse(self.path).path dbname = urllib.unquote_plus(path.split('/', 2)[1]) - if not dbname: - Database().connect() + database = Database().connect() + cursor = database.cursor() + databases = database.list(cursor) + cursor.close() + if not dbname or dbname not in databases: return True if user: user = int(login(dbname, user, password, cache=False)) From a4824be4c8dd23e437e8acf739a95dc7c40056df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 23 Aug 2012 14:02:36 +0200 Subject: [PATCH 23/85] Fix typo in doc (transplanted from 5f8f56af3ca4763fa3e4f4163df57c65e1aad54b) --- doc/ref/models/fields.rst | 2 ++ doc/ref/wizard.rst | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/ref/models/fields.rst b/doc/ref/models/fields.rst index f66c4a8539..62ef2b802e 100644 --- a/doc/ref/models/fields.rst +++ b/doc/ref/models/fields.rst @@ -390,6 +390,7 @@ A many-to-one relation field. ``SET NULL`` is the default setting. .. note:: + ``SET NULL`` will be override into ``RESTRICT`` if :attr:`~Field.required` is true. .. @@ -480,6 +481,7 @@ A many-to-many relation field. The name of the field that has the :class:`Many2One` to the target record. .. note:: + A :class:`Many2Many` field can be used on a simple :class:`~trytond.model.ModelView`, like in a :class:`~trytond.wizard.Wizard`. For this, :attr:`~Many2Many.relation_name` diff --git a/doc/ref/wizard.rst b/doc/ref/wizard.rst index 5e385a73ed..f05505f868 100644 --- a/doc/ref/wizard.rst +++ b/doc/ref/wizard.rst @@ -35,7 +35,7 @@ Class attributes are: .. attribute:: Wizard._rpc - Same as :attribute:`trytond.model.Model._rpc`. + Same as :attr:`trytond.model.Model._rpc`. .. attribute:: Wizard.states @@ -123,7 +123,7 @@ Instance methods are: .. method:: StateView.get_view Returns the view definition like - :method:`~trytond.model.ModelView.fields_view_get`. + :meth:`~trytond.model.ModelView.fields_view_get`. .. method:: StateView.get_defaults(wizard, session, state_name, fields) From 647f3ed06fca9215448d1d4cd23bb290120978f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 23 Aug 2012 23:17:15 +0200 Subject: [PATCH 24/85] NULL value for boolean fields should be considered like False issue2755 review476002 (transplanted from b348f38d0d9419f742ea9d74f9f206d084c1e359) --- trytond/model/modelsql.py | 14 ++++++++++---- trytond/tests/test_fields.py | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index c88260ee6b..ff6392ed9d 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -1805,15 +1805,21 @@ class ModelSQL(ModelStorage): else: if (arg[2] is False or arg[2] is None) and (arg[1] == '='): if table._columns[arg[0]]._type == 'boolean': - qu1.append('("%s"."%s" = %%s)' % \ - (table._table, arg[0])) + qu1.append('(("%s"."%s" = %%s) OR ("%s"."%s" IS NULL))' + % (table._table, arg[0], table._table, arg[0])) qu2.append(False) else: qu1.append('("%s"."%s" IS NULL)' % \ (table._table, arg[0])) elif (arg[2] is False or arg[2] is None) and (arg[1] == '!='): - qu1.append('("%s"."%s" IS NOT NULL)' % \ - (table._table, arg[0])) + if table._columns[arg[0]]._type == 'boolean': + qu1.append('(("%s"."%s" != %%s) ' + 'AND ("%s"."%s" IS NOT NULL))' + % (table._table, arg[0], table._table, arg[0])) + qu2.append(False) + else: + qu1.append('("%s"."%s" IS NOT NULL)' % \ + (table._table, arg[0])) else: if arg[0] == 'id': qu1.append('("%s"."%s" %s %%s)' % \ diff --git a/trytond/tests/test_fields.py b/trytond/tests/test_fields.py index 8412fff41d..d4b9ea6f7a 100644 --- a/trytond/tests/test_fields.py +++ b/trytond/tests/test_fields.py @@ -146,6 +146,23 @@ class FieldsTestCase(unittest.TestCase): boolean3_id = self.boolean.create({}) self.assert_(boolean3_id) + # Test search with NULL value + boolean4_id = self.boolean.create({ + 'boolean': None, + }) + self.assert_(boolean4_id) + + boolean_ids = self.boolean.search([ + ('boolean', '=', False), + ]) + self.assertEqual(boolean_ids, + [boolean2_id, boolean3_id, boolean4_id]) + + boolean_ids = self.boolean.search([ + ('boolean', '!=', False), + ]) + self.assertEqual(boolean_ids, [boolean1_id]) + boolean3 = self.boolean.read(boolean3_id, ['boolean']) self.assert_(boolean3['boolean'] == False) From ac511b9d02c34397e3b4c6dea01326ae0d4e8f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 10 Sep 2012 18:02:03 +0200 Subject: [PATCH 25/85] Fix search button clause in ModelButton.get_groups CVE-2012-2238 issue2757 review478002 (transplanted from 2c147ff136c745e2e324f4d5db3107f8591ca228) --- CHANGELOG | 2 ++ trytond/ir/model.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 759c7afe6c..f750a73500 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +* Fix search button clause in ModelButton.get_groups (CVE-2012-2238) + Version 2.4.1 - 2012-04-24 * Restore es_AR translation diff --git a/trytond/ir/model.py b/trytond/ir/model.py index 67ff4ffb17..b2678ba688 100644 --- a/trytond/ir/model.py +++ b/trytond/ir/model.py @@ -522,7 +522,7 @@ class ModelButton(ModelSQL, ModelView): Return a set of group ids for the named button on the model. ''' button_ids = self.search([ - ('model', '=', model), + ('model.model', '=', model), ('name', '=', name), ]) if not button_ids: From d06b9c6d4685dc87884400aae8633f19172e2986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 10 Sep 2012 18:04:38 +0200 Subject: [PATCH 26/85] Prepare release 2.4.2 --- CHANGELOG | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index f750a73500..fcc80f3d77 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +Version 2.4.2 - 2012-09-10 +* Bug fixes (see mercurial logs for details) * Fix search button clause in ModelButton.get_groups (CVE-2012-2238) Version 2.4.1 - 2012-04-24 From a264e7609aba983991bf6603e49072813fbe83a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 10 Sep 2012 18:04:39 +0200 Subject: [PATCH 27/85] Added tag 2.4.2 for changeset dde27d2125f2 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index c0c1358b47..5382696a70 100644 --- a/.hgtags +++ b/.hgtags @@ -7,3 +7,4 @@ af3a6063b46bf8739a513a06400fbb9858b5869b 1.8.0 1df3f0702c621e65279af52d1f87725747ae8fa4 2.2.0 640af4420c8eace7ee59a432bec54692f4808b20 2.4.0 f062945b1b02d8b453100b7bb4e43fbefcef0a06 2.4.1 +dde27d2125f27a664699cd20f0c2556d88af52c8 2.4.2 From 15afdfc3189cad1ad4a97bdbd2633c2d6784cdbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 10 Sep 2012 18:05:15 +0200 Subject: [PATCH 28/85] Increase version number --- trytond/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/version.py b/trytond/version.py index bde6c706d0..f6cea975b5 100644 --- a/trytond/version.py +++ b/trytond/version.py @@ -1,6 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.4.2" +VERSION = "2.4.3" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/" From ef1ee18d8f966e5cc0677126c092a61636c87461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 10 Sep 2012 15:09:35 +0200 Subject: [PATCH 29/85] Fix documentation about child child{1,2} was replaced by child (transplanted from 505c165774903bb4595616d2e17370433d982362) --- doc/topics/views/index.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/topics/views/index.rst b/doc/topics/views/index.rst index 1c32f999a1..e5f802cc07 100644 --- a/doc/topics/views/index.rst +++ b/doc/topics/views/index.rst @@ -358,10 +358,10 @@ hpaned, vpaned * ``colspan``: see in common-attributes-colspan_. The default for panes is 4 columns. -child1, child2 -^^^^^^^^^^^^^^ +child +^^^^^ -Contains the two childs of a hpaned or vpaned. +Contains the childs of a hpaned or vpaned. .. _example_form_view: From ba78bea6bf2d10c30d26d89212b4a00b4fe564e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 20 Sep 2012 23:31:04 +0200 Subject: [PATCH 30/85] Fix domain concatenation between list and tuple (transplanted from 1db3c1f30f2aa694d8ab586a0a95f40d6ff054f1) --- trytond/ir/lang.py | 2 +- trytond/res/user.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/ir/lang.py b/trytond/ir/lang.py index a656938292..bf2acf5c8e 100644 --- a/trytond/ir/lang.py +++ b/trytond/ir/lang.py @@ -59,7 +59,7 @@ class Lang(ModelSQL, ModelView, Cacheable): if ids: ids += self.search([('name',) + clause[1:]], order=[]) return [('id', 'in', ids)] - return [('name',) + clause[1:]] + return [('name',) + tuple(clause[1:])] def read(self, ids, fields_names=None): pool = Pool() diff --git a/trytond/res/user.py b/trytond/res/user.py index 57a6a5bc54..8b90b1d5b5 100644 --- a/trytond/res/user.py +++ b/trytond/res/user.py @@ -253,7 +253,7 @@ class User(ModelSQL, ModelView): ], order=[]) if len(ids) == 1: return [('id', '=', ids[0])] - return [(self._rec_name,) + clause[1:]] + return [(self._rec_name,) + tuple(clause[1:])] def copy(self, ids, default=None): if default is None: From 54d12b9b9c22a48ab5740a47814178d4b1d85a04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 20 Sep 2012 23:31:29 +0200 Subject: [PATCH 31/85] Add missing ids in super call of UserAction.write (transplanted from 4d9c9ab3b70d39c5bae56b3a1446fda2e2e2567a) --- trytond/res/user.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/res/user.py b/trytond/res/user.py index 8b90b1d5b5..6ca9ebb949 100644 --- a/trytond/res/user.py +++ b/trytond/res/user.py @@ -489,7 +489,7 @@ class UserAction(ModelSQL): def write(self, ids, values): values = self._convert_values(values) - return super(UserAction, self).write(values) + return super(UserAction, self).write(ids, values) UserAction() From 11440ac88c560a165248cb40e21a773fe5a39ce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Fri, 21 Sep 2012 15:26:35 +0200 Subject: [PATCH 32/85] Set domain_get mode correctly review385001 (transplanted from 8f4010112a95920eb3ae9d45379fb5f8442387d8) --- trytond/ir/rule.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/ir/rule.py b/trytond/ir/rule.py index 9d355933b9..7db17fdb09 100644 --- a/trytond/ir/rule.py +++ b/trytond/ir/rule.py @@ -158,7 +158,7 @@ class Rule(ModelSQL, ModelView): if not Transaction().context.get('user'): return '', [] with Transaction().set_user(Transaction().context['user']): - return self.domain_get(model_name) + return self.domain_get(model_name, mode=mode) pool = Pool() rule_group_obj = pool.get('ir.rule.group') From 7b75fa5bb5cfa3278138a3a47198159a9b848496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 24 Sep 2012 11:36:39 +0200 Subject: [PATCH 33/85] Fix read related values of reference fields By using just only the id to store the related values, it could result a mixing of different model with the same id. So now, it uses the reference value. (transplanted from fb51f5b4aa4c504466cd75db60bf23bc9053209b) --- trytond/model/modelsql.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index ff6392ed9d..c5f67b8d50 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -691,7 +691,7 @@ class ModelSQL(ModelStorage): obj = pool.get(model_name) record2 = obj.read(record_id, fields_related[field]) del record2['id'] - fields_related2values[field][record_id] = record2 + fields_related2values[field][record[field]] = record2 if to_del or fields_related.keys() or datetime_fields: for record in res: @@ -718,7 +718,7 @@ class ModelSQL(ModelStorage): continue record[field + '.' + related] = \ fields_related2values[field][ - record_id][related] + record[field]][related] for field in to_del: del record[field] From 2492bc92cd1afdf1b541f70da9e52744e95d0bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 10 Oct 2012 12:53:51 +0200 Subject: [PATCH 34/85] Add _buttons to listMethods (transplanted from c2917c3be0ab487400b37b02f950193972d4e0a7) --- trytond/protocols/dispatcher.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/trytond/protocols/dispatcher.py b/trytond/protocols/dispatcher.py index 0d767c5719..4951e8454e 100644 --- a/trytond/protocols/dispatcher.py +++ b/trytond/protocols/dispatcher.py @@ -108,6 +108,9 @@ def dispatch(host, port, protocol, database_name, user, session, object_type, for object_name, obj in pool.iterobject(type=type): for method in obj._rpc: res.append(type + '.' + object_name + '.' + method) + if hasattr(obj, '_buttons'): + for button in obj._buttons: + res.append(type + '.' + object_name + '.' + button) return res elif method == 'methodSignature': return 'signatures not supported' From f8dd069cb6d9ec4fc80c6c731b7cddbe57f252df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 5 Nov 2012 17:41:48 +0100 Subject: [PATCH 35/85] Prepare release 2.4.3 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index fcc80f3d77..49ef09d6ce 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.4.3 - 2012-11-05 +* Bug fixes (see mercurial logs for details) + Version 2.4.2 - 2012-09-10 * Bug fixes (see mercurial logs for details) * Fix search button clause in ModelButton.get_groups (CVE-2012-2238) From edb5ea6f26684b9e659727e2a0017c45db068ba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 5 Nov 2012 17:41:49 +0100 Subject: [PATCH 36/85] Added tag 2.4.3 for changeset df0fe07b4e74 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 5382696a70..f0085dabe1 100644 --- a/.hgtags +++ b/.hgtags @@ -8,3 +8,4 @@ af3a6063b46bf8739a513a06400fbb9858b5869b 1.8.0 640af4420c8eace7ee59a432bec54692f4808b20 2.4.0 f062945b1b02d8b453100b7bb4e43fbefcef0a06 2.4.1 dde27d2125f27a664699cd20f0c2556d88af52c8 2.4.2 +df0fe07b4e7412cfbe4320eb61dd3371086e6d5a 2.4.3 From c3cf8ed27f1a1487ddb7cec6c5ed596a122bac15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 5 Nov 2012 17:42:27 +0100 Subject: [PATCH 37/85] Increase version number --- trytond/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/version.py b/trytond/version.py index f6cea975b5..dc72a7af7c 100644 --- a/trytond/version.py +++ b/trytond/version.py @@ -1,6 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.4.3" +VERSION = "2.4.4" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/" From bf823266f07de13e10ecd9a598731e2eafa480e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 12 Nov 2012 18:01:55 +0100 Subject: [PATCH 38/85] Fix search with None value issue2877 review584003 --- trytond/model/modelsql.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index c5f67b8d50..96aa8fd0e8 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -1464,14 +1464,14 @@ class ModelSQL(ModelStorage): table_query, table_args = field_obj.table_query() table_query = '(' + table_query + ') AS ' - if ids2 == True or ids2 == False: + if isinstance(ids2, bool) or ids2 is None: query1 = 'SELECT "' + field.field + '" ' \ 'FROM ' + table_query + \ '"' + field_obj._table + '" ' \ 'WHERE "' + field.field + '" IS NOT NULL' query2 = table_args clause = 'inselect' - if ids2 == False: + if not ids2: clause = 'notinselect' domain[i] = ('id', clause, (query1, query2)) elif not ids2: @@ -1561,7 +1561,7 @@ class ModelSQL(ModelStorage): 'WHERE "' + field.origin + '" IS NOT NULL' query2 = [] clause = 'inselect' - if domain[i][2] == False: + if not domain[i][2]: clause = 'notinselect' domain[i] = ('id', clause, (query1, query2)) else: From e18046b3b8f27e2eec98a0256435dc601a7b3c78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Tue, 13 Nov 2012 11:26:38 +0100 Subject: [PATCH 39/85] fix use of password not in ASCII review582004 issue2869 (transplanted from 11723f7a90274c0ede62bec51f782aa2efab0eea) --- trytond/protocols/dispatcher.py | 6 ++++-- trytond/security.py | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/trytond/protocols/dispatcher.py b/trytond/protocols/dispatcher.py index 4951e8454e..f7385bcf94 100644 --- a/trytond/protocols/dispatcher.py +++ b/trytond/protocols/dispatcher.py @@ -229,9 +229,11 @@ def create(database_name, password, lang, admin_password): 'WHERE code = %s', 1) + ')' \ 'WHERE login <> \'root\'', (lang,)) if hashlib: - admin_password = hashlib.sha1(admin_password).hexdigest() + admin_password = hashlib.sha1(admin_password.encode('utf-8'))\ + .hexdigest() else: - admin_password = sha.new(admin_password).hexdigest() + admin_password = sha.new(admin_password.encode('utf-8'))\ + .hexdigest() cursor.execute('UPDATE res_user ' \ 'SET password = %s ' \ 'WHERE login = \'admin\'', (admin_password,)) diff --git a/trytond/security.py b/trytond/security.py index ce7dcbce15..17198643b6 100644 --- a/trytond/security.py +++ b/trytond/security.py @@ -18,7 +18,6 @@ def login(dbname, loginname, password, cache=True): with Transaction().start(dbname, 0) as transaction: pool = _get_pool(dbname) user_obj = pool.get('res.user') - password = password.decode('utf-8') user_id = user_obj.get_login(loginname, password) transaction.cursor.commit() if user_id: From 71bbdf6dc9744cf5661a7824c5ce3dd9c55c6710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 22 Nov 2012 22:49:41 +0100 Subject: [PATCH 40/85] Add missing context when filling cache from search (transplanted from 4a73e09049b47932fede96fcfa1525724e072b1b) --- trytond/model/modelsql.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index 96aa8fd0e8..3a338245e7 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -1224,7 +1224,7 @@ class ModelSQL(ModelStorage): cursor.execute(query_str, tables_args + qu2) datas = cursor.dictfetchmany(cursor.IN_MAX) - cache = cursor.get_cache() + cache = cursor.get_cache(Transaction().context) cache.setdefault(self._name, LRUDict(RECORD_CACHE_SIZE)) delete_records = Transaction().delete_records.setdefault(self._name, set()) From 8788a9bf21c2a7427ef241522396a7b4eb612bc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 5 Dec 2012 13:40:49 +0100 Subject: [PATCH 41/85] Add missing call to set_timezone review599006 (transplanted from 4ac46a5d21910a386b5d9d45af08cdf421b5a7b0) --- trytond/server.py | 1 + 1 file changed, 1 insertion(+) diff --git a/trytond/server.py b/trytond/server.py index e802d97729..fc5428d9ce 100644 --- a/trytond/server.py +++ b/trytond/server.py @@ -31,6 +31,7 @@ class TrytonServer(object): CONFIG.update_etc(options['configfile']) CONFIG.update_cmdline(options) + CONFIG.set_timezone() if CONFIG['logfile']: logf = CONFIG['logfile'] From 7340e714236c1d90e5427bc72c8045fe83196cd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 23 Dec 2012 16:47:06 +0100 Subject: [PATCH 42/85] Prepare release 2.4.4 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 49ef09d6ce..0458e260e6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.4.4 - 2012-12-23 +* Bug fixes (see mercurial logs for details) + Version 2.4.3 - 2012-11-05 * Bug fixes (see mercurial logs for details) From e8a0aa505687c6625384ba0d756e367b067d7356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 23 Dec 2012 16:47:08 +0100 Subject: [PATCH 43/85] Added tag 2.4.4 for changeset 7947246464f7 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index f0085dabe1..6ee8934576 100644 --- a/.hgtags +++ b/.hgtags @@ -9,3 +9,4 @@ af3a6063b46bf8739a513a06400fbb9858b5869b 1.8.0 f062945b1b02d8b453100b7bb4e43fbefcef0a06 2.4.1 dde27d2125f27a664699cd20f0c2556d88af52c8 2.4.2 df0fe07b4e7412cfbe4320eb61dd3371086e6d5a 2.4.3 +7947246464f77eb61a93cfe46242c31facfb3bf0 2.4.4 From 2a183829b5be35749b310d54c2b3066f00e28ad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 23 Dec 2012 16:47:35 +0100 Subject: [PATCH 44/85] Increase version number --- trytond/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/version.py b/trytond/version.py index dc72a7af7c..ebad8f3167 100644 --- a/trytond/version.py +++ b/trytond/version.py @@ -1,6 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.4.4" +VERSION = "2.4.5" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/" From bcfc4a90eda283657086eb6a5c76c49a1dfa16ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 23 Dec 2012 22:56:09 +0100 Subject: [PATCH 45/85] Fix read relate value when id is 0 review618002 (transplanted from 61a94a11e42b872f7026a129a28f0b6c83f32865) --- trytond/model/modelsql.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index 3a338245e7..fbe16588bf 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -658,7 +658,7 @@ class ModelSQL(ModelStorage): if hasattr(self._columns[field], 'datetime_field') \ and self._columns[field].datetime_field: for record in res: - if not record[field]: + if record[field] is None: continue with Transaction().set_context(_datetime=record[ self._columns[field].datetime_field]): From 690c686c47c7b92b7a0d87fb5f2f5a92d4abfb57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 4 Feb 2013 20:08:10 +0100 Subject: [PATCH 46/85] local_cache and model2ids must depend on datetime review650002 (transplanted from 93a0f6e189e361a622bc88e7d6265dc63abd6606) --- trytond/model/browse.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/trytond/model/browse.py b/trytond/model/browse.py index 2bc2f2c86f..08ef143f0a 100644 --- a/trytond/model/browse.py +++ b/trytond/model/browse.py @@ -193,9 +193,11 @@ class BrowseRecord(object): _datetime = data[j.datetime_field] with Transaction().set_context( _datetime=_datetime): - ids = model2ids.setdefault(model, []) + ids = model2ids.setdefault((model, _datetime), + []) ids.append(data[i]) - local_cache = model2cache.setdefault(model, + local_cache = model2cache.setdefault( + (model, _datetime), LRUDict(RECORD_CACHE_SIZE)) data[i] = BrowseRecord(data[i], model, ids, local_cache) @@ -205,9 +207,10 @@ class BrowseRecord(object): _datetime = data[j.datetime_field] with Transaction().set_context( _datetime=_datetime): - ids = model2ids.setdefault(model, []) + ids = model2ids.setdefault((model, _datetime), []) ids.extend(data[i]) - local_cache = model2cache.setdefault(model, + local_cache = model2cache.setdefault( + (model, _datetime), LRUDict(RECORD_CACHE_SIZE)) data[i] = BrowseRecordList( BrowseRecord(x, model, ids, local_cache) From e0ef65f41b3f031a165d561b88e4832590e3580f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 12 Feb 2013 18:09:56 +0100 Subject: [PATCH 47/85] Prepare release 2.4.5 --- CHANGELOG | 3 +++ COPYRIGHT | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0458e260e6..d67f6887ed 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.4.5 - 2013-02-12 +* Bug fixes (see mercurial logs for details) + Version 2.4.4 - 2012-12-23 * Bug fixes (see mercurial logs for details) diff --git a/COPYRIGHT b/COPYRIGHT index cc1cebfa6a..21df598293 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,7 +1,7 @@ Copyright (C) 2004-2008 Tiny SPRL. -Copyright (C) 2007-2012 Cédric Krier. +Copyright (C) 2007-2013 Cédric Krier. Copyright (C) 2007-2012 Bertrand Chenal. -Copyright (C) 2008-2012 B2CK SPRL. +Copyright (C) 2008-2013 B2CK SPRL. Copyright (C) 2011 Openlabs Technologies & Consulting (P) Ltd. This program is free software: you can redistribute it and/or modify From 3dcb2e41ba6db7cde5158a81972b2495870cf77d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 12 Feb 2013 18:09:57 +0100 Subject: [PATCH 48/85] Added tag 2.4.5 for changeset 148f631d881f --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 6ee8934576..eb5433b6c8 100644 --- a/.hgtags +++ b/.hgtags @@ -10,3 +10,4 @@ f062945b1b02d8b453100b7bb4e43fbefcef0a06 2.4.1 dde27d2125f27a664699cd20f0c2556d88af52c8 2.4.2 df0fe07b4e7412cfbe4320eb61dd3371086e6d5a 2.4.3 7947246464f77eb61a93cfe46242c31facfb3bf0 2.4.4 +148f631d881f4eb3ea49ef1dc0654bf0f49fd9d3 2.4.5 From 3141442c5286d14a43740d08cffedb964bd17faf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 12 Feb 2013 18:10:32 +0100 Subject: [PATCH 49/85] Increase version number --- trytond/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/version.py b/trytond/version.py index ebad8f3167..40bbdd5809 100644 --- a/trytond/version.py +++ b/trytond/version.py @@ -1,6 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.4.5" +VERSION = "2.4.6" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/" From b89ed1d239f78c8beed1101c824a5ca966b40ec8 Mon Sep 17 00:00:00 2001 From: Ian Wilson Date: Mon, 25 Feb 2013 12:53:32 -0800 Subject: [PATCH 50/85] Data must be item and not list. Unpack data into an item from a list to be consistent. issue3016 review679002 (transplanted from e801061343d6bb6190784e44183818ab3e83df62) --- trytond/convert.py | 1 + 1 file changed, 1 insertion(+) diff --git a/trytond/convert.py b/trytond/convert.py index 13ae136030..8947facf40 100644 --- a/trytond/convert.py +++ b/trytond/convert.py @@ -608,6 +608,7 @@ class TrytondXmlHandler(sax.handler.ContentHandler): 'db_id': inherit_db_ids[table], 'inherit': True, }) + data, = data else: data_id = self.modeldata_obj.create({ 'fs_id': fs_id, From 0ad50ad98453f8d09658cc893c074f3343165bc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 12 Mar 2013 11:37:29 +0100 Subject: [PATCH 51/85] Backed out changeset 7f0937e14150 --- trytond/convert.py | 1 - 1 file changed, 1 deletion(-) diff --git a/trytond/convert.py b/trytond/convert.py index 8947facf40..13ae136030 100644 --- a/trytond/convert.py +++ b/trytond/convert.py @@ -608,7 +608,6 @@ class TrytondXmlHandler(sax.handler.ContentHandler): 'db_id': inherit_db_ids[table], 'inherit': True, }) - data, = data else: data_id = self.modeldata_obj.create({ 'fs_id': fs_id, From a9992d4cffeac6439e55887168831637b3fa994b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 4 Mar 2013 21:30:17 +0100 Subject: [PATCH 52/85] Fix check of _sql_error_messages issue3021 review682002 (transplanted from b0bd4835cfc875baf1bf8124e7e23c4cc45c3483) --- trytond/model/modelsql.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index fbe16588bf..ea621fa0a6 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -388,7 +388,7 @@ class ModelSQL(ModelStorage): for name, _, error in self._sql_constraints: if name in exception[0]: self.raise_user_error(error) - for name, error in self._sql_error_messages: + for name, error in self._sql_error_messages.iteritems(): if name in exception[0]: self.raise_user_error(error) raise @@ -909,7 +909,7 @@ class ModelSQL(ModelStorage): for name, _, error in self._sql_constraints: if name in exception[0]: self.raise_user_error(error) - for name, error in self._sql_error_messages: + for name, error in self._sql_error_messages.iteritems(): if name in exception[0]: self.raise_user_error(error) raise From 4ccab91401618d3f84063336515f4b0894b5d633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 6 Mar 2013 13:32:16 +0100 Subject: [PATCH 53/85] Don't use Model from res module in ir module As ir module doesn't depend on res module, it should not use the Model of it. (transplanted from f89e104aad506c06c572c76166431ccbd9953def) --- trytond/ir/model.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/trytond/ir/model.py b/trytond/ir/model.py index b2678ba688..98256abb70 100644 --- a/trytond/ir/model.py +++ b/trytond/ir/model.py @@ -412,7 +412,6 @@ class ModelFieldAccess(ModelSQL, ModelView): pool = Pool() ir_model_obj = pool.get('ir.model') ir_model_field_obj = pool.get('ir.model.field') - user_group_obj = pool.get('res.user-res.group') cursor = Transaction().cursor @@ -423,12 +422,12 @@ class ModelFieldAccess(ModelSQL, ModelView): 'ON (a.field = f.id) ' 'JOIN "%s" AS m ' 'ON (f.model = m.id) ' - 'LEFT JOIN "%s" AS gu ' + 'LEFT JOIN "res_user-res_group" AS gu ' 'ON (gu."group" = a."group") ' 'WHERE m.model = %%s AND (gu."user" = %%s OR a."group" IS NULL) ' 'GROUP BY f.name' % (mode, self._table, ir_model_field_obj._table, - ir_model_obj._table, user_group_obj._table), (model_name, + ir_model_obj._table), (model_name, Transaction().user)) accesses = dict(cursor.fetchall()) if access: From 7a9e671c766d39d7e733e633326ebdda0b6d8a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 12 Mar 2013 11:47:14 +0100 Subject: [PATCH 54/85] Fix check of _sql_error_messages (transplanted from 4e5f1c24ce3ddad5f362e734138bc67643bad079) --- trytond/model/modelsql.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index ea621fa0a6..ae6f0250b8 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -1128,7 +1128,7 @@ class ModelSQL(ModelStorage): for name, _, error in self._sql_constraints: if name in exception[0]: self.raise_user_error(error) - for name, error in self._sql_error_messages: + for name, error in self._sql_error_messages.iteritems(): if name in exception[0]: self.raise_user_error(error) raise From dd9b30e2b05b20a76f8a7f432f1e239d6eb276be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 13 Mar 2013 18:42:30 +0100 Subject: [PATCH 55/85] Fix local variable 'microseconds' referenced before assignment issue3049 (transplanted from cdd7c4de7770e3c69fcb584325c2325d91781c06) --- trytond/backend/sqlite/database.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/trytond/backend/sqlite/database.py b/trytond/backend/sqlite/database.py index 94915068c9..330632fd21 100644 --- a/trytond/backend/sqlite/database.py +++ b/trytond/backend/sqlite/database.py @@ -39,6 +39,8 @@ def extract(lookup_type, date): hours, minutes, seconds = map(int, timepart_full[0].split(":")) if len(timepart_full) == 2: microseconds = int(timepart_full[1]) + else: + microseconds = 0 date = datetime.datetime(year, month, day, hours, minutes, seconds, microseconds) except Exception: From f5596857995db9d85dd3a1e2e08c40848564f2dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 16 Apr 2013 15:38:04 +0200 Subject: [PATCH 56/85] Fix clean _language_cache review782002 --- trytond/model/modelstorage.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/model/modelstorage.py b/trytond/model/modelstorage.py index 6a09b4a765..5e98fd7592 100644 --- a/trytond/model/modelstorage.py +++ b/trytond/model/modelstorage.py @@ -153,7 +153,7 @@ class ModelStorage(Model): # Clean cursor cache for cache in Transaction().cursor.cache.values(): - for cache in (cache, cache.get('_language_cache', {}).values()): + for cache in [cache] + cache.get('_language_cache', {}).values(): if self._name in cache: if isinstance(ids, (int, long)): ids = [ids] @@ -221,7 +221,7 @@ class ModelStorage(Model): # Clean cursor cache for cache in Transaction().cursor.cache.values(): - for cache in (cache, cache.get('_language_cache', {}).values()): + for cache in [cache] + cache.get('_language_cache', {}).values(): if self._name in cache: if isinstance(ids, (int, long)): ids = [ids] From b819c0fe95156e046ed837884e41163a63a50ab3 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bonicoli Date: Mon, 8 Apr 2013 10:57:39 +0200 Subject: [PATCH 57/85] View: remove encoding declaration (fix lxml usage) issue3119 review765002 (transplanted from 861d25f41f6232ed43b25cac63ee3892313332e4) --- trytond/model/modelview.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/model/modelview.py b/trytond/model/modelview.py index fb4e7dcbd1..557ffe8ec7 100644 --- a/trytond/model/modelview.py +++ b/trytond/model/modelview.py @@ -191,7 +191,7 @@ class ModelView(Model): else: if view_type == 'form': res = self.fields_get() - xml = '''''' \ + xml = '''''' \ '''
''' % (self._description,) for i in res: if i in ('create_uid', 'create_date', @@ -207,7 +207,7 @@ class ModelView(Model): field = 'id' if self._rec_name in self._columns: field = self._rec_name - xml = '''''' \ + xml = '''''' \ '''''' \ % (self._description, field) else: From 069333a74dfee751e10f3904e66b3d4f5fa19866 Mon Sep 17 00:00:00 2001 From: Ralf Peschke Date: Sat, 13 Apr 2013 10:28:07 +0200 Subject: [PATCH 58/85] Fix: on import_data zero values shouldn't be converted to None import_data method converts zero values to None. As a consequence such records don't pass the required constraint for such fields issue3136 review779002 (transplanted from 88183e783aa788ff22a03bf1b672209acb4860e4) --- trytond/model/modelstorage.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/trytond/model/modelstorage.py b/trytond/model/modelstorage.py index 5e98fd7592..dd50a41bc3 100644 --- a/trytond/model/modelstorage.py +++ b/trytond/model/modelstorage.py @@ -764,11 +764,11 @@ class ModelStorage(Model): else: res = bool(int(value)) elif field_type == 'integer': - res = value and int(value) or None + res = int(value) if value else None elif field_type == 'float': - res = value and float(value) or None + res = float(value) if value else None elif field_type == 'numeric': - res = value and Decimal(value) or None + res = Decimal(value) if value else None elif field_type == 'date': res = value and datetime.date(*time.strptime(value, '%Y-%m-%d')[:3]) From dfdc014daff9eedaff7e9d579b87e0544e69df7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 17 Apr 2013 17:44:34 +0200 Subject: [PATCH 59/85] Fix ir_translation clause on res_id Since changeset 3e12e07af677, res_id is NULL instead of 0. issue3161 review805002 (transplanted from 1a74aaf6feb4213892aa1927be708497386c60aa) --- trytond/model/modelsql.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index ae6f0250b8..f611dec3e1 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -1660,7 +1660,7 @@ class ModelSQL(ModelStorage): table_join = 'LEFT JOIN "ir_translation" ' \ 'ON (ir_translation.name = ' \ 'ir_model.model||\',%s\' ' \ - 'AND ir_translation.res_id = 0 ' \ + 'AND ir_translation.res_id IS NULL ' \ 'AND ir_translation.lang = %%s ' \ 'AND ir_translation.type = \'model\' ' \ 'AND ir_translation.fuzzy = %%s)' % \ @@ -1675,7 +1675,7 @@ class ModelSQL(ModelStorage): 'LEFT JOIN "ir_translation" ' \ 'ON (ir_translation.name = ' \ 'ir_model.model||\',\'||%s.name ' \ - 'AND ir_translation.res_id = 0 ' \ + 'AND ir_translation.res_id IS NULL ' \ 'AND ir_translation.lang = %%s ' \ 'AND ir_translation.type = \'%s\' ' \ 'AND ir_translation.fuzzy = %%s)' % \ @@ -1972,7 +1972,7 @@ class ModelSQL(ModelStorage): table_join = 'LEFT JOIN "ir_translation" ' \ 'AS "%s" ON ' \ '("%s".name = "ir_model".model||\',%s\' ' \ - 'AND "%s".res_id = 0 ' \ + 'AND "%s".res_id IS NULL ' \ 'AND "%s".lang = %%s ' \ 'AND "%s".type = \'model\' ' \ 'AND "%s".fuzzy = %%s)' % \ @@ -1991,7 +1991,7 @@ class ModelSQL(ModelStorage): table_join = 'LEFT JOIN "ir_translation" ' \ 'AS "%s" ON ' \ '("%s".name = "ir_model".model||\',\'||%s.name ' \ - 'AND "%s".res_id = 0 ' \ + 'AND "%s".res_id IS NULL ' \ 'AND "%s".lang = %%s ' \ 'AND "%s".type = \'%s\' ' \ 'AND "%s".fuzzy = %%s)' % \ From 5241575b7648c041e7cc71bf9078c83f935b3617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 17 Apr 2013 19:42:39 +0200 Subject: [PATCH 60/85] Fix get_data to return str instead of buffer (transplanted from 9d27d8712d6f038e08e8c8b20004233a9d0e0e1f) --- trytond/webdav/webdav.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/webdav/webdav.py b/trytond/webdav/webdav.py index 4bee113d29..d2cc696952 100644 --- a/trytond/webdav/webdav.py +++ b/trytond/webdav/webdav.py @@ -505,7 +505,7 @@ class Collection(ModelSQL, ModelView): data = DAV_NotFound try: if attachment.data is not None: - data = attachment.data + data = str(attachment.data) except Exception: pass if attachment.id == object_id: From 691b0c24ebf5e916830b8f9197595c7f453d1bd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 17 Apr 2013 19:43:19 +0200 Subject: [PATCH 61/85] Fix wrong import from PyWebDAV >= 0.9.8 (transplanted from 8798eb4435b6f68e5554510af02657579ff0d98d) --- trytond/webdav/webdav.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/webdav/webdav.py b/trytond/webdav/webdav.py index d2cc696952..7dbc8586c6 100644 --- a/trytond/webdav/webdav.py +++ b/trytond/webdav/webdav.py @@ -581,7 +581,7 @@ class Collection(ModelSQL, ModelView): return 201 def rmcol(self, uri, cache=None): - from pywebdav.errors import DAV_Forbidden + from pywebdav.lib.errors import DAV_Forbidden object_name, object_id = self._uri2object(uri, cache=cache) if object_name != 'webdav.collection' \ or not object_id: @@ -593,7 +593,7 @@ class Collection(ModelSQL, ModelView): return 200 def rm(self, uri, cache=None): - from pywebdav.errors import DAV_Forbidden + from pywebdav.lib.errors import DAV_Forbidden object_name, object_id = self._uri2object(uri, cache=cache) if not object_name: raise DAV_Forbidden From efa2d9d34d0aa5efbdb2ad730b12bc5ad8672308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 2 May 2013 09:37:03 +0200 Subject: [PATCH 62/85] Prepare release 2.4.6 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index d67f6887ed..6db27f195d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.4.6 - 2013-05-02 +* Bug fixes (see mercurial logs for details) + Version 2.4.5 - 2013-02-12 * Bug fixes (see mercurial logs for details) From 86eb571af7d517d09409a803e1ecf6693ed5ed81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 2 May 2013 09:37:04 +0200 Subject: [PATCH 63/85] Added tag 2.4.6 for changeset b0045ec6d62c --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index eb5433b6c8..d5471b258d 100644 --- a/.hgtags +++ b/.hgtags @@ -11,3 +11,4 @@ dde27d2125f27a664699cd20f0c2556d88af52c8 2.4.2 df0fe07b4e7412cfbe4320eb61dd3371086e6d5a 2.4.3 7947246464f77eb61a93cfe46242c31facfb3bf0 2.4.4 148f631d881f4eb3ea49ef1dc0654bf0f49fd9d3 2.4.5 +b0045ec6d62c346f7ff7c0679e687b54fa50b67b 2.4.6 From 44ee18467a7757270a2bc1b6f38bbde8b7f2e49f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 2 May 2013 09:37:25 +0200 Subject: [PATCH 64/85] Increase version number --- trytond/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/version.py b/trytond/version.py index 40bbdd5809..3db81d05b0 100644 --- a/trytond/version.py +++ b/trytond/version.py @@ -1,6 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.4.6" +VERSION = "2.4.7" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/" From c2f727b4e8734ee7152ea8b28ac9b5cd4e8b75ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 4 May 2013 11:44:15 +0200 Subject: [PATCH 65/85] Allow None in child_of operator issue3190 review844002 (transplanted from 67208cffb07e8ab82e904a23f135fa8c6308d5a4) --- trytond/model/modelsql.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index f611dec3e1..36c560bfdf 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -1512,7 +1512,7 @@ class ModelSQL(ModelStorage): ids2 = [x[0] for x in target_obj.search([ ('rec_name', 'ilike', domain[i][2]), ], order=[])] - elif isinstance(domain[i][2], (int, long)): + elif not isinstance(domain[i][2], list): ids2 = [domain[i][2]] else: ids2 = domain[i][2] @@ -1588,7 +1588,7 @@ class ModelSQL(ModelStorage): ids2 = [x[0] for x in field_obj.search([ ('rec_name', 'like', domain[i][2]), ], order=[])] - elif isinstance(domain[i][2], (int, long)): + elif not isinstance(domain[i][2], list): ids2 = [domain[i][2]] else: ids2 = domain[i][2] From 367685ce305293f5e9f32d3f3b29c3f16e9aec4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 18 May 2013 19:13:12 +0200 Subject: [PATCH 66/85] Fix validation of domain for One2One fields issue3206 review852003 (transplanted from 3765bc03294580c09839b03fa40ea42459376e2b) --- trytond/model/modelstorage.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/model/modelstorage.py b/trytond/model/modelstorage.py index dd50a41bc3..1a291c72cf 100644 --- a/trytond/model/modelstorage.py +++ b/trytond/model/modelstorage.py @@ -1024,7 +1024,7 @@ class ModelStorage(Model): domain = PYSONDecoder(env).decode(pyson_domain) relation_ids = [] if record[field_name]: - if field._type in ('many2one',): + if field._type in ('many2one', 'one2one'): relation_ids.append(record[field_name].id) else: relation_ids.extend( @@ -1042,7 +1042,7 @@ class ModelStorage(Model): relation_ids = [] for record in records: if record[field_name]: - if field._type in ('many2one',): + if field._type in ('many2one', 'one2one'): relation_ids.append(record[field_name].id) else: relation_ids.extend( From 476897536adc1677e710fc2e699cf08105b01446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 9 Jun 2013 22:35:52 +0200 Subject: [PATCH 67/85] Prepare release 2.4.7 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 6db27f195d..aefe27d294 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.4.7 - 2013-06-09 +* Bug fixes (see mercurial logs for details) + Version 2.4.6 - 2013-05-02 * Bug fixes (see mercurial logs for details) From f8b393b32b137883d9759a56cbe510cec711a686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 9 Jun 2013 22:35:53 +0200 Subject: [PATCH 68/85] Added tag 2.4.7 for changeset 78ff1f6a0c0a --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index d5471b258d..1628a4412c 100644 --- a/.hgtags +++ b/.hgtags @@ -12,3 +12,4 @@ df0fe07b4e7412cfbe4320eb61dd3371086e6d5a 2.4.3 7947246464f77eb61a93cfe46242c31facfb3bf0 2.4.4 148f631d881f4eb3ea49ef1dc0654bf0f49fd9d3 2.4.5 b0045ec6d62c346f7ff7c0679e687b54fa50b67b 2.4.6 +78ff1f6a0c0a850da5510dd73b20a24479a1a1dd 2.4.7 From 3a6668eac3c5addffa00a91099f85a43f5b97c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 9 Jun 2013 22:36:14 +0200 Subject: [PATCH 69/85] Increase version number --- trytond/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/version.py b/trytond/version.py index 3db81d05b0..5178fbb408 100644 --- a/trytond/version.py +++ b/trytond/version.py @@ -1,6 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.4.7" +VERSION = "2.4.8" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/" From 7a51001c3eb98c6a9f940db8e2dbda948541f25f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 1 Jun 2013 00:17:33 +0200 Subject: [PATCH 70/85] Fix domain concatenation between list and tuple (transplanted from 83a66e4ae380e5f2d790d1cd4c10a59a714fd6bd) --- trytond/model/modelstorage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/model/modelstorage.py b/trytond/model/modelstorage.py index 1a291c72cf..79bb451dfa 100644 --- a/trytond/model/modelstorage.py +++ b/trytond/model/modelstorage.py @@ -508,7 +508,7 @@ class ModelStorage(Model): if (rec_name not in self._columns and rec_name not in self._inherit_fields): return [] - return [(rec_name,) + clause[1:]] + return [(rec_name,) + tuple(clause[1:])] def browse(self, ids): ''' From 452cd4bb362a9a77225acf2e7244ea484d2db6ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 22 Jul 2013 11:41:01 +0200 Subject: [PATCH 71/85] Prepare release 2.4.8 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index aefe27d294..232995659a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.4.8 - 2013-07-22 +* Bug fixes (see mercurial logs for details) + Version 2.4.7 - 2013-06-09 * Bug fixes (see mercurial logs for details) From 28b03b93cd20f3e353075eb6c07d710de6bc598b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 22 Jul 2013 11:41:02 +0200 Subject: [PATCH 72/85] Added tag 2.4.8 for changeset 2d0eb2cba385 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 1628a4412c..4100d42c80 100644 --- a/.hgtags +++ b/.hgtags @@ -13,3 +13,4 @@ df0fe07b4e7412cfbe4320eb61dd3371086e6d5a 2.4.3 148f631d881f4eb3ea49ef1dc0654bf0f49fd9d3 2.4.5 b0045ec6d62c346f7ff7c0679e687b54fa50b67b 2.4.6 78ff1f6a0c0a850da5510dd73b20a24479a1a1dd 2.4.7 +2d0eb2cba385ddfc0567f06e31527f069150572c 2.4.8 From 03bd45682440c4533ab419ff50c8d1c1b32564c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 22 Jul 2013 11:41:44 +0200 Subject: [PATCH 73/85] Increase version number --- trytond/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/version.py b/trytond/version.py index 5178fbb408..de6f5fd557 100644 --- a/trytond/version.py +++ b/trytond/version.py @@ -1,6 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.4.8" +VERSION = "2.4.9" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/" From 7fdbd358b90fb224ae8507efc2a144c14b2f90e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 29 Jul 2013 10:32:45 +0200 Subject: [PATCH 74/85] Fix missing microseconds initialisation review1000002 (transplanted from 898b5745851610dd4ccd33fdc98a06c393669fc5) --- trytond/ir/trigger.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/trytond/ir/trigger.py b/trytond/ir/trigger.py index 51cab6ab19..784ab4f09b 100644 --- a/trytond/ir/trigger.py +++ b/trytond/ir/trigger.py @@ -206,6 +206,8 @@ class Trigger(ModelSQL, ModelView): timepart_full[0].split(":")) if len(timepart_full) == 2: microseconds = int(timepart_full[1]) + else: + microseconds = 0 delay[record_id] = datetime.datetime(year, month, day, hours, minutes, seconds, microseconds) if (datetime.datetime.now() - delay[record_id] From 5674a142e6cb8b3d1bb0f09862a05386363d216d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 1 Aug 2013 16:09:41 +0200 Subject: [PATCH 75/85] Remove validation of unused XML attributes Those XML attributes are no more allowed in XML. The domain is not only allowed in dashboard and it is not a field domain. issue3310 review986002 (transplanted from 4eba4934492ab6731626837e5bab3fb19f4cf053) --- trytond/ir/ui/view.py | 7 +------ trytond/model/modelview.py | 3 +-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/trytond/ir/ui/view.py b/trytond/ir/ui/view.py index 2838f77381..df9c2f0cad 100644 --- a/trytond/ir/ui/view.py +++ b/trytond/ir/ui/view.py @@ -105,15 +105,10 @@ class View(ModelSQL, ModelView): # validate pyson attributes validates = { 'states': fields.states_validate, - 'domain': fields.domain_validate, - 'context': fields.context_validate, - 'digits': fields.digits_validate, - 'add_remove': fields.add_remove_validate, } def encode(element): - for attr in ('states', 'domain', 'context', 'digits', - 'add_remove', 'spell', 'colors'): + for attr in ('states', 'domain', 'spell', 'colors'): if element.get(attr): try: value = safe_eval(element.get(attr), CONTEXT) diff --git a/trytond/model/modelview.py b/trytond/model/modelview.py index 557ffe8ec7..5b8f2eefaa 100644 --- a/trytond/model/modelview.py +++ b/trytond/model/modelview.py @@ -456,8 +456,7 @@ class ModelView(Model): # convert attributes into pyson encoder = PYSONEncoder() - for attr in ('states', 'domain', 'context', 'digits', 'add_remove', - 'spell', 'colors'): + for attr in ('states', 'domain', 'spell', 'colors'): if element.get(attr): element.set(attr, encoder.encode(safe_eval(element.get(attr), CONTEXT))) From 249aa0a5d82151ba9871aab4e8ff6d3d719d0369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 14 Aug 2013 11:31:39 +0200 Subject: [PATCH 76/85] Fix MySQL drop index query "ON" is required for MySQL (transplanted from 0204193c8ed628dbc48dec8d4ec001f66a00f1f8) --- trytond/backend/mysql/table.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/trytond/backend/mysql/table.py b/trytond/backend/mysql/table.py index a579ac6871..7978cc0821 100644 --- a/trytond/backend/mysql/table.py +++ b/trytond/backend/mysql/table.py @@ -272,7 +272,8 @@ class TableHandler(TableHandlerInterface): return if index_name in self._indexes: - self.cursor.execute('DROP INDEX `%s` ' % (index_name,)) + self.cursor.execute('DROP INDEX `%s` ON `%s`' + % (index_name, self.table_name)) self._update_definitions() else: raise Exception('Index action not supported!') From cbae23ec8d30858ccca1571d625e988b12217d6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 1 Oct 2013 21:44:06 +0200 Subject: [PATCH 77/85] Prepare release 2.4.9 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 232995659a..b4f153c69b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.4.9 - 2013-10-01 +* Bug fixes (see mercurial logs for details) + Version 2.4.8 - 2013-07-22 * Bug fixes (see mercurial logs for details) From c3c9c8060b305213777d6c3d4e7984fbaf06dcc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 1 Oct 2013 21:44:07 +0200 Subject: [PATCH 78/85] Added tag 2.4.9 for changeset 1470584d3b20 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 4100d42c80..3b0f74871b 100644 --- a/.hgtags +++ b/.hgtags @@ -14,3 +14,4 @@ df0fe07b4e7412cfbe4320eb61dd3371086e6d5a 2.4.3 b0045ec6d62c346f7ff7c0679e687b54fa50b67b 2.4.6 78ff1f6a0c0a850da5510dd73b20a24479a1a1dd 2.4.7 2d0eb2cba385ddfc0567f06e31527f069150572c 2.4.8 +1470584d3b20dec2ea702782fb80516da21fc504 2.4.9 From 5f6e91deef9ae67dad211b39c56a33b00dc6fe53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 1 Oct 2013 21:44:32 +0200 Subject: [PATCH 79/85] Increase version number --- trytond/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/version.py b/trytond/version.py index de6f5fd557..55717e05c9 100644 --- a/trytond/version.py +++ b/trytond/version.py @@ -1,6 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.4.9" +VERSION = "2.4.10" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/" From 07e6c30025fa80bbffd99f2f395d273336e8a779 Mon Sep 17 00:00:00 2001 From: Albert Cervera i Areny Date: Sat, 21 Sep 2013 00:34:15 +0200 Subject: [PATCH 80/85] Fix test for None error_args. issue3338 review1029002 (transplanted from 073147d17dc49d250f617025eb251951f214f7d0) --- trytond/error.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/error.py b/trytond/error.py index 16b4efd5a5..4d3d161d01 100644 --- a/trytond/error.py +++ b/trytond/error.py @@ -37,7 +37,7 @@ class WarningErrorMixin(object): if res: error = res - if error_args: + if error_args is not None: try: error = error % error_args except TypeError: From 18af8f66fab0a722de2750f8b4956be090f0cc38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 14 Oct 2013 21:08:06 +0200 Subject: [PATCH 81/85] Fix rec_name search when domain value is a string review1125003 --- trytond/model/modelsql.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index 36c560bfdf..c9ef531377 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -1452,9 +1452,9 @@ class ModelSQL(ModelStorage): if isinstance(domain[i][2], basestring): # get the ids of the records of the "distant" resource - ids2 = [x[0] for x in field_obj.search([ - ('rec_name', domain[i][1], domain[i][2]), - ], order=[])] + ids2 = field_obj.search([ + ('rec_name', domain[i][1], domain[i][2]), + ], order=[]) else: ids2 = domain[i][2] @@ -1509,9 +1509,9 @@ class ModelSQL(ModelStorage): target_obj = field.get_target() if domain[i][1] in ('child_of', 'not child_of'): if isinstance(domain[i][2], basestring): - ids2 = [x[0] for x in target_obj.search([ - ('rec_name', 'ilike', domain[i][2]), - ], order=[])] + ids2 = target_obj.search([ + ('rec_name', 'ilike', domain[i][2]), + ], order=[]) elif not isinstance(domain[i][2], list): ids2 = [domain[i][2]] else: From a546958c2d5b4d19f567605dcefa4820f11cc103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 5 Oct 2013 16:16:02 +0200 Subject: [PATCH 82/85] Fix domain concatenation between list and tuple issue3395 (transplanted from a8f3e29c5dbdf89b2f2f0a845e14e8663bd3a6af) --- trytond/ir/lang.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trytond/ir/lang.py b/trytond/ir/lang.py index bf2acf5c8e..48ba6a6389 100644 --- a/trytond/ir/lang.py +++ b/trytond/ir/lang.py @@ -55,9 +55,9 @@ class Lang(ModelSQL, ModelView, Cacheable): }) def search_rec_name(self, name, clause): - ids = self.search([('code',) + clause[1:]], order=[]) + ids = self.search([('code',) + tuple(clause[1:])], order=[]) if ids: - ids += self.search([('name',) + clause[1:]], order=[]) + ids += self.search([('name',) + tuple(clause[1:])], order=[]) return [('id', 'in', ids)] return [('name',) + tuple(clause[1:])] From ba03df070363680d35566a05beed43c2f6cd6274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 4 Dec 2013 18:00:30 +0100 Subject: [PATCH 83/85] Prepare release 2.4.10 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index b4f153c69b..128195fd17 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 2.4.10 - 2013-12-04 +* Bug fixes (see mercurial logs for details) + Version 2.4.9 - 2013-10-01 * Bug fixes (see mercurial logs for details) From 426bc509c80e654abfb78852aa33eab63ac1731c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 4 Dec 2013 18:00:31 +0100 Subject: [PATCH 84/85] Added tag 2.4.10 for changeset 85fa2087d309 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 3b0f74871b..a62d5b338d 100644 --- a/.hgtags +++ b/.hgtags @@ -15,3 +15,4 @@ b0045ec6d62c346f7ff7c0679e687b54fa50b67b 2.4.6 78ff1f6a0c0a850da5510dd73b20a24479a1a1dd 2.4.7 2d0eb2cba385ddfc0567f06e31527f069150572c 2.4.8 1470584d3b20dec2ea702782fb80516da21fc504 2.4.9 +85fa2087d309857091cb299bf34a01c3c9a1e667 2.4.10 From 7ded7963b537c6826aa8a14084f2bc6194b77ca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 4 Dec 2013 18:02:42 +0100 Subject: [PATCH 85/85] Increase version number --- trytond/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trytond/version.py b/trytond/version.py index 55717e05c9..02c7277b4b 100644 --- a/trytond/version.py +++ b/trytond/version.py @@ -1,6 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of #this repository contains the full copyright notices and license terms. PACKAGE = "trytond" -VERSION = "2.4.10" +VERSION = "2.4.11" LICENSE = "GPL-3" WEBSITE = "http://www.tryton.org/"