Пример #1
0
def deletenotification(userid, entityid, name, uid, recordtodelete):
    con, cur = db.mydbopncon()

    if recordtodelete == 'both' or recordtodelete == 'master':
        command = cur.mogrify(
            "DELETE FROM notifimaster WHERE nfmuserid = %s AND nfmentityid = %s AND nfname= %s AND nfmid = %s;",
            (
                userid,
                entityid,
                name,
                uid,
            ))
        cur, dbqerr = db.mydbfunc(con, cur, command)
        print(dbqerr['natstatus'])
        if cur.closed == True:
            if (dbqerr['natstatus'] == "error"
                    or dbqerr['natstatus'] == "warning"):
                dbqerr['statusdetails'] = "loginuser Fetch failed"
            db.mydbcloseall(con, cur)
            resp = make_response(jsonify(dbqerr), 400)
            return (resp)
        else:
            pass

    if recordtodelete == 'both' or recordtodelete == 'notiuser':
        command = cur.mogrify(
            "DELETE FROM notifiuser WHERE nfuuserid = %s AND nfuentityid = %s AND nfuname= %s AND nfumid = %s;",
            (
                userid,
                entityid,
                name,
                uid,
            ))
        cur, dbqerr = db.mydbfunc(con, cur, command)
        print(dbqerr['natstatus'])
        if cur.closed == True:
            if (dbqerr['natstatus'] == "error"
                    or dbqerr['natstatus'] == "warning"):
                dbqerr['statusdetails'] = "loginuser Fetch failed"
            db.mydbcloseall(con, cur)
            resp = make_response(jsonify(dbqerr), 400)
            return (resp)
        else:
            pass

    con.commit()
    db.mydbcloseall(con, cur)
Пример #2
0
def chkifalldone(con,cur,command,lazyloadid,userid,entityid):                
    command = cur.mogrify("select count(*) FROM notifiuser WHERE nfuuserid = %s AND nfuentityid = %s AND nfulazyldidstatus != 'S' and nfulazyldid = %s;",(userid,entityid,lazyloadid,) )
    print('--------------------------------')
    print(command)
    cur, dbqerr = db.mydbfunc(con,cur,command)
    record=cur.fetchall()                        
    print(record[0][0])
    print('--------------------------------')
    if record:          
        return  lazyloadid
    else:
        return ''
Пример #3
0
def getuserstatus(userid, entityid):
    #This is to be moved to a configurable place
    #conn_string = "host='localhost' dbname='postgres' user='******' password='******'"
    #This is to be moved to a configurable place
    #con=psycopg2.connect(conn_string)
    #cur = con.cursor()
    print('inside getuserstatus')
    con, cur = db.mydbopncon()
    print('inside getuserstatus')
    command = cur.mogrify(
        "SELECT lguserstatus FROM userlogin WHERE lguserid = %s AND lgentityid = %s;",
        (
            userid,
            entityid,
        ))
    print(command)
    cur, dbqerr = db.mydbfunc(con, cur, command)
    print(cur)
    print(dbqerr)
    print(type(dbqerr))
    print(dbqerr['natstatus'])
    if cur.closed == True:
        if (dbqerr['natstatus'] == "error"
                or dbqerr['natstatus'] == "warning"):
            dbqerr['statusdetails'] = "Userstatus Fetch failed"
        resp = make_response(jsonify(dbqerr), 400)
        return (resp)
    else:
        pass

    records = []
    for record in cur:
        print('inside for')
        print(record)
        records.append(record)

    if len(records) == 1:
        db.mydbcloseall(con, cur)
        print('returning record :', records[0][0])
        return records[0][0]
    else:
        dbqerr['statusdetails'] = "Userstatus Fetch returned no records"
        dbqerr['natstatus'] == "error"
        db.mydbcloseall(con, cur)
        resp = make_response(jsonify(dbqerr), 400)
        return (resp)
Пример #4
0
def updatenotificationstatus(userid, entityid, uid):
    con, cur = db.mydbopncon()

    command = cur.mogrify(
        "UPDATE notifiuser SET nfustatus = 'C', nfulmtime = CURRENT_TIMESTAMP WHERE nfuuserid = %s AND nfuentityid = %s AND nfumid = %s;",
        (
            userid,
            entityid,
            uid,
        ))
    cur, dbqerr = db.mydbfunc(con, cur, command)
    print(dbqerr['natstatus'])
    if cur.closed == True:
        if (dbqerr['natstatus'] == "error"
                or dbqerr['natstatus'] == "warning"):
            dbqerr['statusdetails'] = "pf Fetch failed"
            resp = make_response(jsonify(dbqerr), 400)
            return (resp)
    con.commit()
    print(cur)
    print('consider insert or update is successful')
    db.mydbcloseall(con, cur)
Пример #5
0
def mainnotification():
#This is called by notification service
    if request.method=='OPTIONS':
        print("inside notification options")
        return 'ok'

    elif request.method=='GET':
        print("inside notification GET")
        print((request))
        lazyloadid=request.args.get('lazldid')
        print('value of lazyload',lazyloadid)
        module=request.args.get('module')
        print('value of module',module)
        userid,entityid = jwtdecode.validatetoken(request)        
        print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
        

        #This is to be moved to a configurable place
        #conn_string = "host='localhost' dbname='postgres' user='******' password='******'"
        #This is to be moved to a configurable place
        #con=psycopg2.connect(conn_string)
        #cur = con.cursor()

        con,cur=db.mydbopncon()
        print(lazyloadid)
    

        if module == 'signin':

            print('inside sigin')
            #move this code inside notificationprocessing
            '''
            r = requests.post("http://0.0.0.0:8001/notiprocess", data=json.dumps({'module':'signin','lazyloadid': lazyloadid,'userid':userid,'entityid':entityid}))
            print(r.text)
            #isnotiusrup2dt=cknotiusrup2dt(userid,entityid,con,cur)
            #start the processing multiprocess      
            '''      
            
            return 'ok'

        elif module == 'dashboard':
            print('inside dashboard')
            if lazyloadid =='':
                lazyloadid = datetime.now().strftime('%Y%m%d%H%M%S')
                print(lazyloadid)
            
            #Calling notiprocess to start processing
            rt=np.notiprocess(module,lazyloadid,userid,entityid)
            
            '''
            # to be deleted this is for testing only
            isnotiusrup2dt=np.cknotiusrup2dt('dashboard',userid,entityid,con,cur)
            command = cur.mogrify("UPDATE notifiuser SET nfulazyldid = %s,  nfulazyldidstatus = 'P';",(lazyloadid,))
            print(command)
            cur, dbqerr = db.mydbfunc(con,cur,command)
            con.commit()
            print('commiting notifiuser')
            time.sleep(10)
            # to be deleted this is for testing only
            '''
        elif lazyloadid != 'dashboard' or lazyloadid != 'signin':
            pass

        #command=command1
        command = cur.mogrify("select json_agg(c) from (SELECT nfumid,nfumessage,nfumsgtype,nfunxtactmsg,nfunxtactnavdest FROM notifiuser WHERE nfuuserid = %s AND nfuentityid = %s AND nfuscreenid='dashboard' AND nfustatus = 'C' and nfulazyldidstatus != 'S' and nfulazyldid = %s) as c;",(userid,entityid,lazyloadid) )
        #command = cur.mogrify(";",(userid,entityid,lazyloadid) )
        print(command)
        cur, dbqerr = db.mydbfunc(con,cur,command)
        rowcount = cur.rowcount
        print(rowcount)
        if rowcount != 0:
            records=[]
            for record in cur:  
                print('inside for')
                print(record) 
                print(record[0]) 
                print(json.dumps(record[0]))            
                records.append(record[0])     
            #this is to be returned start
            print(records[0])
            print(json.dumps(records[0]))
            notifyrecrods=records[0]
            #this is to be returned end
            print('going into ')
            if record[0]:
                for key in records[0]:
                    value=key['nfumid']
                    print(type(value))
                    qryst = value + """','"""
                qryst=qryst[:-3]
            #qryst="""'"""+qryst+"""'"""
                print(qryst)
                print(type(qryst))
                hvrecordstosend = True     
            elif record[0]==0:
                hvrecordstosend = False                
            else:
                hvrecordstosend = False
                #lazyloadid=chkifalldone(con,cur,command,lazyloadid,userid,entityid)

       
        print(userid)
        print(lazyloadid)
        print(hvrecordstosend)
        if hvrecordstosend == True:
            command = cur.mogrify("UPDATE notifiuser SET nfulazyldidstatus = 'S' WHERE nfuuserid = %s AND nfuentityid = %s AND nfumid in (%s) and nfulazyldid = %s",(userid,entityid,qryst,lazyloadid,) )
            print(command)
            print('after final lazid update')               
            cur, dbqerr = db.mydbfunc(con,cur,command)
            print(dbqerr['natstatus'])
            if cur.closed == True:
                if(dbqerr['natstatus'] == "error" or dbqerr['natstatus'] == "warning"):
                    dbqerr['statusdetails']="pf Fetch failed"
                resp = make_response(jsonify(dbqerr), 400)
                return(resp)
            con.commit()                  
            print(cur)
            print('consider insert or update is successful')
        else:
            pass       
        

        lazyloadid=chkifalldone(con,cur,command,lazyloadid,userid,entityid)
        print(notifyrecrods,'for lazyldid',lazyloadid)
    db.mydbcloseall(con,cur)
    return json.dumps({'data':notifyrecrods,'lazyloadid':lazyloadid})
Пример #6
0
def cknotiusrup2dt(screenid, userid, entityid, con, cur):
    print('inside cknotiusrup2dt')
    command = cur.mogrify(
        "select distinct nfuoctime from notifiuser where nfuuserid = %s and nfuentityid = %s;",
        (
            userid,
            entityid,
        ))
    cur, dbqerr = db.mydbfunc(con, cur, command)
    print(cur)
    print(dbqerr)
    print(type(dbqerr))
    print(dbqerr['natstatus'])
    rowcount = cur.rowcount

    if rowcount != 0:
        records = []
        for record in cur:
            print('inside for')
            print(record)
            records.append(record)
        datetimenf, = records[0]

    elif rowcount == 0:
        #just to make sure the if condition fails
        datetimenf = datetime.now() - timedelta(1)
    else:
        pass

    print('current time : ', datetime.utcnow().date())
    print('datetimemnf', datetimenf.date())
    if datetimenf.date() == datetime.utcnow().date():
        print('notification user table is done today')

        #delete entries in notiuser that are changed in master after the previous run of this code today
        #command = cur.mogrify("DELETE FROM notifiuser WHERE nfuuserid = %s AND nfuentityid = %s ",(userid,entityid,))
        query = "DELETE FROM notifiuser WHERE nfuuserid = %s AND nfuentityid = %s "
        query = query + "AND nfuname IN (SELECT DISTINCT(nfname) FROM notifimaster WHERE nfmuserid IN (%s,'ALL') AND nfmentityid = %s "
        query = query + "AND nfmlmtime > (SELECT nfuoctime FROM notifiuser WHERE nfuuserid IN (%s,'ALL') AND nfuentityid = %s ORDER BY nfuoctime DESC LIMIT 1) )"
        command = cur.mogrify(query, (
            userid,
            entityid,
            userid,
            entityid,
            userid,
            entityid,
        ))

        print(command)
        cur, dbqerr = db.mydbfunc(con, cur, command)
        print(cur)
        print(dbqerr)
        print(type(dbqerr))
        print(dbqerr['natstatus'])

        if cur.closed == True:
            if (dbqerr['natstatus'] == "error"
                    or dbqerr['natstatus'] == "warning"):
                dbqerr['statusdetails'] = "usernotify delete failed"
            resp = make_response(jsonify(dbqerr), 400)
            return (resp)
        con.commit()
        print(cur)
        print('consider delete is successful')

        #notification user table is done today so no action required
        query = "INSERT INTO notifiuser (nfumid,nfuname,nfuuserid,nfuscreenid,nfumessage,nfumsgtype,nfprocessscope,nfuhvnxtact,nfunxtactmsg,nfunxtactnavtyp,nfunxtactnavdest,nfulazyldidstatus,nfustatus,nfuprocesbypgldsvc,nfutodayshowncount,nfuoctime,nfulmtime,nfuentityid) "
        query = query + "(SELECT nfmid,nfname,nfmuserid,nfmscreenid,nfmessage,nfmsgtype,nfmprocessscope,nfmnxtact,nfmnxtactmsg,nfmnxtactnavtyp,nfmnxtactnavdest,'N','P','Y',0,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,%s"
        query = query + "FROM notifimaster WHERE nfmuserid IN (%s,'ALL') AND nfmentityid = %s "
        query = query + "AND nfmlmtime > (SELECT nfuoctime FROM notifiuser WHERE nfuuserid IN (%s,'ALL') AND nfuentityid = %s ORDER BY nfuoctime DESC LIMIT 1) "
        query = query + "AND nfname NOT IN (SELECT DISTINCT(nfuname) FROM notifiuser WHERE nfuuserid IN (%s,'ALL') AND nfuentityid = %s) )"
        command = cur.mogrify(query, (
            entityid,
            userid,
            entityid,
            userid,
            entityid,
            userid,
            entityid,
        ))

    else:
        print('inside else')
        #notification user table is old, create from master now
        command = cur.mogrify(
            "DELETE FROM notifiuser WHERE nfuuserid = %s AND nfuentityid = %s",
            (
                userid,
                entityid,
            ))
        print(command)
        cur, dbqerr = db.mydbfunc(con, cur, command)
        print(cur)
        print(dbqerr)
        print(type(dbqerr))
        print(dbqerr['natstatus'])

        if cur.closed == True:
            if (dbqerr['natstatus'] == "error"
                    or dbqerr['natstatus'] == "warning"):
                dbqerr['statusdetails'] = "usernotify delete failed"
            resp = make_response(jsonify(dbqerr), 400)
            return (resp)
        con.commit()
        print(cur)
        print('consider delete is successful')

        query = "INSERT INTO notifiuser (nfumid,nfuname,nfuuserid,nfuscreenid,nfumessage,nfumsgtype,nfprocessscope,nfuhvnxtact,nfunxtactmsg,nfunxtactnavtyp,nfunxtactnavdest,nfulazyldidstatus,nfustatus,nfutodayshowncount,nfuoctime,nfulmtime,nfuentityid) "
        query = query + "(SELECT nfmid,nfname,nfmuserid,nfmscreenid,nfmessage,nfmsgtype,nfmprocessscope,nfmnxtact,nfmnxtactmsg,nfmnxtactnavtyp,nfmnxtactnavdest,'N','P',0,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,%s "
        query = query + "FROM notifimaster WHERE nfmuserid IN (%s,'ALL') AND nfmentityid = %s)"
        command = cur.mogrify(query, (
            entityid,
            userid,
            entityid,
        ))

    print(command)
    cur, dbqerr = db.mydbfunc(con, cur, command)
    print(cur)
    print(dbqerr)
    print(type(dbqerr))
    print(dbqerr['natstatus'])

    if cur.closed == True:
        if (dbqerr['natstatus'] == "error"
                or dbqerr['natstatus'] == "warning"):
            dbqerr['statusdetails'] = "pf Fetch failed"
        resp = make_response(jsonify(dbqerr), 400)
        return (resp)

    con.commit()
    print(cur)
    print('consider insert or update is successful')

    #Update nfprocessscope = P records as topick for processing and not sent to ui as part of lazyid yet START
    query = "UPDATE notifiuser SET nfustatus = 'P' WHERE nfuuserid = %s AND nfuentityid = %s AND nfuscreenid = %s AND nfprocessscope IN ('P');"
    command = cur.mogrify(query, (userid, entityid, screenid))

    print(command)
    cur, dbqerr = db.mydbfunc(con, cur, command)
    print(cur)
    print(dbqerr)
    print(type(dbqerr))
    print(dbqerr['natstatus'])

    if cur.closed == True:
        if (dbqerr['natstatus'] == "error"
                or dbqerr['natstatus'] == "warning"):
            dbqerr['statusdetails'] = "pf Fetch failed"
        resp = make_response(jsonify(dbqerr), 400)
        return (resp)

    con.commit()
    print(cur)
    print('consider insert or update is successful')
    #Update nfprocessscope = P records as topick for processing and not sent to ui as part of lazyid yet END

    print('cknotiusrup2dt completed')
    return True
Пример #7
0
def notiprocess(module, lazyloadid, userid, entityid):
    #pending logics to be written
    #This is called by notification service
    print("inside notiprocessing")

    lazyloadid = lazyloadid
    screenid = module
    userid = userid
    entityid = entityid
    print('value of lazyload', lazyloadid)
    print('value of screenid', screenid)
    print('value of userid', userid)
    print('value of entityid', entityid)

    print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

    #This is to be moved to a configurable place
    #conn_string = "host='localhost' dbname='postgres' user='******' password='******'"
    #This is to be moved to a configurable place
    #con=psycopg2.connect(conn_string)
    #cur = con.cursor()

    con, cur = db.mydbopncon()
    print(lazyloadid)
    isnotiusrup2dt = cknotiusrup2dt(screenid, userid, entityid, con, cur)

    if screenid == 'signin':
        pass
        '''            
        #processes day and session items here
        print('inside sigin')

        #start the processing multiprocess
        
        #QUERY THAT FETCHES ALL TO BE PROCESSED.  PASS nfuuid,nfuuserid,nfuentityid TO THE SPAWNED PROCESS TO PROCESS THEM
        command = cur.mogrify("SELECT nfuuid,nfuuserid,nfuentityid FROM notifiuser WHERE nfustatus = 'P' AND nfprocessscope IN ('D','S') AND nfuuserid = %s AND nfuentityid = %s;" ,(userid,entityid,))
        cur, dbqerr = db.mydbfunc(con,cur,command)
        print(cur)
        print(dbqerr)
        print(type(dbqerr))
        print(dbqerr['natstatus'])
        if cur.closed == True:
            if(dbqerr['natstatus'] == "error" or dbqerr['natstatus'] == "warning"):
                dbqerr['statusdetails']="loginuser Fetch failed"
            resp = make_response(jsonify(dbqerr), 400)
            return(resp)
        else:
            pass
        
        records=[]
        for record in cur:  
            print('inside for')
            print(record)             
            records.append(record)

        print(len(records))

        if len(records) == 0:
            #NO RECORDS TO PROCESS
            pass
        else:
            #HAVE RECORDS TO PROCESS   
            pass        


        #start the processing multiprocess      
            
            
        #return 'ok'
        '''

    elif screenid == 'dashboard':
        #process the everypage load items + Newly added day and session(flag to find this is nfuprocesbypgldsvc = 'Y')
        print('inside dashboard')

        command = cur.mogrify(
            "UPDATE notifiuser SET nfulazyldid = %s, nfulazyldidstatus = 'N' WHERE nfuuserid = %s AND nfuentityid = %s AND nfuscreenid = %s;",
            (
                lazyloadid,
                userid,
                entityid,
                screenid,
            ))
        #command1 = cur.mogrify("select json_agg(c) from (SELECT nfuuid,nfumessage,nfumsgtype FROM notifiuser WHERE nfuuserid = %s AND nfuentityid = %s AND nfuscreenid='dashboard' AND nfustatus = 'C' and nfulazyldid = %s) as c;",(userid,entityid,lazyloadid) )
        print(command)
        print('after lazid update')
        cur, dbqerr = db.mydbfunc(con, cur, command)
        print(dbqerr['natstatus'])
        if cur.closed == True:
            if (dbqerr['natstatus'] == "error"
                    or dbqerr['natstatus'] == "warning"):
                dbqerr['statusdetails'] = "pf Fetch failed"
            resp = make_response(jsonify(dbqerr), 400)
            return (resp)
        con.commit()
        print(cur)
        print('consider insert or update is successful')

        # Send the response back and continue processing

        #start the processing multiprocess START
        #QUERY THAT FETCHES ALL TO BE PROCESSED.  PASS nfuuid,nfuuserid,nfuentityid TO THE SPAWNED PROCESS TO PROCESS THEM

        cmdqry = "SELECT nfumid,nfuname,nfuuserid,nfuentityid FROM notifiuser WHERE nfustatus = 'P' AND nfprocessscope NOT IN ('D','S') AND nfuuserid = %s AND nfuentityid = %s"
        cmdqry = cmdqry + " UNION "
        cmdqry = cmdqry + "SELECT nfumid,nfuname,nfuuserid,nfuentityid FROM notifiuser WHERE nfustatus = 'P' AND nfprocessscope IN ('D','S') AND nfuprocesbypgldsvc = 'Y' AND nfuuserid = %s AND nfuentityid = %s;"

        command = cur.mogrify(cmdqry, (
            userid,
            entityid,
            userid,
            entityid,
        ))
        print(command)
        cur, dbqerr = db.mydbfunc(con, cur, command)
        rowcount = cur.rowcount

        records = []
        if rowcount != 0:
            for record in cur:
                print('inside for')
                print(record)
                records.append(record)
        print(records)
        if len(records) != 0:
            jobs = []
            for i in records:
                uid, name, userid, entityid = i
                print('uid :', uid, 'name :', name, ' userid : ', userid,
                      ' entityid : ', entityid)
                #prosta=notiprocessingfunctions(uid,name,userid,entityid)
                p = multiprocessing.Process(name=name,
                                            target=notiprocessingfunctions,
                                            args=(
                                                uid,
                                                name,
                                                userid,
                                                entityid,
                                            ))
                jobs.append(p)
                p.start()
                p.join()
        #start the processing multiprocess END

    elif lazyloadid != 'dashboard' or lazyloadid != 'signin':
        pass
    print('returning ok while i still process')
    db.mydbcloseall(con, cur)
    return True