From f41b740b03a7912105573b9228720e9c48068670 Mon Sep 17 00:00:00 2001 From: fcarlini <felipercarlini@gmail.com> Date: Wed, 6 Oct 2021 11:12:07 -0300 Subject: [PATCH] [ADD] credentials file --- aws/credentials | 3 +++ models/sepa.py | 32 +++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 aws/credentials diff --git a/aws/credentials b/aws/credentials new file mode 100644 index 0000000..6e53c5f --- /dev/null +++ b/aws/credentials @@ -0,0 +1,3 @@ +[default] +aws_access_key_id = +aws_secret_access_key = diff --git a/models/sepa.py b/models/sepa.py index 3e0ebc5..8de7fe7 100644 --- a/models/sepa.py +++ b/models/sepa.py @@ -23,10 +23,13 @@ from openerp import _, api, fields, models from datetime import datetime from openerp.exceptions import ValidationError from collections import namedtuple +from pathlib import Path import StringIO import zipfile import subprocess import pytz +import os +import configparser timezone = pytz.timezone('America/Argentina/Buenos_Aires') commerce_fields = [ @@ -80,9 +83,11 @@ def format_sepa(dict, *args): return u'|'.join([unicode(eval(expr)).strip() for field in args[0]]).encode('utf-8') -def subprocess_cmd(command): +def subprocess_cmd(command, env=False): + if not env: + env = os.environ.copy() command = ' '.join(command.split('\n')) - process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True) + process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True, env=env) proc_stdout = process.communicate()[0].strip() o = '' for line in proc_stdout.decode().split('\n'): @@ -121,11 +126,12 @@ class SEPA(models.Model): @api.multi def upload_to_aws(self, file_path): md5 = subprocess_cmd('openssl dgst -md5 -binary %s | openssl enc -base64' % file_path) + env_vars = self.get_aws_env_vars() etag = subprocess_cmd(''' aws s3api put-object --bucket comercio-sepa-1001 --key sepa.zip --body %s --content-md5 "%s" --grant-full-control id="d217628e1ef57bf3b5fa00c24a50aaa245b6f5d78bea8e849d412cccfcd9c737" - ''' % (file_path, md5)) + ''' % (file_path, md5), env=env_vars) if not etag: raise ValidationError(_('There was a problem when trying to upload to aws')) try: @@ -134,6 +140,26 @@ class SEPA(models.Model): pass return etag + @api.multi + def get_aws_env_vars(self): + def format_env_vars(**kwargs): + return {k.upper(): v for k, v in kwargs.items() if v is not False} + + sepa_module = Path(os.path.join(os.path.dirname(os.path.abspath(__file__)))).parent + aws_credentials_path = Path.joinpath(sepa_module, 'aws/credentials') + parser = configparser.ConfigParser() + parser.read(aws_credentials_path) + env_vars = os.environ.copy() + env_vars.update( + format_env_vars( + aws_access_key_id=parser.get("default", "aws_access_key_id"), + aws_secret_access_key=parser.get("default", "aws_secret_access_key"), + ) + ) + return env_vars + + + @api.multi def generate_sepa(self): file_path = '/tmp/sepa.zip' -- GitLab