[MIG] printer_zpl2: Migration to 12.0

This commit is contained in:
Florent de Labarre
2019-03-20 14:24:37 +01:00
committed by Lois Rilo
parent a862116674
commit 3ef9604675
11 changed files with 52 additions and 24 deletions

View File

@@ -28,9 +28,7 @@ To configure this module, you need to:
#. Use the Test Mode tab during the creation
It's also possible to add a label printing wizard on any model by creating a new *ir.actions.act_window* record.
For example, to add the printing wizard on the *product.product* model :
.. code-block:: xml
For example, to add the printing wizard on the *product.product* model ::
<act_window id="action_wizard_purchase"
name="Print Label"
@@ -45,9 +43,8 @@ Usage
To print a label, you need to call use the label printing method from anywhere (other modules, server actions, etc.).
.. code-block:: python
Example : Print the label of a product ::
# Example : Print the label of a product
self.env['printing.label.zpl2'].browse(label_id).print_label(
self.env['printing.printer'].browse(printer_id),
self.env['product.product'].browse(product_id))
@@ -56,7 +53,7 @@ You can also use the generic label printing wizard, if added on some models.
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/144/11.0
:target: https://runbot.odoo-community.org/runbot/144/12.0
Known issues / Roadmap
======================

View File

@@ -1,4 +1,4 @@
# Copyright (C) 2016 SYLEAM (<http://www.syleam.fr>)
# Copyright (C) 2016 SUBTENO-IT (<https://subteno-it.fr>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models

View File

@@ -1,11 +1,12 @@
# Copyright (C) 2016 SYLEAM (<http://www.syleam.fr>)
# Copyright (C) 2016 SUBTENO-IT (<https://subteno-it.fr>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
'name': 'Printer ZPL II',
'version': '11.0.1.0.0',
'version': '12.0.1.0.0',
'category': 'Printer',
'author': 'SYLEAM, Apertoso NV, Odoo Community Association (OCA)',
'author': 'SUBTENO-IT, FLorent de Labarre, '
'Apertoso NV, Odoo Community Association (OCA)',
'website': 'http://www.syleam.fr/',
'license': 'AGPL-3',
'external_dependencies': {

View File

@@ -42,7 +42,7 @@ class PrintingLabelZpl2(models.Model):
component_ids = fields.One2many(
comodel_name='printing.label.zpl2.component', inverse_name='label_id',
string='Label Components',
help='Components which will be printed on the label.')
help='Components which will be printed on the label.', copy=True)
restore_saved_config = fields.Boolean(
string="Restore printer's configuration",
help="Restore printer's saved configuration and end of each label ",
@@ -85,6 +85,9 @@ class PrintingLabelZpl2(models.Model):
})
data = safe_eval(component.data, eval_args) or ''
if data == 'component_not_show':
continue
# Generate a list of elements if the component is repeatable
for idx in range(
component.repeat_offset,
@@ -151,9 +154,14 @@ class PrintingLabelZpl2(models.Model):
component.diagonal_orientation,
})
elif component.component_type == 'graphic':
image = component.graphic_image or data
pil_image = Image.open(io.BytesIO(
base64.b64decode(image))).convert('RGB')
# During the on_change don't take the bin_size
image = component.with_context(bin_size_graphic_image=False)\
.graphic_image or data
try:
pil_image = Image.open(io.BytesIO(
base64.b64decode(image))).convert('RGB')
except Exception:
continue
if component.width and component.height:
pil_image = pil_image.resize(
(component.width, component.height))
@@ -292,7 +300,7 @@ class PrintingLabelZpl2(models.Model):
record = Obj.search([('id', '=', self.record_id)], limit=1)
if not record:
record = Obj.search([], limit=1, order='id desc')
self.record_id = record.id
self.record_id = record.id
return record

View File

@@ -16,8 +16,10 @@ DEFAULT_PYTHON_CODE = """# Python One-Liners
# - page_number: Current Page
# - page_count: Total Page
# - time, datetime: Python libraries
# - return 'component_not_show' to don't show this component
# Exemple : object.name
""
"""

View File

@@ -1,4 +1,4 @@
# Copyright (C) 2018 Florent Mirieu (<https://github.com/fmdl>)
# Copyright (C) 2018 Florent de Labarre (<https://github.com/fmdl>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo.tests.common import TransactionCase

View File

@@ -1116,3 +1116,22 @@ class TestPrintingLabelZpl2(TransactionCase):
'^FO50,50^GB100,100,100^FS\n'
'^JUR\n'
'^XZ')
def test_zpl2_component_not_show(self):
""" Check to don't show no things """
label = self.new_label()
data = 'component_not_show'
self.new_component({
'label_id': label.id,
'component_type': 'zpl2_raw',
'data': '"' + data + '"',
})
contents = label._generate_zpl2_data(self.printer).decode("utf-8")
self.assertEqual(
contents,
'^XA\n'
'^PW480\n'
'^CI28\n'
'^LH10,10\n'
'^JUR\n'
'^XZ')

View File

@@ -1,4 +1,4 @@
# Copyright (C) 2018 Florent Mirieu (<https://github.com/fmdl>)
# Copyright (C) 2018 Florent de Labarre (<https://github.com/fmdl>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import mock

View File

@@ -1,4 +1,4 @@
# Copyright (C) 2018 Florent Mirieu (<https://github.com/fmdl>)
# Copyright (C) 2018 Florent de Labarre (<https://github.com/fmdl>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo.tests.common import TransactionCase

View File

@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<!--
Copyright 2016 SYLEAM
Copyright 2016 SUBTENO-IT
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-->
<odoo>

View File

@@ -1,4 +1,4 @@
# Copyright (C) 2018 Florent Mirieu (<https://github.com/fmdl>)
# Copyright (C) 2018 Florent de Labarre (<https://github.com/fmdl>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import logging
@@ -376,13 +376,12 @@ class WizardImportZPl2(models.TransientModel):
return 0
def import_zpl2(self):
self.ensure_one()
Zpl2Component = self.env['printing.label.zpl2.component']
if self.delete_component:
self.mapped('label_id.component_ids').unlink()
Model = self.env['printing.label.zpl2.component']
self.model_fields = Model.fields_get()
sequence = self._start_sequence()
default = {}
@@ -423,10 +422,12 @@ class WizardImportZPl2(models.TransientModel):
vals['orientation'] = 'N'
# Field
Zpl2Component = self.env['printing.label.zpl2.component']
model_fields = Zpl2Component.fields_get()
component = {}
for field, value in vals.items():
if field in self.model_fields.keys():
field_type = self.model_fields[field].get('type', False)
if field in model_fields.keys():
field_type = model_fields[field].get('type', False)
if field_type == 'boolean':
if not value or value == zpl2.BOOL_NO:
value = False