mirror of
https://github.com/brain-tec/account_ebics.git
synced 2024-11-27 14:37:25 +00:00
79 lines
2.5 KiB
Python
79 lines
2.5 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Copyright 2009-2018 Noviat.
|
||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||
|
|
||
|
import logging
|
||
|
|
||
|
from openerp import api, fields, models, _
|
||
|
from openerp.exceptions import Warning as 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'
|
||
|
|
||
|
ebics_config_id = fields.Many2one(
|
||
|
comodel_name='ebics.config',
|
||
|
string='EBICS Configuration',
|
||
|
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)
|
||
|
|
||
|
@api.multi
|
||
|
def change_passphrase(self):
|
||
|
self.ensure_one()
|
||
|
if self.old_pass != self.ebics_config_id.ebics_passphrase:
|
||
|
raise UserError(_(
|
||
|
"Incorrect old passphrase."))
|
||
|
if self.new_pass != self.new_pass_check:
|
||
|
raise UserError(_(
|
||
|
"New passphrase verification error."))
|
||
|
if self.new_pass == self.ebics_config_id.ebics_passphrase:
|
||
|
raise UserError(_(
|
||
|
"New passphrase equal to old passphrase."))
|
||
|
try:
|
||
|
keyring = EbicsKeyRing(
|
||
|
keys=self.ebics_config_id.ebics_keys,
|
||
|
passphrase=self.ebics_config_id.ebics_passphrase)
|
||
|
keyring.change_passphrase(self.new_pass)
|
||
|
except ValueError, e:
|
||
|
raise UserError(str(e))
|
||
|
self.ebics_config_id.ebics_passphrase = self.new_pass
|
||
|
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',
|
||
|
}
|
||
|
|
||
|
@api.multi
|
||
|
def button_close(self):
|
||
|
self.ensure_one()
|
||
|
return {'type': 'ir.actions.act_window_close'}
|