Ir al contenido
Odoo Menú
  • Identificarse
  • Pruébalo gratis
  • Aplicaciones
    Finanzas
    • Contabilidad
    • Facturación
    • Gastos
    • Hoja de cálculo (BI)
    • Documentos
    • Firma electrónica
    Ventas
    • CRM
    • Ventas
    • TPV para tiendas
    • TPV para restaurantes
    • Suscripciones
    • Alquiler
    Sitios web
    • Creador de sitios web
    • Comercio electrónico
    • Blog
    • Foro
    • Chat en directo
    • e-learning
    Cadena de suministro
    • Inventario
    • Fabricación
    • PLM
    • Compra
    • Mantenimiento
    • Calidad
    Recursos Humanos
    • Empleados
    • Reclutamiento
    • Ausencias
    • Evaluación
    • Referencias
    • Flota
    Marketing
    • Marketing social
    • Marketing por correo electrónico
    • Marketing por SMS
    • Eventos
    • Automatización de marketing
    • Encuestas
    Servicios
    • Proyecto
    • Partes de horas
    • Servicio de campo
    • Servicio de asistencia
    • Planificación
    • Citas
    Productividad
    • Conversaciones
    • Aprobaciones
    • IoT
    • VoIP
    • Conocimientos
    • WhatsApp
    Aplicaciones de terceros Studio de Odoo Plataforma de Odoo Cloud
  • Industrias
    Comercio al por menor
    • Librería
    • Tienda de ropa
    • Tienda de muebles
    • Tienda de ultramarinos
    • Ferretería
    • Juguetería
    Alimentación y hostelería
    • Bar y pub
    • Restaurante
    • Comida rápida
    • Casa de huéspedes
    • Distribuidor de bebidas
    • Hotel
    Inmueble
    • Agencia inmobiliaria
    • Estudio de arquitectura
    • Construcción
    • Gestión inmobiliaria
    • Jardinería
    • Asociación de propietarios
    Consultoría
    • Empresa contable
    • Partner de Odoo
    • Agencia de marketing
    • Bufete de abogados
    • Adquisición de talentos
    • Auditorías y certificaciones
    Fabricación
    • Textil
    • Metal
    • Muebles
    • Alimentos
    • Cervecería
    • Regalos de empresas
    Salud y bienestar
    • Club deportivo
    • Óptica
    • Gimnasio
    • Terapeutas
    • Farmacia
    • Peluquería
    Oficios
    • Handyman
    • Hardware y soporte técnico
    • Sistemas de energía solar
    • Zapatero
    • Servicios de limpieza
    • Servicios de calefacción, ventilación y aire acondicionado
    Otros
    • Organización sin ánimo de lucro
    • Agencia de protección del medio ambiente
    • Alquiler de paneles publicitarios
    • Estudio fotográfico
    • Alquiler de bicicletas
    • Distribuidor de software
    Explorar todos los sectores
  • Comunidad
    Aprender
    • Tutoriales
    • Documentación
    • Certificaciones
    • Formación
    • Blog
    • Podcast
    Potenciar la educación
    • Programa de formación
    • Scale Up! El juego empresarial
    • Visita Odoo
    Obtener el software
    • Descargar
    • Comparar ediciones
    • Versiones
    Colaborar
    • GitHub
    • Foro
    • Eventos
    • Traducciones
    • Convertirse en partner
    • Servicios para partners
    • Registrar tu empresa contable
    Obtener servicios
    • Encontrar un partner
    • Encontrar un asesor fiscal
    • Contacta con un experto
    • Servicios de implementación
    • Referencias de clientes
    • Ayuda
    • Actualizaciones
    GitHub YouTube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Solicitar una demostración
  • Precios
  • Ayuda

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Contabilidad
  • Inventario
  • PoS
  • Proyecto
  • MRP
All apps
Debe estar registrado para interactuar con la comunidad.
Todas las publicaciones Personas Insignias
Etiquetas (Ver todo)
odoo accounting v14 pos v15
Acerca de este foro
Debe estar registrado para interactuar con la comunidad.
Todas las publicaciones Personas Insignias
Etiquetas (Ver todo)
odoo accounting v14 pos v15
Acerca de este foro
Ayuda

How to avoid unicode transformation of my data passed to a report parser?

Suscribirse

Reciba una notificación cuando haya actividad en esta publicación

Se marcó esta pregunta
dateqwebformatunicode
2 Respuestas
6814 Vistas
Avatar
Pascal Tremblay

Hello all,


I send many date fields to a report with this line in my wizard class :

data['form'] = self.read(cr, uid, ids, ['journal_id', 'date_to', 'date_from','date_deposit'], context=context)[0]


In the log, I see that for this data variable. The dates seem to be in a date format/type :

{'form': {'date_deposit': '2016-02-17', 'date_from': '2016-02-01 00:00:00', 'date_to': '2016-02-15 00:00:00', 'id': 39, 'journal_id': (18, u"Journal Caisse Populaire Desjardins d'Alma - CF (CAD)")}}


When these datas arrive in the report paser, in my render_html method, they are like this. I would say that all data is now in a unicode format :

data : {u'form': {u'journal_id': [18, u"Journal Caisse Populaire Desjardins d'Alma - CF (CAD)"], u'date_from': u'2016-02-01 00:00:00', u'date_to': u'2016-02-15 00:00:00', u'id': 39, u'date_deposit': u'2016-02-17'}}


So, in my qweb report, I can not format my date with my usual line :

 <p t-esc="data.get('date_from')" t-field-options='{"format": "d MMMM y"}'/>


I rather have to format my dates with :

<p t-esc="time.strftime('%d %B %Y',time.strptime(data.get('date_from'),'%Y-%m-%d %H:%M:%S'))"/>


My question :

How could I avoid this unicode transformation of my data variable? My date are not in a date type anymore...



UPDATE #1

I have verified data inthe get_action method. Datas are still ok. No trace of unicode.

    @api.v7
    def get_action(self, cr, uid, ids, report_name, data=None, context=None):
        _logger.error("datawwwww :: %s", str(data))



UPDATE #2

According to the tip of Axel Mendoza, I have tried to convert unicode dates to date format. But, it is still not enough to get the right format in my qweb report with

 <p t-esc="data.get('date_from')" t-field-options='{"format": "d MMMM y"}'/>

I still get this in my qweb pdf :

2016-02-01

I have tried this code in me render_html method :

def render_html(self, data=None):
        date_from_buf = datetime.strptime(data['form'].get('date_from'), "%Y-%m-%d %H:%M:%S")
        date_from = date.strftime(date_from_buf, "%Y-%m-%d" )



Here is the log of my docargs. the date_from seems to be right there:

docargs : {'docs': wizard.create.deposit(53,), 'doc_model': u'wizard.create.deposit', 'date_from': '2016-02-01', 'lines': <bound method report.sale_lapagept.report_qweb_create_deposit_cf.lines of report.sale_lapagept.report_qweb_create_deposit_cf()>, 'date_to': datetime.datetime(2016, 2, 15, 20, 32, 58), 'doc_ids': [], 'data': {u'journal_id': [18, u"Journal Caisse Populaire Desjardins d'Alma - CF (CAD)"], u'date_from': u'2016-02-01 20:32:55', u'date_to': u'2016-02-15 20:32:58', u'id': 53, u'date_deposit': u'2016-02-19'}}


UPDATE #3

With this code :

@api.multi

def render_html(self, data=None): 

     date_from = datetime.strptime(data['form'].get('date_from'), "%Y-%m-%d %H:%M:%S")



I get this log :

docargs : {'docs': wizard.create.deposit(54,), 'doc_model': u'wizard.create.deposit', 'date_from': datetime.datetime(2016, 2, 1, 20, 32, 55), 'lines': <bound method report.sale_lapagept.report_qweb_create_deposit_cf.lines of report.sale_lapagept.report_qweb_create_deposit_cf()>, 'date_to': datetime.datetime(2016, 2, 15, 20, 32, 58), 'doc_ids': [], 'data': {u'journal_id': [18, u"Journal Caisse Populaire Desjardins d'Alma - CF (CAD)"], u'date_from': u'2016-02-01 20:32:55', u'date_to': u'2016-02-15 20:32:58', u'id': 54, u'date_deposit': u'2016-02-19'}}



In the qweb template, I have this code :

    <p t-esc="data.get('date_from')" />

    <p t-esc="o.date_from" t-field-options='{"format": "d MMMM y"}'/>

    <p t-esc="date_from" t-field-options='{"format": "d MMMM y"}'/>

    <p t-esc="data.get('date_from')" t-field-options='{"format": "d MMMM y"}'/>

    <p t-esc="time.strftime('%d %B %Y',time.strptime(data.get('date_from'),'%Y-%m-%d %H:%M:%S'))"/>


And I still get the wrong result with {"format": "d MMMM y"}

2016-02-01 20:32:55

2016-02-01 20:32:55

2016-02-01 20:32:55

2016-02-01 20:32:55

01 février 2016


I will become crazy!


0
Avatar
Descartar
Axel Mendoza

So then my other answer works nice!!

Avatar
Axel Mendoza
Mejor respuesta

In the get_action method the data are not serialized yet, so it's not converted to unicode. The values that you pass using the data are values unrelated to any kind of python data type, normally those values are serialize those values in strings, int and float numbers to be sent it to the browser to be processed by the view action manager to determine what need to be done with the action dict and call the server controller action for the respective type of action, that's when the strings are converted to unicode. So if you wanna the value of the date_from as a datetime value type, you should convert it in the render_html method of your parser before pass it to the render of the report template and the same with all the values that you need to convert it before the report is rendered.

#Update 1

The thing is that the format pattern in t-field-options in qweb is not evaluated using datetime.strftime, it's using babel.dates.format_date function so you need to check on that library method for allowed patterns

or

you could format it by yourself using datetime.strftime before put it on the docargs data

1
Avatar
Descartar
Pascal Tremblay
Autor

I have tried to convert unicode to date format... see UPDATE #2.

Axel Mendoza

You are just doing an extra last step trying to convert the datetime value to string again, just put as a datetime value for the docargs data, t-field-options format operates over datetime values not over strings.

Pascal Tremblay
Autor

May be docargs are still transformed in string by the render() method called at the end of my render_html() method. I will check this tomorrow

Axel Mendoza

see my ·Update 1

Pascal Tremblay
Autor

thanks for your patience.

¿Le interesa esta conversación? ¡Participe en ella!

Cree una cuenta para poder utilizar funciones exclusivas e interactuar con la comunidad.

Inscribirse
Publicaciones relacionadas Respuestas Vistas Actividad
how can we change date view format from dd/mm/yyyy to mm/dd/yyyy Resuelto
date format
Avatar
Avatar
Avatar
Avatar
4
oct 25
80795
QWeb report : calculate number of days late for task deadlines
date qweb
Avatar
Avatar
Avatar
2
oct 21
8575
How to format data['form']['date_start'] to get the month name in letters? Resuelto
date qweb format month letters
Avatar
1
jul 21
10840
Formatting dates in Qweb report: account.report_overdue_document Resuelto
date qweb format report datetime
Avatar
Avatar
Avatar
Avatar
Avatar
7
dic 23
23577
How could I format the printing date of a qweb report in the customer language?
language date qweb format today
Avatar
0
ago 16
6618
Comunidad
  • Tutoriales
  • Documentación
  • Foro
Código abierto
  • Descargar
  • GitHub
  • Runbot
  • Traducciones
Servicios
  • Alojamiento Odoo.sh
  • Ayuda
  • Actualizar
  • Desarrollos personalizados
  • Educación
  • Encontrar un asesor fiscal
  • Encontrar un partner
  • Convertirse en partner
Sobre nosotros
  • Nuestra empresa
  • Activos de marca
  • Contacta con nosotros
  • Puestos de trabajo
  • Eventos
  • Podcast
  • Blog
  • Clientes
  • Información legal • Privacidad
  • Seguridad
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo es un conjunto de aplicaciones de código abierto que cubren todas las necesidades de tu empresa: CRM, comercio electrónico, contabilidad, inventario, punto de venta, gestión de proyectos, etc.

La propuesta única de valor de Odoo es ser muy fácil de usar y totalmente integrado.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now