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