[IMP] remove storage of ebics_files in EBICS Files Root directory

This commit is contained in:
Luc De Meyer 2023-08-05 18:04:37 +02:00
parent d4d5f43a29
commit 50badfea3b
5 changed files with 1 additions and 52 deletions

View File

@ -91,14 +91,6 @@ class EbicsConfig(models.Model):
"between customer and financial institution. " "between customer and financial institution. "
"The human user also can authorise orders.", "The human user also can authorise orders.",
) )
ebics_files = fields.Char(
string="EBICS Files Root",
required=True,
readonly=True,
states={"draft": [("readonly", False)]},
default=lambda self: self._default_ebics_files(),
help="Root Directory for EBICS File Transfer Folders.",
)
# We store the EBICS keys in a separate directory in the file system. # We store the EBICS keys in a separate directory in the file system.
# This directory requires special protection to reduce fraude. # This directory requires special protection to reduce fraude.
ebics_keys = fields.Char( ebics_keys = fields.Char(
@ -253,14 +245,3 @@ class EbicsConfig(models.Model):
) )
% dirname % dirname
) )
def _check_ebics_files(self):
dirname = self.ebics_files or ""
if not os.path.exists(dirname):
raise UserError(
_(
"EBICS Files Root Directory %s is not available."
"\nPlease contact your system administrator."
)
% dirname
)

View File

@ -255,7 +255,6 @@ class EbicsUserID(models.Model):
Create new keys and certificates for this user Create new keys and certificates for this user
""" """
self.ensure_one() self.ensure_one()
self.ebics_config_id._check_ebics_files()
if self.state != "draft": if self.state != "draft":
raise UserError( raise UserError(
_("Set state to 'draft' before Bank Key (re)initialisation.") _("Set state to 'draft' before Bank Key (re)initialisation.")
@ -442,7 +441,6 @@ class EbicsUserID(models.Model):
must be downloaded and checked for consistency. must be downloaded and checked for consistency.
""" """
self.ensure_one() self.ensure_one()
self.ebics_config_id._check_ebics_files()
if self.state != "get_bank_keys": if self.state != "get_bank_keys":
raise UserError(_("Set state to 'Get Keys from Bank'.")) raise UserError(_("Set state to 'Get Keys from Bank'."))
try: try:

View File

@ -52,7 +52,6 @@
<field name="ebics_host" /> <field name="ebics_host" />
<field name="ebics_url" /> <field name="ebics_url" />
<field name="ebics_partner" /> <field name="ebics_partner" />
<field name="ebics_files" />
<field name="ebics_keys" /> <field name="ebics_keys" />
</group> </group>
<group name="main-right"> <group name="main-right">

View File

@ -27,7 +27,6 @@ class EbicsAdminOrder(models.TransientModel):
def ebics_admin_order(self): def ebics_admin_order(self):
self.ensure_one() self.ensure_one()
self.ebics_config_id._check_ebics_files()
client = self._setup_client() client = self._setup_client()
if not client: if not client:
self.note += ( self.note += (

View File

@ -10,7 +10,6 @@ logging.basicConfig(
import base64 import base64
import logging import logging
import os
from sys import exc_info from sys import exc_info
from traceback import format_exception from traceback import format_exception
@ -193,7 +192,6 @@ class EbicsXfer(models.TransientModel):
def ebics_download(self): def ebics_download(self):
self.ensure_one() self.ensure_one()
self.ebics_config_id._check_ebics_files()
ctx = self.env.context.copy() ctx = self.env.context.copy()
self.note = "" self.note = ""
err_cnt = 0 err_cnt = 0
@ -532,43 +530,17 @@ class EbicsXfer(models.TransientModel):
return ebics_files return ebics_files
def _create_ebics_file(self, data, file_format, docname=None): def _create_ebics_file(self, data, file_format, docname=None):
"""
Write the data as received over the EBICS connection
to a temporary file so that is is available for
analysis (e.g. in case formats are received that cannot
be handled in the current version of this module).
TODO: add code to clean-up /tmp on a regular basis.
After saving the data received we call the method to perform
file format specific processing.
"""
ebics_files_root = self.ebics_config_id.ebics_files
tmp_dir = os.path.normpath(ebics_files_root + "/tmp")
if not os.path.isdir(tmp_dir):
os.makedirs(tmp_dir, mode=0o700)
fn_parts = [self.ebics_config_id.ebics_host, self.ebics_config_id.ebics_partner] fn_parts = [self.ebics_config_id.ebics_host, self.ebics_config_id.ebics_partner]
if docname: if docname:
fn_parts.append(docname) fn_parts.append(docname)
else: else:
fn_date = self.date_to or fields.Date.today() fn_date = self.date_to or fields.Date.today()
fn_parts.append(fn_date.isoformat()) fn_parts.append(fn_date.isoformat())
base_fn = "_".join(fn_parts) fn = "_".join(fn_parts)
n = 1
full_tmp_fn = os.path.normpath(tmp_dir + "/" + base_fn)
while os.path.exists(full_tmp_fn):
n += 1
tmp_fn = base_fn + "_" + str(n).rjust(3, "0")
full_tmp_fn = os.path.normpath(tmp_dir + "/" + tmp_fn)
with open(full_tmp_fn, "wb") as f:
f.write(data)
ff_methods = self._file_format_methods() ff_methods = self._file_format_methods()
if file_format.name in ff_methods: if file_format.name in ff_methods:
data = ff_methods[file_format.name](data) data = ff_methods[file_format.name](data)
fn = base_fn
suffix = file_format.suffix suffix = file_format.suffix
if suffix and not fn.endswith(suffix): if suffix and not fn.endswith(suffix):
fn = ".".join([fn, suffix]) fn = ".".join([fn, suffix])