-
-
Notifications
You must be signed in to change notification settings - Fork 349
[19.0][MIG] base_report_to_printer: Migration to 19.0 #436
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 19.0
Are you sure you want to change the base?
Conversation
Migrate ir_report.py to new API Migrate printing.py to new API Migrate res_users.py to new API Migrate report_xml_action.py to new API Migrate wizard/update_printers.py to new API Better view for wizard Recursion when calling a method with old-style api signature from browse Remove the Lock because it is useless on multiprocess Replace it by a database lock so the different processes are all aware of the lock and the last update timestamp. browse is called often enough to call the update routine (even too much) Implements the print on the new 'report' model Restore the print capability on deprecated reports Update copyrights Improve form view, add search view for printers Update translations, add a string to URI so it is uppercased missing api decorator We need the report in print_document and print options (needed in printer_tray) Move the 'skip_update' right in the browse, it prevents a loop See odoo/odoo#3644 Also, it helps to have the value set/read in context close to each other. Avoid to hits the database too many times to check if the list of printers needs to be refreshed. Keep the last update datetime in cache and invalidate this datetime if is is older than POLL_INTERVAL. Thus, one process won't hit the DB more than 1 time every POLL_INTERVAL (10 seconds currently) to check if it needs to update the list. Refresh the list of printers every 15 seconds instead of 10 Extract a method so it will be easier to override in printer_tray Error on installation of the module Invalidate the cache when the table is created so the table_exists() method returns a fresh value after creation of the table Use a cron instead of threads to update printers status The implementation with threads was blocking the loading of the server in multiprocess. Using a cron will lower the frequency of the updates but at least it is simple and reliable. Fixes OCA#14 Do not write the printer status if it has not changed Avoid unnecessary UPDATE every minute Clean the XML file (remove eval, reindent) Give access to models to all users for reading So they are able to print
[Usability] Auto-add Administrator user to the Print group Make XML code more readable base_report_to_printer: add support for remote CUPS server (not just localhost) More logging and better error handling Add CUPS_HOST in more debug logs
Instead, a notification is displayed to the user. When report.get_pdf() is called on a report that must be printer, it will print the report *and* returns the pdf, thus code that calls directly report.get_pdf() will print the pdf on the printer as expected. Fixes OCA#16
In order to get visibility on https://www.odoo.com/apps the OCA board has decided to add the OCA as author of all the addons maintained as part of the association.
By calling `super.get_pdf` in print_document we can encounter trouble with MRO resolution that prevent custom report parser (e.g. override of `get_pdf`) to be called. The fix consist of not calling `super` and prevent multiple call to 'printer.print_document'
* context was lost while getting report * now it will be passed using with_context * could be used for print_options (example: pass copies amount for productlabals)
cups is an external dependency, if it is not installed Odoo will not start. OCA guidelines specify guidelines for External dependencies, code is from there.
* Set api.multi for action called as `object` on view * Merge syleam printers module into base_report_to_printer (OCA#60) * [IMP] Updated unit tests * [FIX] Fixed renamed attributes * [FIX] Remove deleted fields * [IMP] Add printing.server and printing.job models * [IMP] Allow to cancel all jobs, enable, and disable printers * [IMP] Split the cups part of print_document into a new print_file method * [IMP] Updated cron job to run the action_update_jobs method * [ADD] Add a migration script to create a printing server from configuration * [MIG] Migrate base_report_to_printer to v10.0 Removed deprecated methods on printing.printer (replaced by methods on printing.server) * [IMP] Add wkhtmltopdf in travis configuration file * [FIX] base_report_to_printer: Fix Update Job Cron * Fix API issue with Update Job Cron ** Forward Port from 9.0 * [FIX] Fixed the res.users view The string attribute should not be used as a selector, because it is translatable. * [FIX] Fixed the print_document method of report The new API migration was made to @api.multi because of the "cr, uid, ids" signature, but "ids" was the ids of the records to print here, not the report's ids. Also, the new API version of "get_pdf" get directly the ids of the records to print in the standard module, not a recordset. * [FIX] UI is now (un)blocked only when using qweb-pdf reports in standard addons
* FIX format parameter To be able to print files in raw format it's needed to set this parameter. Previous code was not able to print raw files, but it didn't get error because 'format' used on line 107 is assumed as a format funtion, because format parameter was not on this scope. * FIX pep8
Provided steps to installing PyCups
Printer Tray isn't an app Base Report To printer ir.actions.report.xml view xpath error and missing page name Put to before security as security tab doesn't do much and if this module is installed it should be the hero page
Migration of printer_tray to v11 and integration with base_report_to_printer
If the test was run in a database with the `account` module installed, they were failing for 2 reasons: - It was searching for the first report it could find, with the first 5 records to report. This made it load the `account.report_agedpartnerbalance` report, which caused a fake `TypeError: 'NoneType' object has no attribute '__getitem__'` error. - It was running tests without loading the full module graph, thus not getting the default value for the new required `invoice_warn` field. Now tests are run in `post_install` mode to load full module graph, and they use stateless data.
|
tested functionally and works fine except for what @dc-oerp mentions |
|
Please consider adding the following PR #433 |
c2b67e6 to
89c5e00
Compare
Thanks @JordiMForgeFlow and @dc-oerp . One of the JS assets was missing in the manifest file. Done! |
Done! Thanks @ferran-S73 |
89c5e00 to
a988630
Compare
|
Checks fail due to:
|
be65758 to
be7be8f
Compare
Thanks @Maxime-TC , this was intentionally changed because in my IMO it is more logical if the user preferences overrides the report default configuration, but finally I have dismissed this change. I think this is better to purpose in another PR after the current have been migrated and of course see what the people think about this change. Tests are passing now. |
|
@miquelalzanillas seems that we still have the issue reported by @dc-oerp , when the report is configured as 'Sent to printer' it is still being downloaded anyway |
|
Hello @JordiMForgeFlow thanks for the review. I can't reproduce this problem now with the latest fixes. Could you check if this asset is loaded? Is the one that was missing before and if loaded you have to see a notification like this after click on Print button.
|
8db5c5e to
3245b4a
Compare
3245b4a to
9cef954
Compare
|
When will this PR get merged? |
|
Are you planning to migrate the base_report_to_label_printer module as well? Thank you |
Hi @Maxime-TC , We'll need two more approvals before this PR can be merged by a PSC. Please feel free to contribute with your review. |
Hello @dc-oerp , No, nothing planned on this module. |

This migration PR introduces a structural refactor of the printing framework by splitting the CUPS-specific implementation out of base_report_to_printer into a new module base_report_to_printer_cups.
The goal is to make base_report_to_printer backend-agnostic, so it can serve as a common base for multiple printing backends and protocols, not limited to CUPS.
Why?
Historically, base_report_to_printer has been tightly coupled to CUPS. This coupling makes it difficult to:
By extracting all CUPS-specific logic into its own module, we establish a cleaner architecture where:
Technical overview