Browse Source

Oct 7 : [FIX] Bug Fixed 'direct_print_odoo'

pull/295/head
AjmalCybro 2 years ago
parent
commit
2131c57cf3
  1. 4
      direct_print_odoo/README.rst
  2. 2
      direct_print_odoo/__manifest__.py
  3. 8
      direct_print_odoo/controllers/printer.py
  4. 5
      direct_print_odoo/doc/RELEASE_NOTES.md
  5. 13
      direct_print_odoo/models/res_config_settings.py
  6. BIN
      direct_print_odoo/static/description/assets/screenshots.zip
  7. BIN
      direct_print_odoo/static/description/assets/screenshots/odoo_config.png
  8. BIN
      direct_print_odoo/static/description/assets/screenshots/printer.gif
  9. 6
      direct_print_odoo/static/description/index.html
  10. 87
      direct_print_odoo/views/res_config_settings_views.xml

4
direct_print_odoo/README.rst

@ -1,5 +1,5 @@
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg .. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3 :alt: License: LGPL-3
Direct Print Direct Print
@ -26,7 +26,7 @@ Company
License License
------- -------
General Public License, Version 3 (LGPL v3). General Public License, Version 3 (LGPL v3).
(https://www.odoo.com/documentation/user/16.0/legal/licenses/licenses.html) (https://www.gnu.org/licenses/lgpl-3.0-standalone.html)
Credits Credits
------- -------

2
direct_print_odoo/__manifest__.py

@ -21,7 +21,7 @@
############################################################################# #############################################################################
{ {
'name': 'Direct Print', 'name': 'Direct Print',
'version': '16.0.1.0.0', 'version': '16.0.1.1.1',
'summary': 'The Direct Print is a tool that connects Odoo to PrintNode, ' 'summary': 'The Direct Print is a tool that connects Odoo to PrintNode, '
'a cloud-based printing service. This connector allows users to' 'a cloud-based printing service. This connector allows users to'
' send print jobs from their Odoo environment to any printer ' ' send print jobs from their Odoo environment to any printer '

8
direct_print_odoo/controllers/printer.py

@ -70,8 +70,8 @@ class ReportControllers(ReportController):
pdf = report.with_context(context)._render_qweb_pdf(reportname, pdf = report.with_context(context)._render_qweb_pdf(reportname,
docids, docids,
data=data)[0] data=data)[0]
print_node_url = request.env[ # print_node_url = request.env[
'ir.config_parameter'].sudo().get_param('url_print_node') # 'ir.config_parameter'].sudo().get_param('url_print_node')
print_node_api = request.env[ print_node_api = request.env[
'ir.config_parameter'].sudo().get_param('api_key_print_node') 'ir.config_parameter'].sudo().get_param('api_key_print_node')
default_printer = request.env[ default_printer = request.env[
@ -91,7 +91,7 @@ class ReportControllers(ReportController):
int(printer)) int(printer))
multi_printer_details.append(printer_details.id_of_printer) multi_printer_details.append(printer_details.id_of_printer)
if multiple_printers_boolean: if multiple_printers_boolean:
gateway = Gateway(url=print_node_url, apikey=print_node_api) gateway = Gateway(url='https://api.printnode.com/', apikey=print_node_api)
data_record = base64.b64encode(pdf) data_record = base64.b64encode(pdf)
ir_values = { ir_values = {
'name': "Customer Report", 'name': "Customer Report",
@ -122,7 +122,7 @@ class ReportControllers(ReportController):
raise ValidationError(_( raise ValidationError(_(
'please select at least one printer')) 'please select at least one printer'))
else: else:
gateway = Gateway(url=print_node_url, apikey=print_node_api) gateway = Gateway(url='https://api.printnode.com/', apikey=print_node_api)
data_record = base64.b64encode(pdf) data_record = base64.b64encode(pdf)
ir_values = { ir_values = {
'name': "Customer Report", 'name': "Customer Report",

5
direct_print_odoo/doc/RELEASE_NOTES.md

@ -4,3 +4,8 @@
#### Version 16.0.1.0.0 #### Version 16.0.1.0.0
#### ADD #### ADD
- Initial commit for Direct Print - Initial commit for Direct Print
#### 06.10.2023
#### Version 16.0.1.1.1
#### UPDATE
- Update commit for Direct Print

13
direct_print_odoo/models/res_config_settings.py

@ -19,7 +19,6 @@
# If not, see <http://www.gnu.org/licenses/>. # If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################# #############################################################################
import json
from ast import literal_eval from ast import literal_eval
from printnodeapi.gateway import Gateway from printnodeapi.gateway import Gateway
from odoo import api, fields, models ,_ from odoo import api, fields, models ,_
@ -38,7 +37,6 @@ class ResConfigSettings(models.TransientModel):
checking the available printers in the system""" checking the available printers in the system"""
_inherit = 'res.config.settings' _inherit = 'res.config.settings'
url_print_node = fields.Char(string='Url', help='URL of the printnode')
api_key_print_node = fields.Char(string="API Key", api_key_print_node = fields.Char(string="API Key",
help='API Key of the printnode') help='API Key of the printnode')
available_printers_id = fields.Many2one('printer.details', available_printers_id = fields.Many2one('printer.details',
@ -52,15 +50,12 @@ class ResConfigSettings(models.TransientModel):
'Printers', 'Printers',
config_parameter='direct_print_odoo' config_parameter='direct_print_odoo'
'.multiple_printers') '.multiple_printers')
@api.model @api.model
def get_values(self): def get_values(self):
"""Get the values in the config""" """Get the values in the config"""
res = super(ResConfigSettings, self).get_values() res = super(ResConfigSettings, self).get_values()
res['api_key_print_node'] = self.env[ res['api_key_print_node'] = self.env[
'ir.config_parameter'].sudo().get_param('api_key_print_node') 'ir.config_parameter'].sudo().get_param('api_key_print_node')
res['url_print_node'] = self.env[
'ir.config_parameter'].sudo().get_param('url_print_node')
res['printers_ids'] = self.env[ res['printers_ids'] = self.env[
'ir.config_parameter'].sudo().get_param( 'ir.config_parameter'].sudo().get_param(
'direct_print_odoo.printers_ids') 'direct_print_odoo.printers_ids')
@ -82,8 +77,6 @@ class ResConfigSettings(models.TransientModel):
"""Set the values in the config""" """Set the values in the config"""
self.env['ir.config_parameter'].sudo().set_param('api_key_print_node', self.env['ir.config_parameter'].sudo().set_param('api_key_print_node',
self.api_key_print_node) self.api_key_print_node)
self.env['ir.config_parameter'].sudo().set_param('url_print_node',
self.url_print_node)
self.env['ir.config_parameter'].sudo().set_param( self.env['ir.config_parameter'].sudo().set_param(
'direct_print_odoo.printers_ids', 'direct_print_odoo.printers_ids',
self.printers_ids.ids) self.printers_ids.ids)
@ -91,12 +84,10 @@ class ResConfigSettings(models.TransientModel):
def action_check_printers(self): def action_check_printers(self):
"""Check the available printer""" """Check the available printer"""
print_node_url = self.env['ir.config_parameter'].sudo().get_param(
'url_print_node')
print_node_api = self.env['ir.config_parameter'].sudo().get_param( print_node_api = self.env['ir.config_parameter'].sudo().get_param(
'api_key_print_node') 'api_key_print_node')
try: try:
gateway = Gateway(url=print_node_url, apikey=print_node_api) gateway = Gateway(url="https://api.printnode.com", apikey=print_node_api)
computer_id = int(gateway.computers()[0].id) computer_id = int(gateway.computers()[0].id)
if computer_id: if computer_id:
for printer in gateway.printers(computer=computer_id): for printer in gateway.printers(computer=computer_id):
@ -113,5 +104,5 @@ class ResConfigSettings(models.TransientModel):
raise ValidationError(_('Printer already exists')) raise ValidationError(_('Printer already exists'))
else: else:
raise ValidationError(_('Please Connect a Computer First ')) raise ValidationError(_('Please Connect a Computer First '))
except Exception as e: except Exception:
raise ValidationError(_("Please provide valid credentials")) raise ValidationError(_("Please provide valid credentials"))

BIN
direct_print_odoo/static/description/assets/screenshots.zip

Binary file not shown.

BIN
direct_print_odoo/static/description/assets/screenshots/odoo_config.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 66 KiB

BIN
direct_print_odoo/static/description/assets/screenshots/printer.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 128 KiB

6
direct_print_odoo/static/description/index.html

@ -30,7 +30,7 @@
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;"> <h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
Direct Print</h1> Direct Print</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;"> <p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
Direct Print </p> The Direct Print is a Tool That Connects Odoo to PrintNode</p>
<!-- END OF APP HERO --> <!-- END OF APP HERO -->
<img src="assets/screenshots/printer.gif" class="img-responsive" <img src="assets/screenshots/printer.gif" class="img-responsive"
style="width: 100%; margin-left: -13px;" /> style="width: 100%; margin-left: -13px;" />
@ -428,7 +428,7 @@
</div> </div>
<!-- END OF END OF OUR SERVICES --> <!-- END OF OUR SERVICES -->
<!-- OUR INDUSTRIES --> <!-- OUR INDUSTRIES -->
@ -565,7 +565,7 @@
</div> </div>
</div> </div>
<!-- END OF END OF OUR INDUSTRIES --> <!-- END OF OUR INDUSTRIES -->
<!-- SUPPORT --> <!-- SUPPORT -->
<div class="d-flex align-items-center" <div class="d-flex align-items-center"

87
direct_print_odoo/views/res_config_settings_views.xml

@ -2,60 +2,89 @@
<odoo> <odoo>
<!-- Inheriting the config setting and add the values for printer --> <!-- Inheriting the config setting and add the values for printer -->
<record id="res_config_settings_view_form" model="ir.ui.view"> <record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.direct.print.odoo</field> <field name="name">
res.config.settings.view.form.inherit.direct.print.odoo
</field>
<field name="model">res.config.settings</field> <field name="model">res.config.settings</field>
<field name="priority" eval="20"/> <field name="priority" eval="20"/>
<field name="inherit_id" ref="base_setup.res_config_settings_view_form"/> <field name="inherit_id"
ref="base_setup.res_config_settings_view_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//div[@id='invite_users']" position="after"> <xpath expr="//div[hasclass('settings')]" position="inside">
<div class="app_settings_block"
data-string="Direct Print"
string="Direct Print"
data-key="direct_print_odoo">
<h2>Direct Print Odoo</h2> <h2>Direct Print Odoo</h2>
<div class="row mt16 o_settings_container"> <div class="row mt16 o_settings_container">
<div class="col-xs-12 col-md-6 o_setting_box" <div class="o_setting_box o_searchable_setting col-12 col-lg-6">
id="print_node_settings"> <div class="o_setting_left_pane"/>
<div class="o_setting_right_pane"> <div class="o_setting_right_pane">
<label class="o_form_label"
for="api_key_print_node">API Key
</label>
<div class="text-muted">
Define your API Key of the printnode
</div>
<div class="content-group"> <div class="content-group">
<div class="row mt8"> <div class="mt16">
<label class="col-lg-3" string="Api Key" <field name="api_key_print_node"
for="api_key_print_node"/> help='API Key of the printnode'
<field name="api_key_print_node" help='API Key of the printnode'/> password="1"/>
</div> </div>
<div class="row mt8">
<label class="col-lg-3" string="End Url"
for="url_print_node"/>
<field name="url_print_node" help='URL of the printnode'/>
</div> </div>
</div> </div>
</div> </div>
<div class="o_setting_box o_searchable_setting col-12 col-lg-6">
<div class="o_setting_right_pane">
<label class="o_form_label"
for="available_printers_id">
Printers
</label>
<div class="text-muted">
Check Your available printers
</div> </div>
<div class="col-12 col-lg-6 o_setting_box" attrs="{'invisible':[('multiple_printers','!=',False)]}" <div class="content-group">
<div class="mt16"
attrs="{'invisible':[('multiple_printers','!=',False)]}"
id="active_printers"> id="active_printers">
<div class="o_setting_right_pane">
<button name="action_check_printers" <button name="action_check_printers"
string="Check available printers" string="Check available printers"
type="object" class="btn-primary"/> type="object"
class="btn-primary"/>
<div class="row mt8"> <div class="row mt8">
<label class="col-lg-3" <label class="col-lg-3"
string="Default Printer" string="Default Printer"
for="available_printers_id"/> for="available_printers_id"/>
<field name="available_printers_id" help='Available printers'/> <field name="available_printers_id"
</div> help='Available printers'/>
</div> </div>
</div> </div>
<div class="col-12 col-lg-6 o_setting_box" <div class="row mt8"
id="active_printers"> attrs="{'invisible':[('multiple_printers','=',False)]}">
<div class="o_setting_right_pane">
<div class="row mt8">
<label class="col-lg-3" <label class="col-lg-3"
string="Multiple printers" string="Select Printers"
for="multiple_printers"/> for="printers_ids"/>
<field name="multiple_printers" help="Enable if you have Multiple <field name="printers_ids"
widget="many2many_tags"/>
</div>
</div>
</div>
</div>
<div class="o_setting_box o_searchable_setting col-12 col-lg-6">
<div class="o_setting_left_pane">
<div name="external_email_server_default"
class="o_field_widget o_field_boolean">
<field name="multiple_printers"
help="Enable if you have Multiple
Printers"/> Printers"/>
</div> </div>
<div class="row mt8" attrs="{'invisible':[('multiple_printers','=',False)]}"> </div>
<div class="o_setting_right_pane">
<label class="col-lg-3" <label class="col-lg-3"
string="Select Printers" string="Multiple Printers"
for="printers_ids"/> for="multiple_printers"/>
<field name="printers_ids" widget="many2many_tags"/>
</div> </div>
</div> </div>
</div> </div>

Loading…
Cancel
Save