def on_patch(self, req, resp, login_id, session): # Authenticate login id and session availability. try: if (MemcacheFunctions.IsSessionValid(login_id, session) == False): resp.status = falcon.HTTP_401 message = { "status": "Invalid Login Credentials or Session is Expired" } result_json = json.dumps(message) resp.body = result_json return except ValueError as err: raise falcon.HTTPError(falcon.HTTP_400, traceback.print_exc(file=sys.stdout), err.args) except Exception as err: raise falcon.HTTPError(falcon.HTTP_400, traceback.print_exc(file=sys.stdout), err.args) try: database_connection = get_db_connection() cursor = database_connection.cursor() raw_json = req.stream.read(req.content_length or 0).decode('utf-8') result_dictionary_json = json.loads(raw_json, object_pairs_hook=OrderedDict, encoding='utf-8') order_id = result_dictionary_json['order_id'] old_order_status = result_dictionary_json[ 'current_order_status_code'] old_button_code = 0 desired_status = result_dictionary_json['order_status_code'] # if (desired_status == 'CLEARINGCUSTOMDEPARTURE'): # print("Entering if") # book_status_dict = Tools.CustomStatus(desired_status,old_button_code) # print(book_status_dict) # if book_status_dict == 'STATUSNOTFOUND': # resp.status = falcon.HTTP_204 # resp.body = ("204") # else: # current_booking_status = book_status_dict['current_order_status'] # current_qt_status = book_status_dict['quotation_status'] # cursor.execute("select q.quotation_status\ # from ship_orders o\ # join ship_quotations q ON o.quotation_id = q.quotation_id\ # where order_id = '"+order_id+"'") # row = cursor.fetchone() # if(old_order_status in current_booking_status): # if(row['quotation_status'] in current_qt_status): # else: # resp.status = falcon.HTTP_404 # message = {"Message":"Quotation is not closed. Unable to change status."} # result_json = json.dumps(message) # resp.body = result_json # else: # resp.status = falcon.HTTP_202 # resp.body = ("202") # book_status_dict = Tools.CustomStatus(desired_status,old_button_code) cursor.execute("select o.custom_status_code, c.official_email\ from ship_orders o\ join ship_quotations q ON o.quotation_id = q.quotation_id\ join customers c on o.login_id = c.login_id\ where o.order_id = '" + order_id + "'") row = cursor.fetchone() Tools.ChangeCustomStatus(order_id, desired_status, cursor, database_connection) resp.status = falcon.HTTP_200 message = {"Message": "Status is changed successfully."} result_json = json.dumps(message) resp.body = result_json if (desired_status == 'CARGOCLEAREDDEPARTURE' or desired_status == 'CARGOCLEAREDARRIVAL'): EmailTools.CargoSendingAndCustomClearEmailNotify( row['official_email'], 12) # else: # book_status_list = book_status_dict['current_order_status'] # if(old_order_status in book_status_list): # Tools.ChangeCustomStatus(order_id,desired_status,cursor,database_connection) # resp.status = falcon.HTTP_200 # resp.body = ("200") # else: # resp.status = falcon.HTTP_202 # resp.body = ("202") except ValueError as err: raise falcon.HTTPError(falcon.HTTP_400, traceback.print_exc(file=sys.stdout), err.args) except Exception as err: raise falcon.HTTPError(falcon.HTTP_400, traceback.print_exc(file=sys.stdout), err.args)