added helpers to leverage for various libraries
This commit is contained in:
parent
7e2305cc91
commit
efa1c8a939
37
app/helpers/aws_helper.py
Normal file
37
app/helpers/aws_helper.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import boto3
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
|
||||||
|
session = boto3.Session(
|
||||||
|
aws_access_key_id=os.environ['SOLVER_AWS_ACCESS_KEY_ID'],
|
||||||
|
aws_secret_access_key=os.environ['SOLVER_AWS_SECRET_ACCESS_KEY']
|
||||||
|
)
|
||||||
|
|
||||||
|
s3 = session.resource('s3', region_name=os.environ['SOLVER_AWS_REGION'])
|
||||||
|
sqs = session.client('sqs', region_name=os.environ['SOLVER_AWS_REGION'])
|
||||||
|
|
||||||
|
def get_key_from_message(message):
|
||||||
|
body = json.loads(message['Body'])
|
||||||
|
return body['Records'][0]['s3']['object']['key']
|
||||||
|
|
||||||
|
def get_object(key, bucket):
|
||||||
|
return s3.Object(
|
||||||
|
bucket_name=bucket,
|
||||||
|
key=key
|
||||||
|
).get()['Body'].read()
|
||||||
|
|
||||||
|
def file_stream_upload(buffer, name, bucket):
|
||||||
|
return s3.Bucket(bucket).upload_fileobj(buffer, name)
|
||||||
|
|
||||||
|
def receive_message(queue, message_num=1, wait_time=1):
|
||||||
|
return sqs.receive_message(
|
||||||
|
QueueUrl=queue,
|
||||||
|
MaxNumberOfMessages=message_num,
|
||||||
|
WaitTimeSeconds=wait_time
|
||||||
|
)
|
||||||
|
|
||||||
|
def delete_message(queue, receipt):
|
||||||
|
return sqs.delete_message(
|
||||||
|
QueueUrl=queue,
|
||||||
|
ReceiptHandle=receipt
|
||||||
|
)
|
5
app/helpers/csv_helper.py
Normal file
5
app/helpers/csv_helper.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import csv
|
||||||
|
import io
|
||||||
|
|
||||||
|
def file_stream_reader(f):
|
||||||
|
return csv.reader(io.StringIO(f.read().decode('ascii')))
|
45
app/helpers/service_helper.py
Normal file
45
app/helpers/service_helper.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
import csv
|
||||||
|
import io
|
||||||
|
|
||||||
|
def items_csv_to_dict(items_csv_reader):
|
||||||
|
items = []
|
||||||
|
headers = []
|
||||||
|
|
||||||
|
# get headers and items
|
||||||
|
for key, row in enumerate(items_csv_reader):
|
||||||
|
if key == 0:
|
||||||
|
headers = row
|
||||||
|
else:
|
||||||
|
item = { 'attributes': [] }
|
||||||
|
|
||||||
|
for key, col in enumerate(headers):
|
||||||
|
if key == 0:
|
||||||
|
item[col] = row[key]
|
||||||
|
elif key > 1:
|
||||||
|
item['attributes'].append({
|
||||||
|
'id': col,
|
||||||
|
'value': row[key],
|
||||||
|
'type': 'metadata'
|
||||||
|
})
|
||||||
|
|
||||||
|
items.append(item)
|
||||||
|
|
||||||
|
return items
|
||||||
|
|
||||||
|
def solution_to_file(buffer, total_form_items, forms):
|
||||||
|
wr = csv.writer(buffer, dialect='excel', delimiter=',')
|
||||||
|
|
||||||
|
# write header row for first row utilizing the total items all forms will have
|
||||||
|
# and the cut score as the last item
|
||||||
|
header = [x + 1 for x in range(total_form_items)] + ['cut score']
|
||||||
|
wr.writerow(header)
|
||||||
|
|
||||||
|
# add each form as row to processed csv
|
||||||
|
for form in forms:
|
||||||
|
# provide generated items and cut score
|
||||||
|
row = form.items + [form.cut_score]
|
||||||
|
wr.writerow(row)
|
||||||
|
|
||||||
|
buff2 = io.BytesIO(buffer.getvalue().encode())
|
||||||
|
|
||||||
|
return buff2
|
9
app/helpers/tar_helper.py
Normal file
9
app/helpers/tar_helper.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import io
|
||||||
|
import tarfile
|
||||||
|
|
||||||
|
def raw_to_tar(raw_object):
|
||||||
|
tarball = io.BytesIO(raw_object)
|
||||||
|
return tarfile.open(fileobj=tarball, mode='r:gz')
|
||||||
|
|
||||||
|
def extract_file_from_tar(tar, file_name):
|
||||||
|
return tar.extractfile(tar.getmember(file_name))
|
Loading…
x
Reference in New Issue
Block a user