def update_project_tuple(cursor, args, user): try: # inventory storage cursor.execute( 'update inventorystorage set PROJECTNAME = %s, LASTDATE = %s,LASTUSER = %s WHERE PROJECTID=%s', (args['PROJECTNAME'], datetime.datetime.now(), user, args['PROJECTID'])) cursor.execute( 'update inventorystorage set FINISHID = %s, FINISHNAME = %s, LASTDATE = %s,LASTUSER = %s WHERE PROJECTID=%s AND FINISHID != "MILL FINISH" AND FINISHID != "CLEAR ANODIZE"', (args['FINISHID'], args['FINISHNAME'], datetime.datetime.now(), user, args['PROJECTID'])) # buffer purchasing manifest cursor.execute( 'update bufferpurchasingmanifest set PROJECTNAME = %s, LASTDATE = %s,LASTUSER = %s WHERE PROJECTID=%s', (args['PROJECTNAME'], datetime.datetime.now(), user, args['PROJECTID'])) cursor.execute( 'update bufferpurchasingmanifest set FINISHID = %s, FINISHNAME = %s, LASTDATE = %s,LASTUSER = %s WHERE PROJECTID=%s AND FINISHID != "MILL FINISH" AND FINISHID != "CLEAR ANODIZE"', (args['FINISHID'], args['FINISHNAME'], datetime.datetime.now(), user, args['PROJECTID'])) # purchasing manifest cursor.execute( 'update purchasingmanifest set PROJECTNAME = %s, LASTDATE = %s,LASTUSER = %s WHERE PROJECTID=%s', (args['PROJECTNAME'], datetime.datetime.now(), user, args['PROJECTID'])) cursor.execute( 'update purchasingmanifest set FINISHID = %s, FINISHNAME = %s, LASTDATE = %s,LASTUSER = %s WHERE PROJECTID=%s AND FINISHID != "MILL FINISH" AND FINISHID != "CLEAR ANODIZE"', (args['FINISHID'], args['FINISHNAME'], datetime.datetime.now(), user, args['PROJECTID'])) # warehouse manifest cursor.execute( 'update warehousemanifest set PROJECTNAME = %s, LASTDATE = %s,LASTUSER = %s WHERE PROJECTID=%s', (args['PROJECTNAME'], datetime.datetime.now(), user, args['PROJECTID'])) cursor.execute( 'update warehousemanifest set FINISHID = %s, FINISHNAME = %s, LASTDATE = %s,LASTUSER = %s WHERE PROJECTID=%s AND FINISHID != "MILL FINISH" AND FINISHID != "CLEAR ANODIZE"', (args['FINISHID'], args['FINISHNAME'], datetime.datetime.now(), user, args['PROJECTID'])) # rejection cursor.execute( 'update rejection set PROJECTNAME = %s, LASTDATE = %s,LASTUSER = %s WHERE PROJECTID=%s', (args['PROJECTNAME'], datetime.datetime.now(), user, args['PROJECTID'])) cursor.execute( 'update rejection set FINISHID = %s, FINISHNAME = %s, LASTDATE = %s,LASTUSER = %s WHERE PROJECTID=%s AND FINISHID != "MILL FINISH" AND FINISHID != "CLEAR ANODIZE"', (args['FINISHID'], args['FINISHNAME'], datetime.datetime.now(), user, args['PROJECTID'])) # projects cursor.execute( 'update projects set PROJECTNAME = %s, FINISHID = %s, FINISHNAME = %s, LASTDATE = %s,LASTUSER = %s WHERE PROJECTID=%s', (args['PROJECTNAME'], args['FINISHID'], args['FINISHNAME'], datetime.datetime.now(), user, args['PROJECTID'])) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: print(e)
def post(self): try: access_token = authenticator( flask.request.headers.get('Authorization')) Data = flask.request.get_json() s = "SELECT BARCODE,TAG,SHIPMENTDATE,PROJECTID,PROJECTNAME,NBP,ASTRO,KEYMARK,DESCRIPTION,FINISHID,FINISHNAME,LENGTH,QTY,LBFT,NETWEIGHT,NOREX,LOCATION,LOCATIONGRID,MODEL,EASCO,EXTRUDER,NAtoLOC,TAGSTATUS,LASTDATE,LASTUSER,TICKET from emptystorage " query = [] values = [] result = [] if Data['PageNo'] == 1: Data['PageNo'] = 0 else: Data['PageNo'] = (Data['PageNo'] - 1) * 100 cursor = db.cursor() if (Data['BARCODE'] != ""): query.append("BARCODE LIKE %s") values.append("%" + str(Data['BARCODE'] + "%")) if (Data['TAG'] != ""): query.append("TAG LIKE %s") values.append("%" + str(Data['TAG']) + "%") if (Data['SHIPMENTDATE'] != ""): query.append("SHIPMENTDATE LIKE %s") values.append( "%" + str(dateparser.parse(Data['SHIPMENTDATE']).date()) + "%") if (Data['PROJECTID'] != ""): query.append("PROJECTID LIKE %s") values.append(str("%" + Data['PROJECTID'] + "%")) if (Data['PROJECTNAME'] != ""): query.append("PROJECTNAME LIKE %s") values.append(str("%" + Data['PROJECTNAME'] + "%")) if (Data['NBP'] != ""): query.append("NBP LIKE %s") values.append("%" + str(Data['NBP']) + "%") if (Data['ASTRO'] != ""): query.append("ASTRO LIKE %s") values.append(str("%" + Data['ASTRO'] + "%")) if (Data['KEYMARK'] != ""): query.append("KEYMARK LIKE %s") values.append("%" + str(Data['KEYMARK']) + "%") if (Data['DESCRIPTION'] != ""): query.append("DESCRIPTION LIKE %s") values.append("%" + str(Data['DESCRIPTION']) + "%") if (Data['FINISHID'] != ""): query.append("FINISHID LIKE %s") values.append("%" + str(Data['FINISHID']) + "%") if (Data['FINISHNAME'] != ""): query.append("FINISHNAME LIKE %s") values.append("%" + str(Data['FINISHNAME']) + "%") if (Data['LENGTH'] != ""): query.append("LENGTH LIKE %s") values.append("%" + str(Data['LENGTH']) + "%") if (Data['QTY'] != ""): query.append("QTY LIKE %s") values.append("%" + str(Data['QTY']) + "%") if (Data['LBFT'] != ""): query.append("LBFT LIKE %s") values.append("%" + str(Data['LBFT']) + "%") if (Data['NETWEIGHT'] != ""): query.append("%" + "NETWEIGHT LIKE %s" + "%") values.append("%" + str(Data['NETWEIGHT']) + "%") if (Data['NOREX'] != ""): query.append("NOREX LIKE %s") values.append("%" + str(Data['NOREX']) + "%") if (Data['LOCATION'] != ""): query.append("LOCATION LIKE %s") values.append("%" + str(Data['LOCATION']) + "%") if (Data['LOCATIONGRID'] != ""): query.append("LOCATIONGRID LIKE %s") values.append("%" + str(Data['LOCATIONGRID']) + "%") if (Data['MODEL'] != ""): query.append("MODEL LIKE %s") values.append("%" + str(Data['MODEL']) + "%") if (Data['EASCO'] != ""): query.append("EASCO LIKE %s") values.append("%" + str(Data['EASCO']) + "%") if (Data['EXTRUDER'] != ""): query.append("EXTRUDER LIKE %s") values.append("%" + str(Data['EXTRUDER']) + "%") if (Data['NAtoLOC'] != ""): query.append("NAtoLOC LIKE %s") values.append("%" + str(Data['NAtoLOC']) + "%") if (Data['TAGSTATUS'] != ""): query.append("TAGSTATUS LIKE %s") values.append("%" + str(Data['TAGSTATUS']) + "%") if (len(query) != 0): query = ' and '.join([str(x) for x in query]) s = s + "where " + query + " ORDER BY BARCODE LIMIT 100 OFFSET " + str( Data['PageNo']) else: s = s + " ORDER BY BARCODE LIMIT 100 OFFSET " + str( Data['PageNo']) row_count = cursor.execute(s, (values)) row = cursor.fetchall() if (row_count > 0): for i in range(0, row_count): cursor.execute( "SELECT IMAGE from rawvalues where NOREX = %s and LOCATION = %s", (row[i][15], row[i][16])) value = cursor.fetchone() m = { "BARCODE": row[i][0], "TAG": row[i][1], "SHIPMENTDATE": row[i][2], "PROJECTID": row[i][3], "PROJECTNAME": row[i][4], "NBP": row[i][5], "ASTRO": row[i][6], "KEYMARK": row[i][7], "DESCRIPTION": row[i][8], "FINISHID": row[i][9], "FINISHNAME": row[i][10], "LENGTH": row[i][11], "QTY": row[i][12], "LBFT": row[i][13], "NETWEIGHT": row[i][14], "NOREX": row[i][15], "LOCATION": row[i][16], "LOCATIONGRID": row[i][17], "MODEL": row[i][18], "EASCO": row[i][19], "EXTRUDER": row[i][20], "NAtoLOC": row[i][21], "TAGSTATUS": row[i][22], "LASTDATE": row[i][23], "LASTUSER": row[i][24], "TICKET": row[i][25], "IMAGE": value[0] } result.append(m) else: return {"message": "No results found!"}, 404 return (flask.jsonify(result)) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: print(e)
import datetime from flask_jwt import jwt from pymysql import InterfaceError from Config.api import CreateApi from customErrors import ProjectNotFound, NorexNotFound, ColorNotFound, InvalidProjectUpdate db = CreateApi.create_db_connection() tag_inc = 70000 def authenticator(auth): try: auth = auth[2:-1] except TypeError: print(auth) return jwt.decode(auth, 'secret', algorithms='HS256', verify=False) def update_project(cursor, project_id, table, key_name, key, user, Role): # cursor is db.cursor # project_ id is new project id # table is table name # key_name is primary key's name # key is primary key value # user is person who called the function try: key_count = cursor.execute( 'SELECT FINISHNAME,FINISHID from ' + table + ' where ' + key_name +
def put(self): try: access_token = authenticator( flask.request.headers.get('Authorization')) t = datetime.datetime.today().strftime('%Y-%m-%d') parser = reqparse.RequestParser() parser.add_argument('NO', required=True, help='No is Required') parser.add_argument('Status', required=True, help='status is Required') parser.add_argument('Data', required=False) try: args = parser.parse_args() except HTTPException as e: raise BadRequest("Bad Request") cursor = db.cursor() if args['Status'] == 'perfect': try: row_count = cursor.execute( 'select NO,UPLOADDATE,SHIPMENTDATE,EXTRUDER,PROJECTID,PROJECTNAME,NBP,BL,MANIFEST,TICKET,SO,ITEM,ASTRO,KEYMARK,DESCRIPTION,FINISHID,FINISHNAME,LENGTH,QTY,LBFT,NETWEIGHTexcel,NETWEIGHTnorex,NOREX,LOCATION,MODEL,USER,LASTDATE,LASTUSER,REPLACEMENT,FILENAME from bufferpurchasingmanifest where USER = %s', (access_token['UserName'])) row = cursor.fetchall() for i in range(0, row_count): if cursor.execute( 'insert into purchasingmanifest(UPLOADDATE,SHIPMENTDATE,EXTRUDER,PROJECTID,PROJECTNAME,NBP,BL,MANIFEST,TICKET,SO,ITEM,ASTRO,KEYMARK,DESCRIPTION,FINISHID,FINISHNAME,LENGTH,QTY,LBFT,NETWEIGHT,NOREX,LOCATION,MODEL,USER,LASTDATE,LASTUSER,FILENAME) ' 'values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)', (str(row[i][1]), str(row[i][2]), str(row[i][3]), str(row[i][4]), str(row[i][5]), str(row[i][6]), str(row[i][7]), str(row[i][8]), str(row[i][9]), str(row[i][10]), str(row[i][11]), str(row[i][12]), str(row[i][13]), str(row[i][14]), str(row[i][15]), str(row[i][16]), str(row[i][17]), str(row[i][18]), str(row[i][19]), str(row[i][20]), str( row[i][22]), str(row[i][23]), str( row[i][24]), str(row[i][25]), t, access_token['UserName'], str(row[i][29]))) == 0: db.rollback() return {'message', 'please try again'}, 500 if cursor.execute( 'DELETE FROM bufferpurchasingmanifest WHERE USER = %s', access_token['UserName']) == 0: return {'message', 'please try again'}, 500 # Email.email('Manifest uploaded', row, access_token['UserName'], # ['*****@*****.**'], 'manifestUpload') if Log.register(flask.request.headers.get('Authorization'), "Accept manifest", True): db.commit() return {'status': 'perfect'} except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: return {"message": str(e)}, 500 elif args['Status'] == 'editManifest': Data = flask.request.get_json()['Data'] keys = list(Data.keys()) try: for key in keys: if key == "SHIPMENTDATE": row_count = cursor.execute( 'UPDATE purchasingmanifest SET SHIPMENTDATE = %s , LASTDATE = %s , LASTUSER = %s where NO = %s', (dateparser.parse(Data['SHIPMENTDATE']), datetime.datetime.now(), access_token['UserName'], args['NO'])) if key == "TICKET": row_count = cursor.execute( 'UPDATE purchasingmanifest SET TICKET = %s , LASTDATE = %s , LASTUSER = %s where NO = %s', (str(Data['TICKET']), datetime.datetime.now(), access_token['UserName'], args['NO'])) if key == "NBP": row_count = cursor.execute( 'UPDATE purchasingmanifest SET NBP = %s , LASTDATE = %s , LASTUSER = %s where NO = %s', (str(Data['NBP']), datetime.datetime.now(), access_token['UserName'], args['NO'])) if key == "NOREX": q_len = cursor.execute( "select QTY,LENGTH from purchasingmanifest WHERE NO = %s", args['NO']) q = cursor.fetchone() norex_len = cursor.execute( 'SELECT MODEL,DESCRIPTION,LBFT,ASTRO,KEYMARK FROM rawvalues where NOREX = %s AND LOCATION = %s ', (Data['NOREX'], Data['LOCATION'])) norex = cursor.fetchone() if norex_len == 0: raise BadRequest("Norex Not Found") netwt = calculate_netweight(q[0], q[1], norex[2]) row_count = cursor.execute( 'UPDATE purchasingmanifest SET NOREX = %s, LOCATION = %s, MODEL = %s ,DESCRIPTION = %s ,LBFT = %s ,ASTRO = %s ,KEYMARK= %s , NETWEIGHT = %s , LASTDATE = %s , LASTUSER = %s where NO = %s', (Data['NOREX'], Data['LOCATION'], norex[0], norex[1], norex[2], norex[3], norex[4], netwt, datetime.datetime.now(), access_token['UserName'], args['NO'])) if key == "PROJECTID": try: if not update_project( cursor, Data['PROJECTID'], 'purchasingmanifest', 'NO', args['NO'], access_token['UserName'], access_token['Role']): return {'message', 'please try again'}, 500 except ProjectNotFound as e: return {'message': str(e)}, 404 except Exception as e: return {'message': str(e)}, 500 if key == "QTY": cursor.execute( "select LENGTH,NOREX,LOCATION from purchasingmanifest WHERE NO = %s", args['NO']) LEN = cursor.fetchone() cursor.execute( 'SELECT LBFT FROM rawvalues where NOREX = %s AND LOCATION = %s', (LEN[1], LEN[2])) LBFT = cursor.fetchone() netwt = calculate_netweight( Data['QTY'], LEN[0], LBFT[0]) row_count = cursor.execute( 'UPDATE purchasingmanifest SET QTY = %s ,NETWEIGHT = %s, LASTDATE = %s , LASTUSER = %s where NO = %s', (Data['QTY'], netwt, datetime.datetime.now(), access_token['UserName'], args['NO'])) if key == "LENGTH": cursor.execute( "select QTY,NOREX,LOCATION from purchasingmanifest WHERE NO = " + args['NO']) QTY = cursor.fetchone() cursor.execute( 'SELECT LBFT FROM rawvalues where NOREX = ' + QTY[1] + ' AND LOCATION = "' + QTY[2] + '"') LBFT = cursor.fetchone() netwt = float(Data['LENGTH']) * float( QTY[0]) * float(LBFT[0]) / 12 row_count = cursor.execute( 'UPDATE purchasingmanifest SET LENGTH = %s ,NETWEIGHT = %s, LASTDATE = %s , LASTUSER = %s where NO = %s', (str(Data['LENGTH']), str(netwt), datetime.datetime.now(), access_token['UserName'], args['NO'])) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: return {"message": str(e)}, 500 if Log.register(flask.request.headers.get('Authorization'), "Update manifest", True): db.commit() else: raise BadRequest("Try again") try: cursor.execute( 'SELECT NO,UPLOADDATE,SHIPMENTDATE,EXTRUDER,PROJECTID,PROJECTNAME,NBP,BL,MANIFEST,TICKET,SO,ITEM,ASTRO,KEYMARK,DESCRIPTION,FINISHID,FINISHNAME,LENGTH,QTY,LBFT,NETWEIGHT,NOREX,LOCATION,MODEL,USER,LASTDATE,LASTUSER FROM purchasingmanifest where NO = %s', args['NO']) row = cursor.fetchone() return flask.jsonify({ "NO": row[0], "UPLOADDATE": row[1], "SHIPMENTDATE": row[2], "EXTRUDER": row[3], "PROJECTID": row[4], "PROJECTNAME": row[5], "NBP": row[6], "BL": row[7], "MANIFEST": row[8], "TICKET": row[9], "SO": row[10], "ITEM": row[11], "ASTRO": row[12], "KEYMARK": row[13], "DESCRIPTION": row[14], "FINISHID": row[15], "FINISHNAME": row[16], "LENGTH": row[17], "QTY": row[18], "LBFT": row[19], "NETWEIGHT": row[20], "NOREX": row[21], "LOCATION": row[22], "MODEL": row[23], "USER": row[24], "LASTDATE": row[25], "LASTUSER": row[26] }) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: return {"message": str(e)}, 500 except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: print(e)
def delete(self): try: access_token = authenticator( flask.request.headers.get('Authorization')) try: Data = flask.request.get_json() except HTTPException as e: raise BadRequest("Bad Request") cursor = db.cursor() if Data['status'] == 'delete': try: cursor.execute( "DELETE from purchasingmanifest where UPLOADDATE = %s and USER = %s", (dateparser.parse( Data['date']), access_token['UserName'])) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: return {"message": str(e)}, 500 db.commit() elif (Data['status'] == 'addtowarehouse'): try: user_count = cursor.execute( "SELECT NO,UPLOADDATE,SHIPMENTDATE,EXTRUDER,PROJECTID,PROJECTNAME,NBP,BL,MANIFEST,TICKET,SO,ITEM,ASTRO,KEYMARK,DESCRIPTION,FINISHID,FINISHNAME,LENGTH,QTY,LBFT,NETWEIGHT,NOREX,LOCATION,LASTDATE,LASTUSER from purchasingmanifest where UPLOADDATE = %s and USER = %s", (dateparser.parse( Data['date']), access_token['UserName'])) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: return {"message": str(e)}, 500 user = cursor.fetchall() try: for i in range(0, user_count): cursor.execute( 'INSERT into warehousemanifest (UPLOADDATE,SHIPMENTDATE,EXTRUDER,PROJECTID,PROJECTNAME,NBP,BL,MANIFEST,TICKET,SO,ITEM,ASTRO,KEYMARK,DESCRIPTION,FINISHID,FINISHNAME,LENGTH,QTY,LBFT,NETWEIGHT,NOREX,LOCATION,LASTDATE,LASTUSER) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)', (str(user[i][1]), str(user[i][2]), str(user[i][3]), str(user[i][4]), str(user[i][5]), str(user[i][6]), str(user[i][7]), str(user[i][8]), str(user[i][9]), str(user[i][10]), str(user[i][11]), str(user[i][12]), str(user[i][13]), str(user[i][14]), str(user[i][15]), str(user[i][16]), str(user[i][17]), str(user[i][18]), str(user[i][19]), str(user[i][20]), str(user[i][21]), str(user[i][22]), datetime.datetime.now(), str(access_token['UserName']))) cursor.execute( "DELETE from purchasingmanifest where UPLOADDATE = %s and USER = %s", (dateparser.parse( Data['date']), access_token['UserName'])) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: return {"message": str(e)}, 500 db.commit() return ({"message": "success"}) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: print(e)
def get(self): access_token = authenticator( flask.request.headers.get('Authorization')) parser = reqparse.RequestParser() parser.add_argument('date', required=True, help='date is required') try: args = parser.parse_args() except HTTPException as e: raise BadRequest("Bad Request") cursor = db.cursor() if (args['date'] != ''): date = str(dateparser.parse(args['date'])) try: if access_token['Role'] == 'admin': row_count = cursor.execute( "SELECT NO,UPLOADDATE,SHIPMENTDATE,EXTRUDER,PROJECTID,PROJECTNAME,NBP,BL,MANIFEST,TICKET,SO,ITEM,ASTRO,KEYMARK,DESCRIPTION,FINISHID,FINISHNAME,LENGTH,QTY,LBFT,NETWEIGHT,NOREX,LOCATION,MODEL,USER,LASTDATE,LASTUSER FROM purchasingmanifest WHERE UPLOADDATE =%s", dateparser.parse(date)) else: row_count = cursor.execute( "SELECT NO,UPLOADDATE,SHIPMENTDATE,EXTRUDER,PROJECTID,PROJECTNAME,NBP,BL,MANIFEST,TICKET,SO,ITEM,ASTRO,KEYMARK,DESCRIPTION,FINISHID,FINISHNAME,LENGTH,QTY,LBFT,NETWEIGHT,NOREX,LOCATION,MODEL,USER,LASTDATE,LASTUSER FROM purchasingmanifest WHERE UPLOADDATE =%s AND USER = %s", (dateparser.parse(date), access_token['UserName'])) row = cursor.fetchall() message = [] for i in range(0, row_count): message.append({ "NO": row[i][0], "UPLOADDATE": row[i][1], "SHIPMENTDATE": row[i][2], "EXTRUDER": row[i][3], "PROJECTID": row[i][4], "PROJECTNAME": row[i][5], "NBP": row[i][6], "BL": row[i][7], "MANIFEST": row[i][8], "TICKET": row[i][9], "SO": row[i][10], "ITEM": row[i][11], "ASTRO": row[i][12], "KEYMARK": row[i][13], "DESCRIPTION": row[i][14], "FINISHID": row[i][15], "FINISHNAME": row[i][16], "LENGTH": row[i][17], "QTY": row[i][18], "LBFT": row[i][19], "NETWEIGHT": row[i][20], "NOREX": row[i][21], "LOCATION": row[i][22], "MODEL": row[i][23], "USER": row[i][24], "LASTDATE": row[i][25], "LASTUSER": row[i][26] }) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: raise BadRequest(str(e)) return (flask.jsonify(message)) else: try: if access_token['Role'] == 'admin': if cursor.execute( 'select DISTINCT UPLOADDATE,FILENAME from purchasingmanifest' ) == 0: return {'message': 'No manifest found'}, 404 else: row_count = cursor.execute( 'select DISTINCT UPLOADDATE,FILENAME from purchasingmanifest where USER = %s', access_token['UserName']) if row_count == 0: return {'message': 'No manifest found'}, 404 row = cursor.fetchall() message = [] for i in range(0, len(row)): message.append({ "uploadDate": row[i][0], "fileName": row[i][1] }) return flask.jsonify(message) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: return {'message': str(e)}, 500
def post(self): try: flag = 0 try: data = flask.request.get_json() except HTTPException as e: raise BadRequest("Bad Request") cursor = db.cursor() message = [] response = {} replacementProject = [] replacementNorex = [] t = str(datetime.datetime.today().now()) access_token = authenticator( flask.request.headers.get('Authorization')) try: cursor.execute( 'DELETE FROM bufferpurchasingmanifest WHERE USER = %s', access_token['UserName']) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: return {"message": str(e)}, 500 if data['Company'] == "Astro": for i in range(0, len(data['Data'])): try: row = get_rawvalues(cursor, 'ASTRO', data['Data'][i]['Die#']) s = data['Data'][i]['NBP PO#'].split('/ID # ') project = get_project(cursor, s[1]) if data['Data'][i]['rep'] == "1": replacementNorex.append(row[0]) replacementProject.append(s[1]) if data['Data'][i]['Finish'] == 'MILL FINISH' or data[ 'Data'][i]['Finish'] == 'CLEAR ANODIZE': finishid = data['Data'][i]['Finish'] color = data['Data'][i]['Finish'] else: if s[1] == "9999": finishid = get_color(cursor, data['Data'][i]['Finish']) color = data['Data'][i]['Finish'] else: finishid = project[1] color = project[2] netwt = calculate_netweight(data['Data'][i]['Length'], data['Data'][i]['Pcs'], row[4]) if data['Data'][i]['rep'] == "1" and flag == 0: flag = 1 insert_into_buffer_manifest( cursor, t, datetime.datetime.strptime( data['Data'][i]['ShipD'], '%m/%d/%y').date(), "ASTRO", s[1], project[0], s[0], data['Data'][i]['BL#'], data['Data'][i]['Manifest'], data['Data'][i]['Ticket#'], data['Data'][i]['SO#'], data['Data'][i]['Item#'], data['Data'][i]['Die#'], row[6], row[3], finishid, color, data['Data'][i]['Length'], data['Data'][i]['Pcs'], row[4], data['Data'][i]['NetWt'], netwt, row[0], row[2], row[1], access_token['UserName'], t, access_token['UserName'], data['Data'][i]['rep'], data['fileName']) except ColorNotFound as e: return {'message': str(e)}, 404 except ProjectNotFound as e: return {'message': str(e)}, 404 except NorexNotFound as e: return {'message': str(e)}, 404 except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: return {'message': str(e)}, 500 elif data['Company'] == "Keymark": try: for i in range(0, len(data['Data'])): row = get_rawvalues(cursor, 'KEYMARK', data['Data'][i]['DieNum']) if data['Data'][i]['rep'] == "1": replacementNorex.append(row[0]) replacementProject.append( data['Data'][i]['ProjectID']) project = get_project(cursor, data['Data'][i]['ProjectID']) if data['Data'][i][ 'FinishDescrip'] == 'MILL FINISH' or data[ 'Data'][i][ 'FinishDescrip'] == 'CLEAR ANODIZE': finishid = data['Data'][i]['FinishDescrip'] color = data['Data'][i]['FinishDescrip'] else: if data['Data'][i]['ProjectID'] == "9999": finishid = get_color( cursor, data['Data'][i]['FinishDescrip']) color = data['Data'][i]['FinishDescrip'] else: finishid = project[1] color = project[2] netwt = calculate_netweight( data['Data'][i]['LengthInches'], data['Data'][i]['Pcs'], row[4]) if data['Data'][i]['rep'] == "1" and flag == 0: flag = 1 insert_into_buffer_manifest( cursor, t, datetime.datetime.strptime( data['Data'][i]['ShipDt'], '%m/%d/%y').date(), "KEYMARK", data['Data'][i]['ProjectID'], project[0], data['Data'][i]['PONum'], data['Data'][i]['BLNum'], data['Data'][i]['Manifest'], data['Data'][i]['TicketNum'], data['Data'][i]['SONum'], data['Data'][i]['SOItemNum'], row[5], data['Data'][i]['DieNum'], row[3], finishid, color, data['Data'][i]['LengthInches'], data['Data'][i]['Pcs'], row[4], data['Data'][i]['NetWt'], netwt, row[0], row[2], row[1], access_token['UserName'], t, access_token['UserName'], data['Data'][i]['rep'], data['fileName']) except ColorNotFound as e: return {'message': str(e)}, 404 except ProjectNotFound as e: return {'message': str(e)}, 404 except NorexNotFound as e: return {'message': str(e)}, 404 except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: return {'message': str(e)}, 500 else: try: for i in range(0, len(data['Data'])): if data['Data'][i]['rep'] == "1": replacementNorex.append(data['Data'][i]['NOREX']) replacementProject.append( data['Data'][i]['ProjectID']) if cursor.execute( 'select NOREX,MODEL,LOCATION,DESCRIPTION,LBFT,KEYMARK,ASTRO from rawvalues where NOREX= %s AND LOCATION = %s', (data['Data'][i]['NOREX'], data['Data'][i]['LOCATION'])) == 0: return { "message": "Can not find NOREX: " + data['Data'][i]['NOREX'] + ", LOCATION: " + data['Data'][i]['LOCATION'] }, 404 row = cursor.fetchone() project = get_project(cursor, data['Data'][i]['ProjectID']) if data['Data'][i][ 'FinishDescrip'] == 'MILL FINISH' or data[ 'Data'][i][ 'FinishDescrip'] == 'CLEAR ANODIZE': finishid = data['Data'][i]['FinishDescrip'] color = data['Data'][i]['FinishDescrip'] else: if data['Data'][i]['ProjectID'] == "9999": finishid = get_color( cursor, data['Data'][i]['FinishDescrip']) color = data['Data'][i]['FinishDescrip'] else: finishid = project[1] color = project[2] netwt = calculate_netweight( data['Data'][i]['LengthInches'], data['Data'][i]['Pcs'], row[4]) if data['Data'][i]['rep'] == "1" and flag == 0: flag = 1 if cursor.execute( 'insert into bufferpurchasingmanifest(UPLOADDATE,SHIPMENTDATE,EXTRUDER,PROJECTID,PROJECTNAME,NBP,BL,MANIFEST,TICKET,SO,ITEM,KEYMARK,ASTRO,DESCRIPTION,FINISHID,FINISHNAME,LENGTH,QTY,LBFT,NETWEIGHTexcel,NETWEIGHTnorex,NOREX,LOCATION,MODEL,USER,LASTDATE,LASTUSER,REPLACEMENT,FILENAME)' ' values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)', (t, datetime.datetime.strptime( data['Data'][i]['ShipDt'], '%m/%d/%y').date(), data['Company'], data['Data'][i]['ProjectID'], project[0], data['Data'][i]['PONum'], data['Data'][i]['BLNum'], data['Data'][i]['Manifest'], data['Data'][i]['TicketNum'], data['Data'][i]['SONum'], data['Data'][i]['SOItemNum'], row[5], row[6], row[3], finishid, color, data['Data'][i]['LengthInches'], data['Data'][i]['Pcs'], row[4], data['Data'][i]['NetWt'], netwt, row[0], row[2], row[1], access_token['UserName'], t, access_token['UserName'], data['Data'][i]['rep'], data['fileName'])) == 0: db.rollback() return {'message': 'try again'}, 500 except ColorNotFound as e: return {'message': str(e)}, 404 except ProjectNotFound as e: return {'message': str(e)}, 404 except NorexNotFound as e: return {'message': str(e)}, 404 except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: raise BadRequest(str(e)) if flag == 0: try: response["state"] = "manifestData" response["data"] = get_from_buffer_manifest( cursor, access_token['UserName'], False) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: raise BadRequest(str(e)) else: response["replacement"] = get_from_buffer_manifest( cursor, access_token['UserName'], True) response["rejection"] = get_rejection_for_replacement( cursor, replacementProject, replacementNorex) response["state"] = "reject" y = Log.register( flask.request.headers.get('Authorization'), "new manifest added of " + data['Company'] + " Extruder(filename:%s)" % data['fileName'], True) if y: db.commit() else: return {"message": "Try again"}, 500 return (flask.jsonify(response)) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: print(e)
def get(self): try: x = request.headers.get('Authorization') try: x = x[2:-1] except TypeError: print(x) access_token = jwt.decode(x, 'secret', algorithms='HS256', verify=False) user = request.args.get('user') print(user) if (user == ""): admin = [] war = [] pur = [] warehouseworker = [] engineering = [] sawcutter = [] cursor = db.cursor() admin_count = cursor.execute( "SELECT UserName from users where ROLE ='admin'") ad = cursor.fetchall() for i in range(0, admin_count): admin.append(ad[i]) war_count = cursor.execute( "SELECT UserName from users where ROLE ='warehouse'") wa = cursor.fetchall() for i in range(0, war_count): war.append(wa[i]) pur_count = cursor.execute( "SELECT UserName from users where ROLE ='purchasing'") pu = cursor.fetchall() for i in range(0, pur_count): pur.append(pu[i]) warwor_count = cursor.execute( "SELECT UserName from users where ROLE ='materialHandler'") wawor = cursor.fetchall() for i in range(0, warwor_count): warehouseworker.append(wawor[i]) eng_count = cursor.execute( "SELECT UserName from users where ROLE ='engineering'") eng = cursor.fetchall() for i in range(0, eng_count): engineering.append(eng[i]) saw_count = cursor.execute( "SELECT UserName from users where ROLE ='sawcutter'") saw = cursor.fetchall() for i in range(0, saw_count): sawcutter.append(saw[i]) message = { 'admin': admin, 'warehouse': war, 'purchasing': pur, 'warehouseworker': warehouseworker, 'engineering': engineering, 'sawcutter': sawcutter } return message else: message = [] cursor = db.cursor() row_count = cursor.execute( 'SELECT DATE,TIME,USER,ACTION from logs where USER = %s', (str(user))) row = cursor.fetchall() print(row_count) for i in range(0, row_count): message.append({ "DATE": row[i][0], "TIME": str(row[i][1]), "USER": row[i][2], "ACTION": row[i][3] }) return flask.jsonify(message) except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: print(e)
from flask import render_template from flask_mail import Message from Config.api import CreateApi db = CreateApi.create_db_connection() mail = CreateApi.get_email() class Email(): def email(subject, body, user, email, template): if template == 'email': msg = Message(subject=subject, sender='*****@*****.**', recipients=email) msg.html = render_template('email.html', user=user, body=body) mail.send(msg) return True elif template == 'exceptionInQty': msg = Message(subject=subject, sender='*****@*****.**', recipients=email) msg.html = render_template('exceptionQty.html', user=user, body=body) mail.send(msg) return True elif template == 'manifestUpload': msg = Message(subject=subject, sender='*****@*****.**', recipients=email) msg.html = render_template('manifestUpload.html', user=user, body=body) mail.send(msg) return True
def put(self): access_token = authenticator(request.headers.get('Authorization')) try: parser = reqparse.RequestParser() parser.add_argument('NOREX') parser.add_argument('LOCATION') parser.add_argument('ASTRO') parser.add_argument('KEYMARK') parser.add_argument('EASCO') parser.add_argument('WINSYS') parser.add_argument('DESCRIPTION') parser.add_argument('MODEL') parser.add_argument('LBFT') parser.add_argument('SH') parser.add_argument('CAVITY') parser.add_argument('IMAGE') args = parser.parse_args() cursor = db.cursor() cursor.execute( 'UPDATE rawvalues SET ASTRO = %s , KEYMARK = %s , EASCO = %s ,WINSYS = %s , DESCRIPTION = %s , MODEL = %s , LBFT = %s , SH = %s , CAVITY = %s , IMAGE = %s , LASTDATE = %s ,LASTUSER = %s WHERE NOREX = %s AND LOCATION = %s', (args['ASTRO'], args['KEYMARK'], args['EASCO'], args['WINSYS'], args['DESCRIPTION'], args['MODEL'], args['LBFT'], args['SH'], args['CAVITY'], args['IMAGE'], str(datetime.datetime.now()), access_token['UserName'], args['NOREX'], args['LOCATION'])) cursor.execute( 'update bufferpurchasingmanifest set ASTRO=%s , KEYMARK=%s,DESCRIPTION = %s, MODEL = %s, LBFT = %s , LASTDATE = %s ,LASTUSER = %s ,NETWEIGHTnorex=QTY*LENGTH*(%s)/12 WHERE NOREX = %s AND LOCATION = %s', (args['ASTRO'], args['KEYMARK'], args['DESCRIPTION'], args['MODEL'], args['LBFT'], str( datetime.datetime.now()), access_token['UserName'], args['LBFT'], args['NOREX'], args['LOCATION'])) cursor.execute( 'update purchasingmanifest set ASTRO=%s , KEYMARK=%s,DESCRIPTION = %s, MODEL = %s, LBFT = %s , LASTDATE = %s ,LASTUSER = %s ,NETWEIGHT=(QTY*LENGTH*(%s)/12) WHERE NOREX = %s AND LOCATION = %s', (args['ASTRO'], args['KEYMARK'], args['DESCRIPTION'], args['MODEL'], args['LBFT'], str( datetime.datetime.now()), access_token['UserName'], args['LBFT'], args['NOREX'], args['LOCATION'])) cursor.execute( 'update warehousemanifest set ASTRO=%s , KEYMARK=%s,DESCRIPTION = %s, LBFT = %s , LASTDATE = %s ,LASTUSER = %s, NETWEIGHT=(QTY*LENGTH*(%s)/12) WHERE NOREX = %s AND LOCATION = %s', (args['ASTRO'], args['KEYMARK'], args['DESCRIPTION'], args['LBFT'], str( datetime.datetime.now()), access_token['UserName'], args['LBFT'], args['NOREX'], args['LOCATION'])) cursor.execute( 'update inventorystorage set ASTRO=%s , KEYMARK=%s,DESCRIPTION = %s, MODEL = %s, LBFT = %s , LASTDATE = %s ,LASTUSER = %s ,NETWEIGHT=(QTY*LENGTH*(%s)/12) WHERE NOREX = %s AND LOCATION = %s', (args['ASTRO'], args['KEYMARK'], args['DESCRIPTION'], args['MODEL'], args['LBFT'], str( datetime.datetime.now()), access_token['UserName'], args['LBFT'], args['NOREX'], args['LOCATION'])) if Log.register( request.headers.get('Authorization'), 'NOREX updated with with NOREXID: %s ,LOCATION: %s,ASTRO: %s,KEYMARK: %s,EASCO: %s,WINSYS: %s,DESCRIPTION: %s,MODEL: %s,LBFT: %s,SH: %s,CAVITY: %s,' % (args['NOREX'], args['LOCATION'], args['ASTRO'], args['KEYMARK'], args['EASCO'], args['WINSYS'], args['DESCRIPTION'], args['MODEL'], args['LBFT'], args['SH'], args['CAVITY']), True): db.commit() return {'Message': 'Successful'} else: db.rollback() return { "message": "Some error occurred,Please try again!" }, 500 except InterfaceError as e: CreateApi.reAssignDb() print(e) except Exception as e: db.rollback() return {'message': str(e)}, 500