Esempio n. 1
0
def response( userObj, data ):
    logger.info("Screening RESPONSE Request")

    for deviceKey in data.keys():

        deviceObj = GardenModels.getDevice( identifier = deviceKey)

        if deviceObj == None:
            return False

        logger.debug( "DeviceObj: " + deviceObj.identifier )

        # making sure device belongs to the user
        if deviceObj.user.identifier != userObj.identifier:
            logger.error( "Device Does Not Belong To User: "******"DataTypeObj: " + dataTypeObj.identifier )

        #endfor
    #endfor
    return __retrieveResponse( data )
Esempio n. 2
0
def __retrieveResponse( data ):

    returnData = {}

    for deviceKey in data.keys():
        deviceObj = GardenModels.getDevice( identifier = deviceKey)

        logger.debug( "DeviceObj: " + deviceObj.identifier )

        for dataTypeKey in data[ deviceKey ]:

            dataTypeObj = GardenModels.getDataType( identifier = dataTypeKey )

            logger.debug( "DataTypeObj: " + dataTypeObj.identifier )

            returnData[ deviceObj.identifier ] = {}
            responseObj= GardenModels.getResponse( device =  deviceObj, datatype = dataTypeObj)
            if responseObj == None:
                return False

            logger.debug( "Response Object: " + str( responseObj.identifier ) )
            returnData[ responseObj.device.identifier ][ responseObj.datatype.identifier ] = \
                    responseObj.value

        #endfor
        returnDataString = DataFormat.formatJsonResponse( returnData )
        logger.debug("Response: " + returnDataString )

    return returnDataString
Esempio n. 3
0
def request( userObj , data ):
    logger.info("Screening DATA Request")

    for deviceKey in data.keys():

        deviceObj = GardenModels.getDevice( identifier = deviceKey)

        if deviceObj == None:
            return False

        logger.debug( "DeviceObj: " + deviceObj.identifier )

        # making sure device belongs to the user
        if deviceObj.user.identifier != userObj.identifier:
            logger.error( "Device Does Not Belong To User: "******"DataTypeObj: " + dataTypeObj.identifier )

            __prepareResponseObject( deviceObj , dataTypeObj )
        #endfor
    #endfor
    return __storeData( data )
Esempio n. 4
0
def __storeData( data ):
    logger.info("Storing Data For Request")
    for deviceKey in data.keys():

        logger.debug( "Processing Device: " + deviceKey )
        deviceObj = GardenModels.getDevice( identifier = deviceKey)

        # device may have different data types
        for dataTypeKey in data[ deviceKey ].keys():

            logger.debug( "Processing DataType: " + dataTypeKey )
            dataTypeObj = GardenModels.getDataType( identifier = dataTypeKey )

            logger.info( "Converting Data" )
            storeData = json.dumps( data[ deviceKey ][ dataTypeKey ] )
            logger.debug( storeData )

            logger.info( "Creating Data Objects -> Device: " + deviceKey + " Type: " + dataTypeKey )
            GardenModels.setData( deviceObj , dataTypeObj , storeData )

        #endfor
        logger.info( "Done with Device" )
    #endfor

    return 1
Esempio n. 5
0
def postResponse( data ):
    logger.info("POST PROCESSOR REQUESET");

    for responseIdent in data:
        if GardenModels.getResponse(identifier = responseIdent ) == None:
            return False
    #endfor

    for responseIdent in data:
        responseObj = GardenModels.getResponse(identifier = responseIdent )
        responseObj.value = data[ responseIdent ]
        responseObj.save()

    return True
Esempio n. 6
0
def getData( request ):
    logger.info("GET PROCESSOR REQUESET");

    response = {}
    dataCount = 0

    for device in request:

        logger.debug("Device: " + device)
        response[ device ] = {}

        for datatype in request[ device ]:

            logger.debug("DataType: " + datatype )
            response[ device ][ datatype ] = {}

            data = GardenModels.getDataRange(
                int(request[ device ][ datatype ]['points']),
                device   = device,
                datatype = datatype
            )

            dataCount = dataCount + len(data)

            logger.debug("Data Returned: " + str(data))
            for datapoint in data:

                dataAge = int( ( datapoint.created.replace(tzinfo=None) - datetime.datetime(1970,1,1)).total_seconds() )
                if 'time' in request[ device ][ datatype ] :
                    if dataAge < ( int( time.time() ) - request[ device ][ datatype ]['time' ] ) :
                        logger.debug(int( time.time() ) - dataAge )
                        dataCount = dataCount - 1
                        continue

                response[ device ][ datatype ][ datapoint.identifier ] = {
                    'value'      : datapoint.value,
                    'created'    : int( ( datapoint.created.replace(tzinfo=None) - datetime.datetime(1970,1,1)).total_seconds() )
                }
        #endfor
    #endfor
    logger.info("Returning: " + str(dataCount) + " Points of Data")
    return DataFormat.formatJsonResponse( response )
Esempio n. 7
0
def __prepareResponseObject( deviceObj , dataTypeObj ):

    logger.debug("PreparingResponseObject")
    if None == GardenModels.getResponse( device = deviceObj , datatype = dataTypeObj ):
        responseObj = GardenModels.setResponse( deviceObj, dataTypeObj, "" )
        Processor.createProcessor( dataTypeObj , deviceObj , responseObj )