예제 #1
0
def GetSender(request):
    #logging.info(("GetSender", request.url))
    assert isinstance(request, Request)
    ip_address = request.remote_addr
    parsed_url = urlparse(request.url)
    if parsed_url.scheme == "http":
        protocol = "http"
        port = 80
    elif parsed_url["scheme"] == "https":
        protocol = "https"
        port = 443
    else:
        protocol = ""
        port = -1
    #logging.info((ip_address, port, protocol))
    gql_query = Sender.gql(
        "WHERE ipAddress = :1 AND port = :2 AND protocol = :3", ip_address,
        port, protocol)
    existing_sender = gql_query.get()
    #logging.info(existing_sender)
    if existing_sender is not None:
        #logging.info((existing_sender.senderId, existing_sender.ipAddress, existing_sender.port, existing_sender.protocol))
        return existing_sender
    else:
        sender = Sender()
        sender.senderId = Counter.GetNextId("senderId")
        sender.ipAddress = ip_address
        sender.port = port
        sender.protocol = protocol
        return sender.put()
예제 #2
0
    def createSender(request):
        #logging.info(("GetSender", request.url))
        assert isinstance(request, Request)
        ip_address = request.remote_addr
        parsed_url = urlparse(request.url)
        if parsed_url.scheme == "http":
            protocol = "http"
            port = 80
        elif parsed_url["scheme"] == "https":
            protocol = "https"
            port = 443
        else:
            protocol = ""
            port = -1

        query = Sender.querySender(ip_address, port, protocol)
        existing_sender = query.get(keys_only=True)
        if existing_sender: return existing_sender

        sender = Sender()
        sender.senderId = Counter.GetNextId("senderId")
        sender.ipAddress = ip_address
        sender.port = port
        sender.protocol = protocol
        return sender.put()
예제 #3
0
    def create(cls, product_name_data, serial_number_data, module_id_data,
               sensor_id_data, sensor_name_data, odenki_user):
        assert isinstance(odenki_user, OdenkiUser)
        assert isinstance(product_name_data, Data)
        assert isinstance(serial_number_data, Data)
        assert isinstance(module_id_data, Data)
        assert isinstance(sensor_id_data, Data)
        assert isinstance(sensor_name_data, Data)

        try:
            existing_sensor = cls.getByProductNameSerialNumberModuleIdSensorId(
                product_name_data, serial_number_data, module_id_data,
                sensor_id_data)
            raise EntityExists(
                "Equipment", {
                    "product_name_data": product_name_data,
                    "serial_number_data": serial_number_data,
                    "module_id_data": module_id_data,
                    "sensor_id_data": sensor_id_data
                })
        except:
            sensor = Sensor()
            sensor.uniqueSensorId = Counter.GetNextId("equipmentId")
            sensor.productName = product_name_data.dataId
            sensor.serialNumber = serial_number_data.dataId
            sensor.moduleId = module_id_data.dataId
            sensor.sensorId = sensor_id_data.dataId
            sensor.odenkiId = odenki_user.odenkiId
            assert sensor_name_data.dataId is not None
            sensor.sensorName = sensor_name_data.dataId
            assert sensor.sensorName is not None
            sensor.put()
            return sensor
예제 #4
0
def putMetadata(sender_, raw_data, data_list):
    metadata = Metadata()
    metadata.metadataId = Counter.GetNextId("metadataId")
    now = datetime.datetime.now()
    #logging.info(now.strftime('%Y/%m/%d %H:%M:%S%z'))
    metadata.receivedDateTime = now
    metadata.sender = sender_
    metadata.rawData = raw_data
    metadata.dataList = data_list
    return metadata.put()
예제 #5
0
 def createNew(cls):
     """create new OdenkiUser with new odenkiId and put it to datastore"""
     odenki_user = OdenkiUser()
     odenki_user.odenkiId = Counter.GetNextId("odenkiId")
     odenki_user.odenkiName = "Odenki %s" % odenki_user.odenkiId
     odenki_user.createdDateTime = datetime.now()
     key = odenki_user.put()
     assert isinstance(key, ndb.Key)
     entity = key.get()
     assert isinstance(entity, OdenkiUser)
     return entity
예제 #6
0
 def create(cls, field, string, allow_duplication=False):
     try:
         existing = cls.getByFieldAndString(field, string)
         if allow_duplication:
             raise EntityNotFound
         raise EntityExists("Data", {"field": field, "string": string})
     except EntityNotFound:
         data = Data()
         data.dataId = Counter.GetNextId("dataId")
         data.field = field
         data.string = string
         data.put()
         return data
예제 #7
0
 def putMetadata(cls, sender, raw_data, data_keys):
     assert isinstance(sender, Sender)
     assert isinstance(raw_data, RawData)
     assert isinstance(data_keys, list)
     metadata = Metadata()
     metadata.metadataId = Counter.GetNextId("metadataId")
     now = datetime.datetime.now()
     info(now.strftime('%Y/%m/%d %H:%M:%S%z'))
     metadata.receivedDateTime = now 
     metadata.sender = sender
     metadata.rawData = raw_data
     metadata.dataList = data_keys
     return metadata.put()
예제 #8
0
    def putEntity(cls, field, string):
        assert isinstance(field, unicode) or isinstance(field, str)
        assert isinstance(string, unicode) or isinstance(string, str)
        if isinstance(field, str): field = field.decode()
        if isinstance(string, str): string = string.decode()
        key = cls.getKeyByFieldAndString(field, string)
        if key: return key
        key = cls.getKeyByFieldAndStringFromDatastore(field, string)
        if key: return key

        data = Data()
        data.dataId = Counter.GetNextId("dataId")
        data.field = field
        data.string = string
        return data.put()
예제 #9
0
 def createByEmail(cls, email):
     assert isinstance(email, unicode)
     try:
         existing_email_user = cls.getByEmail(email)
         raise EntityExists({"EmailUser": existing_email_user},
                            "EmailUser %s already exists" % email)
     except:
         pass
     email_user = EmailUser()
     assert isinstance(email_user, EmailUser)
     email_user.email = email
     email_user.registeredDateTime = datetime.now()
     email_user.emailUserId = Counter.GetNextId("emailUserId")
     #odenki_user = OdenkiUser.createNew()
     #assert isinstance(odenki_user, OdenkiUser)
     #email_user.odenkiId = odenki_user.odenkiId
     email_user.put()
     return email_user
예제 #10
0
    def putEntity(cls, field, string):
        raise PendingDeprecationWarning(
            "NdbData.Data.putEntity is being deprecated.")
        debug("type of field is %s" % type(field))
        field = unicode(field)
        assert isinstance(field, unicode)
        string = unicode(string)
        assert isinstance(string, unicode)
        q = cls.getByFieldAndString(field, string)
        k = q.get(keys_only=True)
        if k: return k

        data = cls()
        assert isinstance(data, ndb.Model)
        data.dataId = Counter.GetNextId("dataId")
        data.field = field
        data.string = string
        data.put()
        q = cls.getByFieldAndString(field, string)
        k = q.get(keys_only=True)
        return k