odoo_account_ebics/account_ebics/wizards/ebics_change_passphrase.py

76 lines
2.5 KiB
Python
Raw Permalink Normal View History

2020-06-24 21:39:33 +00:00
# Copyright 2009-2020 Noviat.
2019-12-22 09:54:00 +00:00
# License LGPL-3 or later (http://www.gnu.org/licenses/lpgl).
2018-08-14 15:04:39 +00:00
import logging
2020-06-24 21:39:33 +00:00
from odoo import _, fields, models
2018-08-14 15:04:39 +00:00
from odoo.exceptions import UserError
_logger = logging.getLogger(__name__)
try:
import fintech
from fintech.ebics import EbicsKeyRing
fintech.cryptolib = 'cryptography'
except ImportError:
_logger.warning('Failed to import fintech')
class EbicsChangePassphrase(models.TransientModel):
_name = 'ebics.change.passphrase'
_description = 'Change EBICS keys passphrase'
2020-07-14 21:18:32 +00:00
ebics_userid_id = fields.Many2one(
comodel_name='ebics.userid',
string='EBICS UserID',
2018-08-14 15:04:39 +00:00
readonly=True)
old_pass = fields.Char(
string='Old Passphrase',
required=True)
new_pass = fields.Char(
string='New Passphrase',
required=True)
new_pass_check = fields.Char(
string='New Passphrase (verification)',
required=True)
note = fields.Text(string='Notes', readonly=True)
def change_passphrase(self):
self.ensure_one()
2020-07-14 21:18:32 +00:00
if self.old_pass != self.ebics_userid_id.ebics_passphrase:
2018-08-14 15:04:39 +00:00
raise UserError(_(
"Incorrect old passphrase."))
if self.new_pass != self.new_pass_check:
raise UserError(_(
"New passphrase verification error."))
2020-07-14 21:18:32 +00:00
if self.new_pass == self.ebics_userid_id.ebics_passphrase:
2018-08-14 15:04:39 +00:00
raise UserError(_(
"New passphrase equal to old passphrase."))
try:
keyring = EbicsKeyRing(
2020-07-14 21:18:32 +00:00
keys=self.ebics_userid_id.ebics_keys_fn,
passphrase=self.ebics_userid_id.ebics_passphrase)
2018-08-14 15:04:39 +00:00
keyring.change_passphrase(self.new_pass)
except ValueError as e:
raise UserError(str(e))
self.ebics_userid_id.ebics_passphrase = self.new_pass
2018-08-14 15:04:39 +00:00
self.note = "The EBICS Passphrase has been changed."
module = __name__.split('addons.')[1].split('.')[0]
result_view = self.env.ref(
'%s.ebics_change_passphrase_view_form_result' % module)
return {
'name': _('EBICS Keys Change Passphrase'),
'res_id': self.id,
'view_type': 'form',
'view_mode': 'form',
'res_model': 'ebics.change.passphrase',
'view_id': result_view.id,
'target': 'new',
'type': 'ir.actions.act_window',
}
def button_close(self):
self.ensure_one()
return {'type': 'ir.actions.act_window_close'}