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