Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
 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