Skip to content

Commit abcc182

Browse files
committed
conflicts fixed
2 parents dcdb007 + 32dee55 commit abcc182

File tree

11 files changed

+536
-5
lines changed

11 files changed

+536
-5
lines changed

.gitignore

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
*venv*
22
__pycache__/
33
*.pyc
4+
<<<<<<< HEAD
45
.vscode
56
**/.env
6-
tmp
7+
tmp
8+
=======
9+
.vscode
10+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66

servers/tenant/blueprints/event_driven/ticket.py

+153-2
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,42 @@
44

55
from numpy import number
66
from flask import make_response, request, jsonify, Blueprint
7+
<<<<<<< HEAD
8+
=======
9+
from flask_cors import cross_origin
10+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
711

812
import sys
913

1014
sys.path.insert(0, "..") # import parent folder
1115

16+
<<<<<<< HEAD
1217
from controllers.controllerMapper import TicketController, TicketStatusController
18+
=======
19+
from controllers.controllerMapper import TicketController
20+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
1321
from models.models import TicketEvents
1422
from utils import (
1523
AlchemyEncoder,
1624
alchemyConverter,
1725
)
1826

27+
<<<<<<< HEAD
1928
# from flask_cognito_lib.decorators import auth_required
2029

2130
ticket_bp = Blueprint("ticket_bp", __name__, url_prefix="ticket")
2231

2332
ticket_controller = TicketController()
2433
ticket_status_controller = TicketStatusController()
2534
PIECES_SEPERATOR = ",+-"
35+
=======
36+
ticket_bp = Blueprint("ticket_bp", __name__, url_prefix="ticket")
37+
38+
# TODO: USER BASED AUTH
39+
40+
ticket_controller = TicketController()
41+
42+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
2643
"""
2744
Route expects requests of format:
2845
@@ -80,7 +97,12 @@ def ticket_get_all_with_status(status): # create ticket
8097

8198

8299
@ticket_bp.route("/", methods=["POST"])
100+
<<<<<<< HEAD
83101
#@auth_required()
102+
=======
103+
@cross_origin(supports_credentials=True)
104+
@require_appkey
105+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
84106
def ticket_post(): # create ticket
85107
print("Creating ticket from the following JSON:")
86108
print(request.data)
@@ -110,6 +132,7 @@ def ticket_edit(ticket_id): # create ticket
110132
ticket_dict["pieces"] = PIECES_SEPERATOR.join(ticket_dict["pieces"])
111133
ticket_event = ticket_controller._create_base_event(ticket_dict)
112134

135+
<<<<<<< HEAD
113136
response = {"ticketId": ticket_event.ticketId}
114137
return make_response(json.dumps(response))
115138

@@ -127,20 +150,56 @@ def get_clean_filters_dict(immutable_args):
127150
if "limit" in sql_filters:
128151
del sql_filters["limit"]
129152
return sql_filters
153+
=======
154+
return {"success"}
130155

131156

157+
# http://127.0.0.1:6767/api/ticket/?start=2022-01-01T00:00:00&end=2022-04-04T00:00:00&shipperName=Eric%20Shea
158+
# curl http://127.0.0.1:6767/api/ticket/?shipperName
159+
# # curl http://127.0.0.1:6767/api/ticket?key=a
160+
# # curl http://127.0.0.1:6767/api/ticket/?start=2022-01-01T00:00:00Z&end=2022-04-04T00:00:00Z
161+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
162+
163+
def corsify(resp):
164+
resp = make_response(json.dumps(resp))
165+
resp.headers['Access-Control-Allow-Origin'] = '*'
166+
resp.headers['Access-Control-Allow-Headers'] = ['Origin', 'X-Requested-With', 'Content-Type', 'Accept']
167+
return resp
168+
169+
<<<<<<< HEAD
132170
def validate_date_format(date_text):
133171
try:
134172
return datetime.strptime(date_text, "%Y-%m-%dT%H:%M:%S")
135173
except ValueError:
136174
raise ValueError("Incorrect data format, should be %Y-%m-%dT%H:%M:%S")
137175

176+
=======
177+
def get_clean_filters_dict(immutable_args):
178+
sql_filters = dict(immutable_args)
179+
if "start" in sql_filters:
180+
del sql_filters["start"]
181+
if "end" in sql_filters:
182+
del sql_filters["end"]
183+
if "limit" in sql_filters:
184+
del sql_filters["limit"]
185+
return sql_filters
186+
187+
def validate_date_format(date_text):
188+
try:
189+
return datetime.strptime(date_text, "%Y-%m-%dT%H:%M:%S")
190+
except ValueError:
191+
raise ValueError("Incorrect data format, should be %Y-%m-%dT%H:%M:%S")
192+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
138193

139194
def default_start():
140195
dt_start = validate_date_format("1900-01-01T00:00:00")
141196
return dt_start
142197

198+
def default_end():
199+
dt_end = validate_date_format("2100-01-01T00:00:00")
200+
return dt_end
143201

202+
<<<<<<< HEAD
144203
def default_end():
145204
dt_end = validate_date_format("2100-01-01T00:00:00")
146205
return dt_end
@@ -168,9 +227,45 @@ def ticket_get_all():
168227
for ticket in res:
169228
ticket["pieces"] = ticket["pieces"].split(PIECES_SEPERATOR)
170229
ticket["ticketStatus"]["currentStatus"] = ticket["ticketStatus"]["currentStatus"].value
230+
=======
231+
@ticket_bp.route("/", methods=["GET"])
232+
@cross_origin(supports_credentials=True)
233+
# @require_appkey
234+
def ticket_get_all():
235+
filters = request.args or {}
236+
sql_filters = get_clean_filters_dict(filters)
237+
limit = 5000 if "limit" not in filters else filters["limit"]
238+
239+
dt_start = validate_date_format(filters["start"]) if "start" in filters else default_start()
240+
dt_end = validate_date_format(filters["end"]) if "end" in filters else default_end()
241+
242+
data = ticket_controller._get_latest_event_objects_in_range(dt_start, dt_end, sql_filters, number_of_res=limit)
243+
244+
res = alchemyConverter(data)
245+
246+
return corsify(res)
247+
248+
249+
@ticket_bp.route("/<ticket_id>", methods=["GET"])
250+
@cross_origin(supports_credentials=True)
251+
# @require_appkey
252+
def ticket_get(ticket_id):
253+
filters = request.args.get("filters") or {}
254+
255+
256+
sql_filters = get_clean_filters_dict(filters)
257+
sql_filters["ticketId"] = ticket_id
258+
data = ticket_controller._get_latest_event_objects_in_range(
259+
default_start(), default_end(), filters=sql_filters
260+
)
261+
262+
res = alchemyConverter(data[0])
263+
return corsify(res)
264+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
171265

172266
return make_response(json.dumps(res, cls=AlchemyEncoder))
173267

268+
<<<<<<< HEAD
174269

175270
def get_single(ticket_id):
176271
filters = request.args.get("filters") or {}
@@ -189,11 +284,38 @@ def ticket_get(ticket_id):
189284
data = get_single(ticket_id)
190285
res = alchemyConverter(data)
191286
return make_response(json.dumps(res, cls=AlchemyEncoder))
192-
287+
=======
288+
{
289+
"datetime" : "value",
290+
"filters" : {
291+
"field1": "value1",
292+
"field2": "value2",
293+
....
294+
}
295+
}
193296

194297
"""
195-
Route expects requests of format:
196298
299+
300+
301+
# @ticket_bp.route("/attribute/{attribute_name}", methods=["GET"])
302+
# @require_appkey
303+
# def ticket_attribute_get(attribute_name):
304+
305+
# filters.extend({"ticket_id": ticket_id})
306+
307+
# latest_ticket = ticket_controller._get_latest_event_objects(
308+
# number_of_res=number_of_res, filters=filters
309+
# )
310+
311+
# res = alchemyConverter(latest_ticket)
312+
# response = json.dumps(res, cls=AlchemyEncoder)
313+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
314+
315+
# return response
316+
317+
318+
<<<<<<< HEAD
197319
{
198320
"datetime" : "value",
199321
"filters" : {
@@ -204,6 +326,9 @@ def ticket_get(ticket_id):
204326
}
205327
206328
"""
329+
=======
330+
331+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
207332

208333
"""
209334
Route expects requests of format:
@@ -223,3 +348,29 @@ def ticket_get(ticket_id):
223348
224349
"""
225350

351+
<<<<<<< HEAD
352+
=======
353+
354+
@ticket_bp.route("/<ticket_id>", methods=["PUT"])
355+
@cross_origin(supports_credentials=True)
356+
@require_appkey
357+
def ticket_update(ticket_id):
358+
359+
update_dict = request.form["update_dict"]
360+
361+
# remove ticketId and ticketEventId if present
362+
update_dict.pop(ticket_controller.primary_key, None)
363+
update_dict.pop(TicketEvents.non_prim_identifying_column_name, None)
364+
365+
filters = request.form["filters"]
366+
filters.extend({"ticket_id": ticket_id})
367+
368+
updated_object = ticket_controller._modify_latest_object(
369+
update_dict, filters=filters
370+
)
371+
372+
res = alchemyConverter(updated_object)
373+
response = json.dumps(res, cls=AlchemyEncoder)
374+
375+
return response
376+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66

servers/tenant/blueprints/simple/users.py

+4
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ def user_post(): # create ticket
3232

3333

3434
@user_bp.route("", methods=["PUT"])
35+
<<<<<<< HEAD
3536
#@auth_required()
37+
=======
38+
@require_appkey
39+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
3640
def user_modify():
3741

3842
userId = request.form["userId"]

servers/tenant/celery_client.py

+29
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,15 @@
44
import io
55
from uuid import uuid4
66
import traceback
7+
<<<<<<< HEAD
78
import PyPDF2
89
import extraction.app as ex
910
import extraction.extract as ext
11+
=======
12+
# import tenant.controllers.DocumentController as document_controller
13+
import PyPDF2
14+
import extraction.app as ex
15+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
1016
from celery import group
1117

1218
from tenant.controllers.DocumentController import DocumentController
@@ -38,12 +44,19 @@
3844
logger = get_logger(__name__)
3945
FAILURE = -1
4046
SUCCESS = 0
47+
<<<<<<< HEAD
4148
PIECES_SEPERATOR = ",+-"
4249
UPLOAD_FOLDER = "/opt/metadata-extraction/uploads"
4350
s3 = boto3.resource('s3', aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key)
4451
bucket = s3.Bucket(BUCKET)
4552

4653
def fan_out(file, documentStatusId):
54+
=======
55+
UPLOAD_FOLDER = "/opt/metadata-extraction/uploads"
56+
57+
58+
def fan_out(file):
59+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
4760
folder_uuid = uuid4()
4861
with io.BytesIO(file.read()) as open_pdf_file:
4962
read_pdf = PyPDF2.PdfFileReader(open_pdf_file)
@@ -58,11 +71,17 @@ def fan_out(file, documentStatusId):
5871
os.mkdir(f_dir)
5972
with open(f"{f_dir}/{file_uuid}.pdf", "wb") as f:
6073
output_pdf.write(f)
74+
<<<<<<< HEAD
6175

6276
bucket.upload_file(f"{f_dir}/{file_uuid}.pdf", f"documents/{folder_uuid}/{file_uuid}.pdf")
6377
file.close()
6478
pdf_folders = os.listdir(folder)
6579
return group([work.s(f"{folder}/{pdf_folder}", documentStatusId) for pdf_folder in pdf_folders])
80+
=======
81+
file.close()
82+
pdf_folders = os.listdir(folder)
83+
return group([work.s(f"{folder}/{pdf_folder}") for pdf_folder in pdf_folders])
84+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
6685

6786

6887
def do_all_work(tasks_to_run):
@@ -71,6 +90,7 @@ def do_all_work(tasks_to_run):
7190

7291

7392
@client.task
93+
<<<<<<< HEAD
7494
def work(pdf_folder, documentStatusId):
7595
document_controller = DocumentController()
7696
pdf_file = f"{pdf_folder}.pdf"
@@ -90,5 +110,14 @@ def work(pdf_folder, documentStatusId):
90110
doclist["documentStatusId"] = documentStatusId
91111
doclist["success"] = False
92112
document_controller._create(doclist)
113+
=======
114+
def work(pdf_folder):
115+
pdf_file = f"{pdf_folder}.pdf"
116+
try:
117+
doclist = ex.work(pdf_folder)
118+
except Exception as e:
119+
logger.info(f"file {pdf_folder}/{pdf_file} error. msg: {str(e)}")
120+
logger.info(traceback.format_exc())
121+
>>>>>>> 32dee55d98864ba43414c8757ab4abe2e4881f66
93122
return {"status": FAILURE, "folder": pdf_folder}
94123
return {"status": SUCCESS, "folder": pdf_folder, "doclist": doclist}

0 commit comments

Comments
 (0)