示例#1
0
def requestPost():
    #print (request)
    #print (request.is_json)
    myRequest = request.get_json()
    #print (myRequest)
    #myMemberId = 10067

    if not (util.isDict(myRequest)):
        return jsonify({
            "Status":
            "Error",
            "Message":
            "Invalid argument {arg} passed, argument must be type of dictionary !!!"
            .format(arg=myRequest)
        })

    try:
        if ("Request" not in myRequest) or ("Header"
                                            not in myRequest['Request']) or (
                                                'MainArg'
                                                not in myRequest['Request']):
            return jsonify({"Status": "Error", "Message": "Key error"})
    except Exception as error:
        return jsonify({
            "Status": "Error",
            "Message": "error {error}".format(error=error.message)
        })

    app.logger.debug('got request {request}'.format(request=myRequest))
    factory = Factory()
    #print(myRequest)
    MemberData = factory.processRequest(myRequest)
    return jsonify(MemberData)
示例#2
0
    def __init__(self):

        print('initializing')

        testDataFile = os.path.join(os.getenv('UCONNECT_HOME'), '..\\MongoDb\\json\\MemberTestData.json')
        templateFile = os.path.join(os.getenv('UCONNECT_CONFIG'),'template.json')
        self.myRegScreen = 'Registration'
        self.myRegAction = 'RegisterEntity'
        self.myGenSecAction = 'GenerateSecCode'
        self.mySecValidateAction = 'ValidateSecCode'
        self.testData = []
        self.template = {}

        self.factory = Factory()
        self.mongo = MongoDB()
        
        self.testData = self.__loadJsonFile(testDataFile)
        self.template = self.__loadJsonFile(templateFile)
        self.requestTemplate = self.template['Request']
示例#3
0
    def __init__(self):
        ''' 
            Description:    Initialization internal method, called internally
            usage:          Called internally
            Return:         N/A
        '''        
        self.factory = Factory()
        self.util = Utility()
        self.mongo = MongoDB()
        self.globaL = Global()
        self.sec = Security()
        self.member = Member()
        self.activity = Activity()
        self.conn = Connections()

        self.myClass = self.__class__.__name__
        self.myModuleLogger = logging.getLogger('uConnect.' +str(__name__) + '.' + self.myClass)
示例#4
0
def processRequestOrig(requestType, memberId, connType):
    #memberId='MEM192551'
    if (requestType == 'Find'):
        argRequests = {
            "Request": {
                "Header": {
                    "ScreenId": "MEMBER_01",
                    "ActionId": "SearchMember_01",
                    "Page": None
                },
                "MainArg": {
                    "Criteria": {
                        "_id": memberId
                    },
                    "Projection": None,
                    "FindOne": True
                }
            }
        }
    elif (requestType) == 'Insert':
        argRequests = {
            "Request": {
                "Header": {
                    "ScreenId": "RegisterMember_01",
                    "ActionId": "CreateMember_01",
                    "Page": None
                },
                "MainArg": {
                    "Main": {
                        "LastName": "Bhatt",
                        "FirstName": "Vishal"
                    },
                    "Address": {
                        "ZipCode": "08820"
                    },
                    "Contact": {
                        "Mobile": "999-555-1212"
                    }
                }
            }
        }
    elif (requestType) == 'GetCollection':
        argRequests = {
            "Request": {
                "Header": {
                    "ScreenId": "MemberConnection",
                    "ActionId": "GetMemberConnection",
                    "Page": None
                },
                "MainArg": {
                    "Main": {
                        "MemberId": memberId,
                        "MemberConnection": connType
                    }
                }
            }
        }

    app.logger.debug('got a request [{request}]'.format(request=requestType))
    factory = Factory()
    ''' extrcat value from argument passed '''

    myArgumentTuple = util.extractRequest(argRequests)
    myArgTupleStatus = myArgumentTuple[0]
    myScreenId = myArgumentTuple[1]
    myActionId = myArgumentTuple[2]
    myArgumentData = myArgumentTuple[3]
    myResults = ''
    ''' if we can extract value passed as an argument, will proceed else will build the responseDict with empty dataset '''

    if myArgTupleStatus == 'Success':
        myResults = factory.processRequest(myScreenId, myActionId,
                                           myArgumentData)

    myResponseData = util.buildResponseData(myResults, myArgTupleStatus,
                                            myArgTupleStatus)

    return jsonify(myResponseData)
示例#5
0
from flask import Flask, flash, session, redirect, url_for, escape, request, jsonify, json
from datetime import timedelta
from com.uconnect.core.singleton import Singleton
from com.uconnect.bps.factory import Factory
from com.uconnect.core.infra import Environment
from com.uconnect.db.mongodb import MongoDB
from com.uconnect.utility.ucUtility import Utility
from flask_cors import CORS

import logging, com.uconnect.utility.ucLogging

#'\x95\x8d\xe3\xab\x18\xc2\xc6\xeb\xd4+\x11H<\xdc\xd8m\xaf\xae0\xcfb\xdc\x84\x92\xc5\xb2\xado\x98\xc5\x08\xa9\xbb/\x95\xe9/\xda\x10\xaa\x1f\xb7k\x956SLCIj\r7v\xdbm\\\x1e\xdc\xf3M&$\xb0\xce\xdb\x18\xd6\xa3\x13\x85\xd0m\r\x1a]\xbe\xf8\xd8Q\xcf\xed\xaf\x0b\x827TB\xb7'
myLogger = logging.getLogger('uConnect')
util = Utility()
factory = Factory()

app = Flask(__name__)
CORS(app)
app.secret_key = '\x95\x8d\xe3\xab\x18\xc2\xc6\xeb\xd4+\x11H<\xdc\xd8m\xaf\xae0\xcfb\xdc\x84\x92\xc5\xb2\xado\x98\xc5\x08\xa9\xbb/\x95\xe9/\xda\x10\xaa\x1f\xb7k\x956SLCIj\r7v\xdbm\\\x1e\xdc\xf3M&$\xb0\xce\xdb\x18\xd6\xa3\x13\x85\xd0m\r\x1a]\xbe\xf8\xd8Q\xcf\xed\xaf\x0b\x827TB\xb7'
#session = {}


@app.before_request
def make_session_permanent():
    myModuleLogger = logging.getLogger('uConnect.' + str(__name__))
    myModuleLogger.debug("initializing session information ...")
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=5)


@app.route('/uConnect', methods=['GET', 'POST'])
示例#6
0
import json
from com.uconnect.bps.factory import Factory
from com.uconnect.core.infra import Environment
from com.uconnect.utility.ucUtility import Utility
from com.uconnect.db.mongodb import MongoDB

myFactory = Factory.Instance()
utilityInstance = Utility.Instance()
mongodbInstance = MongoDB.Instance()

# load Member test data, you might consider emptying Member collection: db.Member.remov({})
MemberData = json.loads(
    open("c:\\app\\uconnect\\MongoDb\\json\\MemberTestData.json").read())
#MemberData = json.loads(open("c:\\app\\uconnect\\MongoDb\\json\\Temp.json").read())
for line in MemberData:
    #print (line['Main'],line['Address'],['Contact'])
    myRequest = {
        "Request": {
            "Header": {
                "ScreenId": "Registration",
                "ActionId": "RegisterEntity",
                "Page": None
            },
            "MainArg": {
                "Main": line['Main'],
                "Address": {
                    'ZipCode': str(line['Address']['ZipCode'])
                },
                "Contact": {
                    'Mobile':
                    line['Contact']['Mobile'],
示例#7
0
class loadTestData(object):
    def __init__(self):

        print('initializing')

        testDataFile = os.path.join(os.getenv('UCONNECT_HOME'), '..\\MongoDb\\json\\MemberTestData.json')
        templateFile = os.path.join(os.getenv('UCONNECT_CONFIG'),'template.json')
        self.myRegScreen = 'Registration'
        self.myRegAction = 'RegisterEntity'
        self.myGenSecAction = 'GenerateSecCode'
        self.mySecValidateAction = 'ValidateSecCode'
        self.testData = []
        self.template = {}

        self.factory = Factory()
        self.mongo = MongoDB()
        
        self.testData = self.__loadJsonFile(testDataFile)
        self.template = self.__loadJsonFile(templateFile)
        self.requestTemplate = self.template['Request']

    def removCollData(self):
        print('dropping collection...')
        self.mongo.conn.drop_collection('Member')
        self.mongo.conn.drop_collection('LoginInfo')
        self.mongo.conn.drop_collection('Auth')
        self.mongo.conn.drop_collection('Schedule')
        print('collection dropped, proceeding with data load',)
    def __loadJsonFile(self, dataFile):
        if not os.path.isfile(dataFile):
            print("Data file {file} is missing, exiting !!!".format(file=dataFile))
            sys.exit(-1)
        #print ('loading test data file in memory')
        try:
            if os.path.getsize(dataFile) == 0:
                print('Data file {file} is empty, exiting !!!'.format(file=dataFile))
                sys.exit(-1)
            else:
                myData = json.loads(open(dataFile).read())
            if len(myData) == 0:
                print('Data object is empty after loading from file, exiting !!!')
                sys.exit(-1)
            return myData
        #print ('Data file is loaded in memory')
        except Exception as error:
            print('Error [{err}] occurred while loading file {file} in memory'.format(err=sys.exc_info(), file=dataFile))
            sys.exit(-1)

    def loadMemberData (self):
        print('Loading Member Data ....')
        totalSuccess = totalFailure = 0
        #creatign member
        test = []
        for member in self.testData:
        #for member in test:
            try:

                #Create Member
                print('Registering Member ...')
                myRequest = self.buildFactoryRequest(member,self.myRegScreen, self.myRegAction)
                myAuth = myRequest['Request']['MainArg']['Auth']
                memberData = self.factory.processRequest(myRequest)
                memStatus, memMessage = self.parseResult(memberData)
                #print(memberData)
                if memStatus == 'UnSuccess':
                    print('Error {error} occurred, skiping'.format(error=memMessage))
                else:    
                    myMemberId = memberData['MyResponse']['Data'][0]['_id'] 
                    print('member id [{memberid}] registered'.format(memberid = myMemberId))
                
                    # Generate Security Code
                    mySecData = {'LoginId': myAuth['LoginId']}
                    myRequest = self.buildFactoryRequest(mySecData,self.myRegScreen, self.myGenSecAction)
                    #print(myRequest)
                    myGenSecResult = self.factory.processRequest(myRequest)
                    myGenSecStatus, myGenSecMessage = self.parseResult(myGenSecResult)

                    if myGenSecStatus == 'Success':
                        myDBCriteria = {'LoginId':mySecData['LoginId']}
                        myDBProjection = {'_id':0,'SecurityCode':1}
                        mySecurityCode = self.mongo.findDocument('SecurityCode',myDBCriteria,myDBProjection,True)['Data'][0]['SecurityCode']
                        print('sec code [{code}] generated'.format(code=mySecurityCode))
    
                        mySecValData = {'LoginId':myAuth['LoginId'], 'SecurityCode':mySecurityCode}
                        myRequest = self.buildFactoryRequest(mySecValData, self.myRegScreen, self.mySecValidateAction)
                        #print('Sec validation request >>>',myRequest)
                        myValSecResult = self.factory.processRequest(myRequest)
                        myValSecStatus, myValSecMessage = self.parseResult(myValSecResult)
                        if myValSecStatus == 'Success':
                            print('Security code {code} validated successfuly'.format(code=mySecurityCode))
                            print('Member {member} created successfuly'.\
                                format(member=''.join([str(myMemberId), '-', myAuth['LoginId'] ] )))
                            totalSuccess+=1
                        else:
                            print('Security code {code} could not be validated, message {message}'.format(code=mySecurityCode, message = myValSecMessage))
                    else:
                        print('sec code could not be generated, message {result}'.format(message=myGenSecMessage))
                        print('skipping security code generation/validation')
                    # validate security code
            except Exception as error:
                print('Error {err} occured, skipping '.format(err=sys.exc_info()[0:]))
                totalFailure+=1
                #raise error
        print('Status {success} out of {total}'.format(success=totalSuccess, total=len(self.testData)))

        #creating 5 connection for this member
        print('creating connection ....')
        print('creating 5 connection for all members')

        allLoginList = self.mongo.findDocument('LoginInfo',\
            {'AccountStatus':'Open','EntityType':'Member'},{'_id':1,'LoginType':1, 'EntityType':1, 'EntityId':1})['Data']
        myRequest = {}
        print('Total Login found in Open status >>> {cnt}'.format(cnt=len(allLoginList)))
        #input("Press Enter to Continue ...")

        for login in allLoginList:
            # get the auth for this member, we need to validate login id
            myMember = self.mongo.findDocument('Member',{'_id':login['EntityId']},{},True)['Data'][0]
            print('Adding connection for memebr {member}'.format(member=myMember['_id']))
            myAuth = self.mongo.findDocument('Auth',{'EntityId':myMember['_id'], 'ExpiryDate': {'$gt' : datetime.datetime.now()}},{},True)['Data'][0]
            myAuth.update({'AuthKey':myAuth['_id']})

            #get 5 member fromt this database except this member            
            myResult = self.mongo.ExecCommand({'find':'Member',
                'filter':{'_id': {'$nin':[login['EntityId']]}}, 
                'projection':{'_id':1}, '$sample' : {'size':5}, 'limit':5})
            myMemberConnList = myResult['cursor']['firstBatch']
            print("Connection count:",len(myMemberConnList))
            #print(myResult)

            for conn in myMemberConnList:
                myRequest = self.buildFactoryRequest({'ConnMemberId':conn['_id'],'Action':'Invite','Auth':myAuth}, 'Member', 'UpdateConnectionDetails')
                myResult = self.factory.processRequest(myRequest)
                myResultStatus, myResultMessage = self.parseResult(myResult)
                if myResultStatus == 'Success':
                    print('Connection {member} --> {conn} request is Successful '.format(member = myAuth['EntityId'], conn = conn['_id']))
                else:
                    print('Connection {member} --> {conn} request is Unsuccessful, message >> {msg} '.format(member = myAuth['EntityId'], conn = conn['_id'], msg = myResultMessage))
                print('Connection {conn} added to member {member}'.format(conn=conn['_id'], member=myAuth['EntityId']))
            # last connection to be accepted by invitee
            
            myInvitee = myRequest['Request']['MainArg']['UpdateConnections'][0]['Id']
            myAuth = self.mongo.findDocument('Auth',{'EntityId':myInvitee, 'ExpiryDate': {'$gt' : datetime.datetime.now()}},{},True)['Data'][0]
            myAuth.update({'AuthKey':myAuth['_id']})
            myRequest = self.buildFactoryRequest({'ConnMemberId':myMember['_id'],'Action':'Accept','Auth':myAuth}, 'Member', 'UpdateConnectionDetails')
            myResult = self.factory.processRequest(myRequest)
            if myResultStatus == 'Success':
                print('Connection [{member}] --> [{conn}] is Successful'.format(member = myMember['_id'], conn = myInvitee))
            else:
                print('Connection [{member}] --> [{conn}] is Unsuccessful, message >> {msg}'.format(member = myMember['_id'], conn = myInvitee, msg = myResultMessage))

        # we need to build some schedule data
    #def getStartTime()

    def loadSchedules(self):
        allLoginList = self.mongo.findDocument('LoginInfo',\
            {'AccountStatus':'Open','EntityType':'Member'},{'_id':1,'LoginType':1, 'EntityType':1, 'EntityId':1})['Data']
        myRequest = {}
        print('Total Login found in Open status >>> {cnt}'.format(cnt=len(allLoginList)))
        print('Creating schedule for all the open accounts')

        for login in allLoginList:
            myMember = self.mongo.findDocument('Member',{'_id':login['EntityId']},{},True)['Data'][0]
            print('creating schedule for memebr {member}'.format(member=myMember['_id']))
            myAuth = self.mongo.findDocument('Auth',{'EntityId':myMember['_id'], 'ExpiryDate': {'$gt' : datetime.datetime.now()}},{},True)['Data'][0]
            myAuth.update({'AuthKey':myAuth['_id']})

            #get 5 member fromt this database except this member            
            myAllInvitee = self.mongo.ExecCommand({'find':'Member',
                'filter':{'_id': {'$nin':[login['EntityId']]}}, 
                'projection':{'_id':1}, '$sample' : {'size':5}, 'limit':5})['cursor']['firstBatch']
            
            print("Invitee count:",len(myAllInvitee))

            schedDetails = [
                {"Description":"Business discussion", "Place": "Starbucks","StartTime":"2017-12-12 09:00:00"},
                {"Description":"Movie", "Place": "Starbucks","StartTime":"2017-12-28 10:00:00"},
                {"Description":"Cricket Trounament", "Place": "Starbucks","StartTime":"2018-01-10 11:00:00"},
                {"Description":"Shopping", "Place": "Starbucks","StartTime":"2018-01-15 18:00:00"},
                {"Description":"Lunch", "Place": "Starbucks","StartTime":"2018-01-19 16:00:00"}
            ]

            for seq, invitee in enumerate(myAllInvitee):
                #print(seq,invitee)
                # build schedule data
                schedData = {
                    "ScheduleDetails" : {
                        "Description"   : schedDetails[seq]["Description"],
                        "Place"         : schedDetails[seq]["Place"],
                        "StartTime"     : schedDetails[seq]["StartTime"],
                        "DurationMins"  : 30
                    },
                    "Invitee" : [
                        {"Id" : invitee['_id'], "Type":"Member", "IsOwner":"N"}
                    ],
                    "ShareWith":[{"MemberId" : "<Family memberid"}],
                    "Tasks": [],
                    "WaitList" : [], 
                    "Repeat": {
                        "RepeatSchedule": "Every Day/Date of Week/Month/Year",
                        "StartDate": "Repeat Start Date",
                        "EndDate": "Repeat End Date"
                    },
                    "Auth" :{
                        "AuthKey" : myAuth["AuthKey"],
                        "LoginId" : myAuth["LoginId"],
                        "LoginType" : myAuth["LoginType"],
                        "DeviceType" : myAuth["DeviceType"],
                        "DeviceOs" : myAuth["DeviceOs"],
                        "MacAddress" : myAuth["MacAddress"],
                        "SessionId" : myAuth["SessionId"],
                        "EntityType" : myAuth["EntityType"],
                        "EntityId" : myAuth["EntityId"],
                        "AppVer" : myAuth["AppVer"]
                    }
                }
                myRequest = self.buildFactoryRequest(schedData,'Schedule','NewSchedule')
                # we need to get diff timing for each of the schdule
                myResult = self.factory.processRequest(myRequest)
                #print(myResult)
                myResultStatus, myResultMessage = self.parseResult(myResult)
                if myResultStatus == 'Success':
                    print('Schedule between {member} and {inv} creation was successful '.format(member = myAuth['EntityId'], inv = invitee['_id']))
                else:
                    print('Schedule between {member} and {inv} creation was unsuccessful** '.format(member = myAuth['EntityId'], inv = invitee['_id']))
                    print('Error',myResult)
                
                #print(schedData)

    def parseResult(self, argResult):
        return argResult['MyResponse']['Header']['Status'], argResult['MyResponse']['Header']['Message']

    def buildFactoryRequest(self, data, argScreenId, argActionId):
        myRequest = copy.deepcopy(self.requestTemplate)
        #print(myRequest)
        myRequest['Request']['Header'] = {'ScreenId' : argScreenId, 'ActionId' : argActionId, 'Page':None}
        #print('build',myRequest)
        if argScreenId == self.myRegScreen:

            if argActionId == self.myRegAction:
                myRequest['Request']['MainArg'] = {
                    'Main' : {
                        'LastName': data['Main']['LastName'],
                        'FirstName':data['Main']['FirstName'], 
                        'NickName': ''.join([data['Main']['FirstName'][0],data['Main']['LastName'][0]]) },
                    'Address' : {'ZipCode':data['Address']['ZipCode']},
                    'Contact' : {'Email':data['Contact']['Email']},
                    'Auth': {
                        'LoginId':data['Contact']['Email'],
                        'LoginType':'Web',
                        'Password':data['Main']['FirstName'],
                        'DeviceType': 'OS2',
                        'DeviceOs': 'Web',
                        #'MacAddress' : ''.join([data['Main']['FirstName'],data['Main']['LastName'],data['Contact']['Email']]),
                        'MacAddress' : 'MACADDRESS:001',
                        'EntityType': 'Member',
                        'AppVer' : '1.0',
                        'SessionId' : str(random.random())
                    }
                }
                #print('in build factory',myRequest)
            elif argActionId == self.myGenSecAction:
                # must pass the auth dict which was used to create the member
                myRequest['Request']['MainArg'] = {'SecurityCode':{'LoginId': data['LoginId'], 'DeliveryMethod': 'Email', 'DeliverTo': data['LoginId']}}
            elif argActionId == self.mySecValidateAction:
                myRequest['Request']['MainArg'] = {'SecurityCode':{'LoginId': data['LoginId'], 'SecurityCode': data['SecurityCode']}}
        elif argScreenId == 'Login':
            if argActionId == 'Authenticate':
                myRequest['Request']['MainArg'] = {
                    'Auth':{
                        'LoginId'    : data['Auth']['LoginId'],
                        'Password'   : data['Password'],
                        'LoginType'  : data['Auth']['LoginType'],
                        'DeviceOs'   : data['Auth']['DeviceOs'],
                        'DeviceType' : data['Auth']['DeviceType'],
                        'MacAddress' : data['Auth']['MacAddress'],
                        'EntityType' : data['Auth']['EntityType'],
                        'AppVer'     : data['Auth']['AppVer'],
                        'SessionId'  : data['Auth']['SessionId']  
                    }
                }
            #print(myRequest)
        elif argScreenId == 'Member':
            if argActionId == 'UpdateConnectionDetails':
                myRequest['Request']['MainArg'] = {
                    "UpdateConnections":[{"Id":data['ConnMemberId'],"Type":"Member","Action":data["Action"]}],
                    "Auth" : data['Auth']
                }
                #print('conn',myRequest)
        elif argScreenId == 'Schedule':
            if argActionId == 'NewSchedule':
                #print(data)
                myRequest['Request']['MainArg'] = {
                    "ScheduleDetails" : {
                        "Description"   : data["ScheduleDetails"]["Description"],
                        "Place"         : data["ScheduleDetails"]["Place"],
                        "StartTime"     : data["ScheduleDetails"]["StartTime"],
                        "DurationMins"  : data["ScheduleDetails"]["DurationMins"]
                    },
                    "Invitee" : [],
                    "ShareWith":[{"MemberId" : "<Family memberid"}],
                    "Tasks": [],
                    "WaitList" : [], 
                    "Repeat": {
                        "RepeatSchedule": "Every Day/Date of Week/Month/Year",
                        "StartDate": "Repeat Start Date",
                        "EndDate": "Repeat End Date"
                    },
                    "Auth" :{
                        "AuthKey" : data["Auth"]["AuthKey"],
                        "LoginId" : data["Auth"]["LoginId"],
                        "LoginType" : data["Auth"]["LoginType"],
                        "DeviceType" : data["Auth"]["DeviceType"],
                        "DeviceOs" : data["Auth"]["DeviceOs"],
                        "MacAddress" : data["Auth"]["MacAddress"],
                        "SessionId" : data["Auth"]["SessionId"],
                        "EntityType" : data["Auth"]["EntityType"],
                        "EntityId" : data["Auth"]["EntityId"],
                        "AppVer" : data["Auth"]["AppVer"]
                    }
                }

                for inv in data['Invitee']:
                    myRequest['Request']['MainArg']['Invitee'].append(
                        {"Id" : inv["Id"] , "Type" : inv["Type"], "IsOwner" : inv["IsOwner"]})

        return myRequest