diff --git a/__unported__/printer_tray/ir_report.py b/__unported__/printer_tray/ir_report.py
deleted file mode 100644
index 6181053..0000000
--- a/__unported__/printer_tray/ir_report.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Yannick Vaucher
-# Copyright 2013 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-from openerp.osv import orm, fields
-
-
-class ReportXML(orm.Model):
-
- _inherit = 'ir.actions.report.xml'
-
- _columns = {
- 'printer_tray_id': fields.many2one(
- 'printing.tray', 'Paper Source',
- domain="[('printer_id', '=', printing_printer_id)]"),
- }
-
- def set_print_options(self, cr, uid, report_id, format, context=None):
- """
- Hook to define Tray
- """
- printing_act_obj = self.pool.get('printing.report.xml.action')
- options = super(ReportXML, self).set_print_options(cr, uid, report_id, format, context=context)
-
- # Retrieve user default values
- user = self.pool.get('res.users').browse(cr, uid, context)
- tray = user.printer_tray_id
- report = self.browse(cr, uid, report_id, context=context)
-
- # Retrieve report default values
- if report.printer_tray_id:
- tray = report.printer_tray_id
-
- # Retrieve report-user specific values
- act_ids = printing_act_obj.search(
- cr, uid,
- [('report_id', '=', report.id),
- ('user_id', '=', uid),
- ('action', '!=', 'user_default')], context=context)
- if act_ids:
- user_action = printing_act_obj.browse(cr, uid, act_ids[0], context=context)
- if user_action.tray_id:
- tray = user_action.tray_id
-
- if tray:
- options['InputSlot'] = str(tray.system_name)
- return options
diff --git a/__unported__/printer_tray/printer.py b/__unported__/printer_tray/printer.py
deleted file mode 100644
index 9c18f64..0000000
--- a/__unported__/printer_tray/printer.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# Author: Yannick Vaucher
-# Copyright 2013 Camptocamp SA
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-import cups
-from cups import PPD
-
-from openerp import pooler
-from openerp.osv import orm, fields
-
-
-class Printer(orm.Model):
-
- _inherit = 'printing.printer'
-
- _columns = {
- 'tray_ids': fields.one2many('printing.tray', 'printer_id', 'Paper Sources'),
- }
-
- def _update_tray_option(self, db_name, uid, printer, context=None):
- """
- Create missing tray for a printer
- """
- db, pool = pooler.get_db_and_pool(db_name)
- cr = db.cursor()
- tray_obj = pool.get('printing.tray')
- # get printers options from a PPD file
- try:
- connection = cups.Connection()
- ppd_file_path = connection.getPPD3(printer.system_name)
- except:
- return
- if not ppd_file_path[2]:
- return
- ppd = PPD(ppd_file_path[2])
- option = ppd.findOption('InputSlot')
- if not option:
- return
- try:
- for tray_opt in option.choices:
- if tray_opt['choice'] not in [t.system_name for t in printer.tray_ids]:
- tray_vals = {
- 'name': tray_opt['text'],
- 'system_name': tray_opt['choice'],
- 'printer_id': printer.id,
- }
-
- tray_obj.create(cr, uid, tray_vals, context=context)
- cr.commit()
- except:
- cr.rollback()
- raise
- finally:
- cr.close()
- return True
-
- def update_printers_status(self, db_name, uid, context=None):
- """
- Add creation of tray if no tray are defined
- """
- db, pool = pooler.get_db_and_pool(db_name)
- cr = db.cursor()
- res = super(Printer, self).update_printers_status(db_name, uid, context=context)
- try:
- connection = cups.Connection()
- printers = connection.getPrinters()
- server_error = False
- except:
- server_error = True
-
- printer_ids = self.search(cr, uid, [('system_name', 'in', printers.keys())], context=context)
- if server_error:
- vals = {'status': 'server_error'}
- self.write(cr, uid, printer_ids, vals, context=context)
- return res
-
- printer_list = self.browse(cr, uid, printer_ids, context=context)
-
- for printer in printer_list:
- # XXX we consider config of printer won't change
- if not printer.tray_ids:
- self._update_tray_option(db_name, uid, printer, context=context)
- return res
diff --git a/printer_tray/README.rst b/printer_tray/README.rst
new file mode 100644
index 0000000..68e369d
--- /dev/null
+++ b/printer_tray/README.rst
@@ -0,0 +1,67 @@
+Report to printer - Paper tray selection
+========================================
+
+Extends the module **Report to printer** (``base_report_to_printer``)
+to add the printers trays.
+
+It detects trays on printers installation plus permits to select the
+paper source on which you want to print directly.
+
+You will find this option on default user config, on default report
+config and on specific config per user per report.
+
+This allows you to dedicate a specific paper source for example for
+preprinted paper such as payment slip.
+
+Installation
+============
+
+Considering that you already use the module **Report to printer**, you
+just have to install this extension.
+
+Configuration
+=============
+
+To configure this module, you need to:
+
+ * Update the CUPS printers in *Settings > Printing > Update Printers
+ from CUPS*
+ * If you want to print a report on a specific tray, you can change
+ their "Paper Source" in *Settings > Printing > Reports*
+ * If you want to print a report on a specific tray for a user, you can
+ change their "Paper Source" in *Settings > Printing > Reports* in
+ *Specific actions per user*
+ * Users may also select a default tray in their preferences
+
+Usage
+=====
+
+There is no special usage, once configured, reports are printed in the
+select tray. When no tray is configured for a report and a user, the
+default tray setup on the CUPS server is used.
+
+Known issues / Roadmap
+======================
+
+
+Credits
+=======
+
+Contributors
+------------
+
+* Yannick Vaucher
+* Guewen Baconnier
+
+Maintainer
+----------
+
+.. image:: http://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: http://odoo-community.org
+
+This module is maintained by the OCA.
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.
+
+To contribute to this module, please visit http://odoo-community.org.
diff --git a/__unported__/printer_tray/__init__.py b/printer_tray/__init__.py
similarity index 96%
rename from __unported__/printer_tray/__init__.py
rename to printer_tray/__init__.py
index db2e915..1d70414 100644
--- a/__unported__/printer_tray/__init__.py
+++ b/printer_tray/__init__.py
@@ -22,3 +22,4 @@ from . import ir_report
from . import printer_tray
from . import printer
from . import users
+from . import report_xml_action
diff --git a/__unported__/printer_tray/__openerp__.py b/printer_tray/__openerp__.py
similarity index 66%
rename from __unported__/printer_tray/__openerp__.py
rename to printer_tray/__openerp__.py
index 0544c8c..e73a2b6 100644
--- a/__unported__/printer_tray/__openerp__.py
+++ b/printer_tray/__openerp__.py
@@ -21,35 +21,20 @@
{'name': 'Report to printer - Paper tray selection',
'version': '1.0',
'category': 'Printer',
- 'description': """
-Report to printer - Paper tray selection
-========================================
-
- **Author:** Camptocamp SA
-
- *This module extends `Report to printer` module.*
-
- It detects trays on printer installation plus permits to select
- the paper source on which you want to print directly.
-
- You will find this option on default user config, on default report config
- and on specific config per user per report.
-
- This allows you to dedicate a specific paper source for exemple for prepinted
- paper such as payment slip.
- """,
'author': 'Camptocamp',
'maintainer': 'Camptocamp',
'website': 'http://www.camptocamp.com/',
- 'depends': ['base_report_assembler',
- 'base_report_to_printer',
+ 'depends': ['base_report_to_printer',
],
'data': [
'users_view.xml',
'ir_report_view.xml',
+ 'printer_view.xml',
+ 'report_xml_action_view.xml',
+ 'security/ir.model.access.csv',
],
'test': [],
- 'installable': False,
+ 'installable': True,
'auto_install': False,
'application': True,
}
diff --git a/__unported__/printer_tray/i18n/fr.po b/printer_tray/i18n/fr.po
similarity index 71%
rename from __unported__/printer_tray/i18n/fr.po
rename to printer_tray/i18n/fr.po
index 649c87a..5e8881e 100644
--- a/__unported__/printer_tray/i18n/fr.po
+++ b/printer_tray/i18n/fr.po
@@ -1,6 +1,6 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
-# * printer_tray
+# * printer_tray
#
msgid ""
msgstr ""
@@ -10,15 +10,56 @@ msgstr ""
"PO-Revision-Date: 2014-01-31 16:48+0100\n"
"Last-Translator: Yannick Vaucher \n"
"Language-Team: \n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
#. module: printer_tray
-#: model:ir.model,name:printer_tray.model_printing_tray
-msgid "Printer Tray"
-msgstr "Bac d'impression"
+#: field:printing.tray,create_uid:0
+msgid "Created by"
+msgstr ""
+
+#. module: printer_tray
+#: field:printing.tray,create_date:0
+msgid "Created on"
+msgstr ""
+
+#. module: printer_tray
+#: field:res.users,printer_tray_id:0
+msgid "Default Printer Paper Source"
+msgstr "Source de papier par défaut"
+
+#. module: printer_tray
+#: field:printing.tray,id:0
+msgid "ID"
+msgstr ""
+
+#. module: printer_tray
+#: field:printing.tray,write_uid:0
+msgid "Last Updated by"
+msgstr ""
+
+#. module: printer_tray
+#: field:printing.tray,write_date:0
+msgid "Last Updated on"
+msgstr ""
+
+#. module: printer_tray
+#: field:printing.tray,name:0
+msgid "Name"
+msgstr "Nom"
+
+#. module: printer_tray
+#: field:ir.actions.report.xml,printer_tray_id:0
+msgid "Paper Source"
+msgstr "Source de papier"
+
+#. module: printer_tray
+#: field:printing.printer,tray_ids:0
+msgid "Paper Sources"
+msgstr "Sources de papier"
#. module: printer_tray
#: model:ir.model,name:printer_tray.model_printing_printer
@@ -27,37 +68,21 @@ msgid "Printer"
msgstr "Imprimante"
#. module: printer_tray
-#: field:res.users,printer_tray_id:0
-msgid "Default Printer Paper Source"
-msgstr "Source de papier par défaut"
-
-#. module: printer_tray
-#: field:printing.tray,name:0
-msgid "Name"
-msgstr "Nom"
+#: model:ir.model,name:printer_tray.model_printing_tray
+msgid "Printer Tray"
+msgstr "Bac d'impression"
#. module: printer_tray
#: field:printing.tray,system_name:0
-msgid "System Name"
+msgid "System name"
msgstr "Nom système"
#. module: printer_tray
-#: field:printing.printer,tray_ids:0
-msgid "Paper Sources"
-msgstr "Sources de papier"
+#: view:printing.printer:printer_tray.view_printing_printer_form
+msgid "Trays"
+msgstr "Bacs d'impression"
#. module: printer_tray
#: model:ir.model,name:printer_tray.model_res_users
msgid "Users"
msgstr "Utilisateur"
-
-#. module: printer_tray
-#: model:ir.model,name:printer_tray.model_ir_actions_report_xml
-msgid "ir.actions.report.xml"
-msgstr ""
-
-#. module: printer_tray
-#: field:ir.actions.report.xml,printer_tray_id:0
-msgid "Paper Source"
-msgstr "Source de papier"
-
diff --git a/__unported__/printer_tray/i18n/printer_tray.po b/printer_tray/i18n/printer_tray.po
similarity index 67%
rename from __unported__/printer_tray/i18n/printer_tray.po
rename to printer_tray/i18n/printer_tray.po
index f1cec9e..9832606 100644
--- a/__unported__/printer_tray/i18n/printer_tray.po
+++ b/printer_tray/i18n/printer_tray.po
@@ -1,23 +1,64 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
-# * printer_tray
+# * printer_tray
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-01-31 15:44+0000\n"
-"PO-Revision-Date: 2014-01-31 16:48+0100\n"
+"PO-Revision-Date: 2014-11-18 08:58+0000\n"
"Last-Translator: Yannick Vaucher \n"
"Language-Team: \n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
#. module: printer_tray
-#: model:ir.model,name:printer_tray.model_printing_tray
-msgid "Printer Tray"
+#: field:printing.tray,create_uid:0
+msgid "Created by"
+msgstr ""
+
+#. module: printer_tray
+#: field:printing.tray,create_date:0
+msgid "Created on"
+msgstr ""
+
+#. module: printer_tray
+#: field:res.users,printer_tray_id:0
+msgid "Default Printer Paper Source"
+msgstr ""
+
+#. module: printer_tray
+#: field:printing.tray,id:0
+msgid "ID"
+msgstr ""
+
+#. module: printer_tray
+#: field:printing.tray,write_uid:0
+msgid "Last Updated by"
+msgstr ""
+
+#. module: printer_tray
+#: field:printing.tray,write_date:0
+msgid "Last Updated on"
+msgstr ""
+
+#. module: printer_tray
+#: field:printing.tray,name:0
+msgid "Name"
+msgstr ""
+
+#. module: printer_tray
+#: field:ir.actions.report.xml,printer_tray_id:0
+msgid "Paper Source"
+msgstr ""
+
+#. module: printer_tray
+#: field:printing.printer,tray_ids:0
+msgid "Paper Sources"
msgstr ""
#. module: printer_tray
@@ -27,37 +68,21 @@ msgid "Printer"
msgstr ""
#. module: printer_tray
-#: field:res.users,printer_tray_id:0
-msgid "Default Printer Paper Source"
-msgstr ""
-
-#. module: printer_tray
-#: field:printing.tray,name:0
-msgid "Name"
+#: model:ir.model,name:printer_tray.model_printing_tray
+msgid "Printer Tray"
msgstr ""
#. module: printer_tray
#: field:printing.tray,system_name:0
-msgid "System Name"
+msgid "System name"
msgstr ""
#. module: printer_tray
-#: field:printing.printer,tray_ids:0
-msgid "Paper Sources"
+#: view:printing.printer:printer_tray.view_printing_printer_form
+msgid "Trays"
msgstr ""
#. module: printer_tray
#: model:ir.model,name:printer_tray.model_res_users
msgid "Users"
msgstr ""
-
-#. module: printer_tray
-#: model:ir.model,name:printer_tray.model_ir_actions_report_xml
-msgid "ir.actions.report.xml"
-msgstr ""
-
-#. module: printer_tray
-#: field:ir.actions.report.xml,printer_tray_id:0
-msgid "Paper Source"
-msgstr ""
-
diff --git a/printer_tray/ir_report.py b/printer_tray/ir_report.py
new file mode 100644
index 0000000..fb77593
--- /dev/null
+++ b/printer_tray/ir_report.py
@@ -0,0 +1,37 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Yannick Vaucher
+# Copyright 2013 Camptocamp SA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+from openerp import models, fields, api
+
+
+class IrActionsReportXml(models.Model):
+
+ _inherit = 'ir.actions.report.xml'
+
+ printer_tray_id = fields.Many2one(
+ comodel_name='printing.tray',
+ string='Paper Source',
+ domain="[('printer_id', '=', printing_printer_id)]",
+ )
+
+ @api.onchange('printing_printer_id')
+ def onchange_printing_printer_id(self):
+ """ Reset the tray when the printer is changed """
+ self.printer_tray_id = False
diff --git a/__unported__/printer_tray/ir_report_view.xml b/printer_tray/ir_report_view.xml
similarity index 100%
rename from __unported__/printer_tray/ir_report_view.xml
rename to printer_tray/ir_report_view.xml
diff --git a/printer_tray/printer.py b/printer_tray/printer.py
new file mode 100644
index 0000000..3030ea0
--- /dev/null
+++ b/printer_tray/printer.py
@@ -0,0 +1,100 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Author: Yannick Vaucher
+# Copyright 2013 Camptocamp SA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+import cups
+import errno
+import os
+
+from openerp import models, fields, api
+
+
+class Printer(models.Model):
+ _inherit = 'printing.printer'
+
+ tray_ids = fields.One2many(comodel_name='printing.tray',
+ inverse_name='printer_id',
+ string='Paper Sources')
+
+ @api.multi
+ def _prepare_update_from_cups(self, cups_connection, cups_printer):
+ vals = super(Printer, self)._prepare_update_from_cups(cups_connection,
+ cups_printer)
+
+ ppd_info = cups_connection.getPPD3(self.system_name)
+ ppd_path = ppd_info[2]
+ if not ppd_path:
+ return vals
+
+ ppd = cups.PPD(ppd_path)
+ option = ppd.findOption('InputSlot')
+ try:
+ os.unlink(ppd_path)
+ except OSError as err:
+ if err.errno == errno.ENOENT:
+ pass
+ raise
+ if not option:
+ return vals
+
+ vals_trays = []
+
+ tray_names = set(tray.system_name for tray in self.tray_ids)
+ for tray_option in option.choices:
+ if tray_option['choice'] not in tray_names:
+ tray_vals = {
+ 'name': tray_option['text'],
+ 'system_name': tray_option['choice'],
+ }
+ vals_trays.append((0, 0, tray_vals))
+
+ cups_trays = set(tray_option['choice'] for tray_option
+ in option.choices)
+ for tray in self.tray_ids:
+ if tray.system_name not in cups_trays:
+ vals_trays.append((2, tray.id))
+
+ vals['tray_ids'] = vals_trays
+ return vals
+
+ @api.multi
+ def print_options(self, report, format):
+ """ Hook to define Tray """
+ printing_act_obj = self.env['printing.report.xml.action']
+ options = super(Printer, self).print_options(report, format)
+
+ # Retrieve user default values
+ user = self.env.user
+ tray = user.printer_tray_id
+
+ # Retrieve report default values
+ if report.printer_tray_id:
+ tray = report.printer_tray_id
+
+ # Retrieve report-user specific values
+ action = printing_act_obj.search([('report_id', '=', report.id),
+ ('user_id', '=', self.env.uid),
+ ('action', '!=', 'user_default')],
+ limit=1)
+ if action and action.printer_tray_id:
+ tray = action.tray_id
+
+ if tray:
+ options['InputSlot'] = str(tray.system_name)
+ return options
diff --git a/__unported__/printer_tray/printer_tray.py b/printer_tray/printer_tray.py
similarity index 74%
rename from __unported__/printer_tray/printer_tray.py
rename to printer_tray/printer_tray.py
index 90a90ab..ee25ca8 100644
--- a/__unported__/printer_tray/printer_tray.py
+++ b/printer_tray/printer_tray.py
@@ -18,16 +18,20 @@
# along with this program. If not, see .
#
##############################################################################
-from openerp.osv import orm, fields
+from openerp import models, fields
-class PrinterTray(orm.Model):
+class PrinterTray(models.Model):
_name = 'printing.tray'
_description = 'Printer Tray'
- _columns = {
- 'name': fields.char('Name', size=64, required=True),
- 'system_name': fields.char('System Name', size=64, required=True),
- 'printer_id': fields.many2one('printing.printer', 'Printer', required=True),
- }
+ name = fields.Char(required=True)
+ system_name = fields.Char(required=True, readonly=True)
+ printer_id = fields.Many2one(
+ comodel_name='printing.printer',
+ string='Printer',
+ required=True,
+ readonly=True,
+ ondelete='cascade',
+ )
diff --git a/printer_tray/printer_view.xml b/printer_tray/printer_view.xml
new file mode 100644
index 0000000..e0d4c29
--- /dev/null
+++ b/printer_tray/printer_view.xml
@@ -0,0 +1,25 @@
+
+
+
+
+ printing.printer.form
+ printing.printer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/__unported__/printer_tray/report_xml_action.py b/printer_tray/report_xml_action.py
similarity index 63%
rename from __unported__/printer_tray/report_xml_action.py
rename to printer_tray/report_xml_action.py
index 603e21b..5056150 100644
--- a/__unported__/printer_tray/report_xml_action.py
+++ b/printer_tray/report_xml_action.py
@@ -19,20 +19,26 @@
#
##############################################################################
-from openerp.osv import orm, fields
+from openerp import models, fields, api
-class ReportXMLAction(orm.Model):
+class ReportXMLAction(models.Model):
_inherit = 'printing.report.xml.action'
- _columns = {
- 'printer_tray_id': fields.many2one(
- 'printing.tray', 'Paper Source',
- domain="[('printer_id', '=', printer_id)]"),
- }
+ printer_tray_id = fields.Many2one(
+ comodel_name='printing.tray',
+ string='Paper Source',
+ domain="[('printer_id', '=', printer_id)]",
+ )
- def behaviour(self, cr, uid, act_id, context=None):
- res = super(ReportXMLAction, self).behaviour(cr, uid, act_id, context=context)
- action = self.browse(cr, uid, act_id, context=context)
- res['tray'] = action.printer_tray_id.system_name
+ @api.multi
+ def behaviour(self):
+ self.ensure_one()
+ res = super(ReportXMLAction, self).behaviour()
+ res['tray'] = self.printer_tray_id.system_name
return res
+
+ @api.onchange('printer_id')
+ def onchange_printer_id(self):
+ """ Reset the tray when the printer is changed """
+ self.printer_tray_id = False
diff --git a/printer_tray/report_xml_action_view.xml b/printer_tray/report_xml_action_view.xml
new file mode 100644
index 0000000..8d60047
--- /dev/null
+++ b/printer_tray/report_xml_action_view.xml
@@ -0,0 +1,25 @@
+
+
+
+
+ printing.report.xml.action.form
+ printing.report.xml.action
+
+
+
+
+
+
+
+
+ printing.report.xml.action.form
+ printing.report.xml.action
+
+
+
+
+
+
+
+
+
diff --git a/__unported__/printer_tray/security/ir.model.access.csv b/printer_tray/security/ir.model.access.csv
similarity index 100%
rename from __unported__/printer_tray/security/ir.model.access.csv
rename to printer_tray/security/ir.model.access.csv
diff --git a/__unported__/printer_tray/users.py b/printer_tray/users.py
similarity index 68%
rename from __unported__/printer_tray/users.py
rename to printer_tray/users.py
index 7f46f76..47d7faa 100644
--- a/__unported__/printer_tray/users.py
+++ b/printer_tray/users.py
@@ -18,15 +18,20 @@
# along with this program. If not, see .
#
##############################################################################
-from openerp.osv import orm, fields
+from openerp import models, fields, api
-class ResUsers(orm.Model):
+class ResUsers(models.Model):
_inherit = "res.users"
- _columns = {
- 'printer_tray_id': fields.many2one(
- 'printing.tray', 'Default Printer Paper Source',
- domain="[('printer_id', '=', printing_printer_id)]"),
- }
+ printer_tray_id = fields.Many2one(
+ comodel_name='printing.tray',
+ string='Default Printer Paper Source',
+ domain="[('printer_id', '=', printing_printer_id)]",
+ )
+
+ @api.onchange('printing_printer_id')
+ def onchange_printing_printer_id(self):
+ """ Reset the tray when the printer is changed """
+ self.printer_tray_id = False
diff --git a/__unported__/printer_tray/users_view.xml b/printer_tray/users_view.xml
similarity index 52%
rename from __unported__/printer_tray/users_view.xml
rename to printer_tray/users_view.xml
index ba3bbbb..381583c 100644
--- a/__unported__/printer_tray/users_view.xml
+++ b/printer_tray/users_view.xml
@@ -14,5 +14,17 @@
+
+
+ res.users.form.printing.tray
+ res.users
+
+
+
+
+
+
+
+