Exemplo n.º 1
0
    def on_patch(self, req, resp, login_id, session):
        #Authenticate login id and session availability.
        try:
            if (MemcacheFunctions.IsSessionValid(login_id, session) is False):
                resp.status = falcon.HTTP_401
                Error = {"Reason": "Invalid Login Credentials or Session is Expired"}
                result_json = json.dumps(Error)
                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, 'Error', err.args)
            
        
        try :
            # Reading Json
            raw_json = req.stream.read(req.content_length or 0).decode('utf-8')
            resultdict_json = json.loads(raw_json, object_pairs_hook=OrderedDict, encoding='utf-8')
            # Json value
            quotation_id = resultdict_json['quotation_id']
            old_status = resultdict_json['current_quotation_status']
            desired_status = resultdict_json['quotation_status']
            # Connecting the database
            database_connection = get_db_connection()
            cursor = database_connection.cursor()
            # Check the quotation status
            cursor.execute("select q.quotation_status, l.official_email\
                            from ship_quotations q\
                            join logistic_providers l on q.supplier_login_id = l.login_id\
                            where q.quotation_id = '"+quotation_id+"'")
            row = cursor.fetchone()
            if (cursor.rowcount > 0):
                book_status_dict = Tools.QuotationStatus(desired_status,old_status)
                print(book_status_dict)
                book_status_list = book_status_dict['current_quotation_status']
                if(old_status in book_status_list):
                    index_code = book_status_list.index(old_status)
                    Tools.ChangeQuotationStatus(quotation_id, desired_status,cursor,database_connection)
                    resp.status = falcon.HTTP_200
                    resp.body = ("200")
                    if(desired_status == 'CLOSED'):
                        EmailTools.QTClosedEmailNotify(row['official_email'],quotation_id,10)
                else:
                    resp.status = falcon.HTTP_202
                    resp.body = ("202")
            else:
                resp.status = falcon.HTTP_204
                resp.body = ("204")
        

        except ValueError as err:
            raise falcon.HTTPError(falcon.HTTP_400, traceback.print_exc(file=sys.stdout) , err.args)
        except pymysql.IntegrityError 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)
        finally:
            cursor.close()
            database_connection.close()
Exemplo n.º 2
0
    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()
            # Get dictionary values from passed parameter JSON in list values.
            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')
            # list values contains qtId, qtCurrentStatus and desiredStatus
            list_values = [v for v in result_dictionary_json.values()]
            quotation_id = list_values[0]
            quotation_current_status = list_values[1]
            quotation_desired_status = list_values[2]
            if len(list_values) is 3:
                quotation_status_dict = Tools.QuotationStatus(
                    quotation_desired_status, quotation_current_status)
                quotation_status_list = quotation_status_dict[
                    'current_quotation_status']
                if (quotation_current_status in quotation_status_list):
                    Tools.ChangeQuotationStatus(quotation_id,
                                                quotation_desired_status,
                                                cursor, database_connection)
                    resp.status = falcon.HTTP_200
                    resp.body = ("200")
                else:
                    resp.status = falcon.HTTP_202
                    resp.body = ("202")
            else:
                resp.status = falcon.HTTP_204
                resp.body = ("204")

        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)
        finally:
            cursor.close()
            database_connection.close()