def post(self):
     """
     picture_base64: pass picture encode as base64
     """
     message_mapping = []
     result = ReturnStruct()
     logging.info("before get base64,time %s" % (datetime.datetime.now()))
     pic = self.get_argument("picture_base64")
     logging.info("before decode 64")
     if pic == '':
         raise ArgumentTypeError("empty picture_base64")
     try:
         binary_picture = base64.b64decode(pic)
     except TypeError as e:
         raise ArgumentTypeError('error change type : picture_base64')
     logging.info("before decoder %s" % (datetime.datetime.now()))
     try:
         result.data['info'] = self._decoder(binary_picture)
     except Exception as e:
         raise ArgumentTypeError('decode failed: ,message %s' % str(e))
     just_info = '0'
     try:
         just_info = self.get_argument('just_info')
     except Exception as e:
         logging.info("exception is %s" % str(e))
     if just_info == '1':
         self.write(result.data['info'])
     else:
         self.return_to_client(result)
     self.finish()
    def post(self):
        """
            information: infomation to encode to 2-D barcode
        """
        logging.info("in there1")
        information = self.get_argument("information")
        user_id = self.get_argument('user_id')
        pro_id = self.get_argument('pro_id')
        result = ReturnStruct()
        try:
            if information == '':
                raise TypeError('information')
        except TypeError as e:
            raise ArgumentTypeError('argument: infomation is empty')

        try:
            logging.info("before encoder.")
            binary = self._encoder(information)
            data = {
                'user_id': user_id,
                'pro_id': pro_id,
            }
            res = yield self.file_requester(
                self.resource_service + '/project/post', data, binary, '.png')
            result.data['key'] = res['data']['key']
        except Exception as e:
            raise InnerError(str(e) + "in encoder")

        self.return_to_client(result)
        self.finish()
Exemplo n.º 3
0
 def get(self):
     result = ReturnStruct()
     person_id = self.get_argument("person_id")
     jquery = ''
     try:
         jquery = str(self.get_argument('jsoncallback'))
     except Exception as e:
         pass
     track_info = self.person_model.get_track_list(person_id)
     result.data = track_info
     self.return_to_client(result, jquery)
     self.finish()
Exemplo n.º 4
0
    def post(self):
        """Find if there are high confidence face in face databses.

        Args:
            search_picture: single picture encode in base64
            coordinate: location of the place shoot the picture,
            searcher_id: device id.
            pic_type: example:'jpg','jpeg'

        Returns:
            needn't return to client. But there are three status:
                'search success and confidence higher than level 2: 
                'search success but confidence does not higher than level:2'
                'search failed'
        """
        message_mapping = [
            'search success and confidence higher than level: %s' %
            self.confirm_level,
            'search success but confidence does not higher than level:%s' %
            self.confirm_level,
            'search failed, maybe upload a low quality picture'
        ]
        result = ReturnStruct(message_mapping)
        # 1. upload
        timer = Timer("search person")
        try:
            search_picture = self.get_argument("search_picture")
            coordinate = eval(self.get_argument("coordinate"))
            searcher_id = int(self.get_argument("id"))
            search_type = self.get_argument("type")
            pic_type = self.get_argument('pic_type')
        except tornado.web.MissingArgumentError, e:
            raise MyMissingArgumentError(e.arg_name)
Exemplo n.º 5
0
    def post(self):
        """ Upload person information which is missing recently. 
        Syetem will push message to police and person around this person.

        Args:

        Returns:

        [todo]:
        this api can only called by ploiceman

        """
        message_mapping = ['empty image']
        user_id = PLICEMAN_ID
        result = ReturnStruct(message_mapping)
        try:
            picture_list = eval(self.get_argument('picture_list'))
            pic_type = self.get_argument('pic_key')
            info_data = {
                'name': self.get_argument('name'),
                'sex': int(self.get_argument('sex')),
                'age': int(self.get_argument('age')),
                'relation_id': user_id,
                'formal': 1,
                'relation_telephone': self.get_argument('relation_telephone'),
                'relation_name': self.get_argument('relation_name'),
                'lost_time': float(self.get_argument('lost_time')),
                'lost_spot': eval(self.get_argument('lost_spot')),
                'description': self.get_argument('description')
            }
        except tornado.web.MissingArgumentError, e:
            raise MyMissingArgumentError(e.arg_name)
Exemplo n.º 6
0
    def post(self):
        """get user's reporter list.

        Args:
            user_id:
        
        Returns:
            {
                "message": "default message",
                "code": 0,
                "data": {
                    "peron_brief_info": [
                        {
                            "person_id": "5863140516b2d67b38f27f60",
                            "last_update_time": 1482888193,
                            "last_update_spot": [
                                22.9,
                                22.9
                            ],
                            "name": "chenxionghui",
                            "std_photo_key": "reporter:48::1482888196.89.jpeg"
                        },
                        {
                            "person_id": "58632a7e16b2d67fa66fa9e9",
                            "last_update_time": 1482912276,
                            "last_update_spot": [
                                22.9,
                                22.9
                            ],
                            "name": "俞敏洪",
                            "std_photo_key": "reporter:48::1482893949.95.jpg"
                        }
                    ]
                }
            }
        """
        result = ReturnStruct()
        user_id = int(self.get_secure_cookie('user_id'))
        person_id_list = self.user_model.get_missing_person_list(user_id)
        result.data[
            'peron_brief_info'] = self.person_model.get_person_brief_info(
                person_id_list)
        result.data['peron_brief_info'].reverse()
        self.return_to_client(result)
        self.finish()
Exemplo n.º 7
0
    def get(self):
        """
        {
    "info": [
        {
            "lat": 118.88,
            "count": 34,
            "lng": 31.875
        },
        {
            "lat": 118.8,
            "count": 35,
            "lng": 31.895
        },
        {
            "lat": 118.82,
            "count": 49,
            "lng": 31.89
        }
    ],
    "amount": 10
}
        """
        result = ReturnStruct()
        range_longitude = float(self.get_argument("range_longitude"))
        range_latitude = float(self.get_argument("range_latitude"))
        spot = eval(self.get_argument("spot"))
        jquery = ''
        try:
            jquery = str(self.get_argument('jsoncallback'))
        except Exception as e:
            pass
        track_map = self.person_model.get_track_count_by_range(
            spot, range_longitude, range_latitude)
        track_info = []
        for latitude, value in track_map.items():
            for longitude, count in value.items():
                track_info.append({
                    'lng': longitude,
                    'lat': latitude,
                    'count': count
                })
        result.data = {'info': track_info, 'amount': len(track_info)}
        self.return_to_client(result, jquery)
        self.finish()
Exemplo n.º 8
0
    def post(self):
        logging.info("in post upload")
        """
            user_id:
            pro_id:
            file:
        """
        message_mapping = ['success', 'failed']
        result = ReturnStruct(message_mapping)
        for field_name, files in self.request.files.items():
            for meta in files:
                filename, content_type = meta['filename'], meta['content_type']
                body = meta['body']
                logging.info('POST "%s" "%s" %d m', filename, content_type,
                             len(body) / 1024.0 / 1024.0)

        user_id = self.get_argument('user_id')
        pro_id = self.get_argument('pro_id')
        logging.info("get user id %s" % user_id)
        # file = self.get_argument('file')
        # name = self.get_argument('filename')
        # try:
        #     binary_picture = base64.b64decode(body)
        #     del file
        # except TypeError as e:
        #     raise ArgumentTypeError('upload project picture')
        logging.info("in uploading resource...")
        key = self._gen_key(user_id, pro_id, filename)
        file_dir = self.temp_file_dir + str(key)
        with open(file_dir, 'wb') as f:
            f.write(body)
            f.close()
        result.code = 0
        result.data = {'key': key}
        self.return_to_client(result)
        self.finish()
        up_result = yield self.background_task(
            self._picture_model.upload_resource, key, body)
        if up_result:
            del body
            logging.info("after upload file key:%s. result code is %s " %
                         (key, result.code))
            os.remove(file_dir)
Exemplo n.º 9
0
    def identify_check(self, telephone, password):
        """check the telephone and password in mysql databases.

        Args:
            telephone
            passowrd

        Returns:
            result: UserInfo object or None
        """
        message_mapping = [
            'login success',  # 0
            "no such user",  # 1
            "telephone format error",  # 2
        ]
        result = ReturnStruct(message_mapping)
        if re.match(regex_dict['telephone'], telephone):
            user_info = self.user_model.identify_check(telephone, password)
            if user_info is None:
                result.code = 1
            else:
                result.code = 0
                result.data['user_id'] = user_info.user_id
        else:
            result.code = 2
        return result
Exemplo n.º 10
0
    def check_message(self, user_id):
        """ check if user has new message which is unread yet.

        Args:
            user_id:

        Returns
        """
        message_mapping = [
            'non update', 'user\'s report missing person status has updated',
            'location push message has updated',
            'both missing person status and location message has updated'
        ]
        result = ReturnStruct(message_mapping)
        # 1. check reporter user message.
        has_update = self.user_model.check_update(user_id)
        if has_update:
            result.code = 1
        # 2. check location push message.
        message_queue = self.message_model.get_user_message_queue(user_id, 1)
        if message_queue != []:
            # if has_update = 0, code = 2, if has_update = 1, code = 3
            result.code = result.code + 2

        # 3. set return.
        result.data['has_update'] = has_update
        result.data['message_queue'] = message_queue
        logging.info("result of check_message: %s" % result.data)
        return result
Exemplo n.º 11
0
    def post(self):
        """clear user's online status, user will not receive message after logout.

        Args:

        Returns:

        """
        result = ReturnStruct()
        # get user_id
        user_id = int(self.get_secure_cookie("user_id"))
        self.user_model.clear_online_status(user_id)
        self.return_to_client(result)
        self.finish()
Exemplo n.º 12
0
    def unique_check(self, telephone):
        """Check if this telephone has exist in database.
        
        Args:
            telephone: register telephone.

        Retruns:
            result:
                0: success.
                1: telephone format error
                2: telephone has been registered.
        """
        message_mapping = [
            "has not been registered before",  # 0
            "telephone format error",  # 1
            "telephone has been registed"  # 2
        ]
        result = ReturnStruct(message_mapping)
        if re.match(regex_dict['telephone'], telephone):
            if self.user_model.is_telephone_exist(telephone):
                result.code = 2
        else:
            result.code = 1
        return result
Exemplo n.º 13
0
    def get(self):
        """ Get the person brief information which update resently.

        Args:
            spot:
            max_distance:
            formal:0 or 1:
            page:
            size:

        Returns:
        {       {
                    "message": "default message",
                    "code": 0,
                    "data": {
                        "formal": 0,
                        "size": 10,
                        "person_list": [
                            {
                                "person_id": "58632b5316b2d67fe717fd49",
                                "picture_key": "http://cloudeye.oss-cn-shanghai.aliyuncs.com/reporter%3A48%3A%3A1482894162.96.jpg?OSSAccessKeyId=LTAIkY3jD1E5hu8z&Expires=1482901703&Signature=oatfO4cLEBC19peakhj4VkGkL9g%3D",
                                "name": "俞敏洪"
                            }
                            {
                                "person_id": "5863140516b2d67b38f27f60",
                                "picture_key": "http://cloudeye.oss-cn-shanghai.aliyuncs.com/reporter%3A48%3A%3A1482888196.89.jpeg?OSSAccessKeyId=LTAIkY3jD1E5hu8z&Expires=1482901703&Signature=pSo3Hagi1cYpPQwc5MpCeAlNjZw%3D",
                                "name": "chenxionghui"
                            }
                        ],
                        "page": 0
                }
        }

        """
        result = ReturnStruct()
        spot = eval(self.get_argument("spot"))
        # [todo] change to longitude and latitude
        max_distance = float(self.get_argument("max_distance"))
        formal = int(self.get_argument("formal"))
        page = int(self.get_argument('page'))
        size = int(self.get_argument('size'))
        # temp for web request.
        jquery = ''
        try:
            jquery = str(self.get_argument('jsoncallback'))
        except Exception as e:
            pass
        # get the formal cases by size and spot range.
        person_info = self.person_model.get_lastest_person(
            spot, max_distance, formal, page, size)
        result.data['person_list'] = person_info
        result.data['page'] = page
        result.data['size'] = size
        result.data['formal'] = formal
        self.return_to_client(result, jquery)
        self.finish()
Exemplo n.º 14
0
    def post(self):
        """If client has get his new message queue then it should send this request to clear message queue in server[redis].

        Args:

        Returns:

        """
        result = ReturnStruct()
        # get user_id
        user_id = int(self.get_secure_cookie("user_id"))
        # clear has_update_status
        self.user_model.clear_update_status(user_id)
        # clear message.
        self.user_model.clear_message(user_id)
        self.return_to_client(result)
        self.finish()
Exemplo n.º 15
0
    def register_new_user(self, telephone, password, real_name, nick_name,
                          id_number):
        """register new user to sql database

        Args && example:
            "telephone":"15195861110",
            "password":"******",
            "real_name":"chenxionghui",
            "nick_name":"burningbear",
            "id_number":"350623199503100053"
  
        Returns:
            ReturnStruct, look message_mapping for detail

        """

        message_mapping = [
            "success",  # 0
            "real_name format error",  # 1
            "nick_name format error",  # 2
            "id_number format error",  # 3
            "insert conflit: "  # 4
        ]
        result = ReturnStruct(message_mapping)
        if not re.match(regex_dict['real_name'], real_name):
            result.code = 1
        if re.match(regex_dict['nick_name'], nick_name):
            result.code = 2
        if re.match(regex_dict['id_number'], id_number):
            result.code = 3
        # type check finished.
        has_success, message = self.user_model.insert_record_to_sql(
            telephone, password, real_name, nick_name, id_number)
        if has_success:
            result.code = 0
        else:
            result.code = 4
            result.message_mapping[4] = message_mapping[4] + message
        return result
Exemplo n.º 16
0
    def post(self):
        message_mapping = [
            'success in oss', 'success in resource server',
            'failed , not exist'
        ]
        result = ReturnStruct(message_mapping)
        key = self.get_argument('key')
        exist = self._picture_model.check_exist(key)
        if exist:
            url = self._picture_model.get_url(key)
            result.data = {'url': url}
        else:

            file_dir = self.temp_file_dir + str(key)
            if os.path.exists(file_dir):
                result.code = 1
                url = 'http://' + self.application.host + ':' + self.application.port + self.application.prefix + '/project/redirect?key=' + str(
                    key)
                result.data = {'url': url}
            else:
                result.code = 2
        self.return_to_client(result)
        self.finish()
Exemplo n.º 17
0
    def add_new_person(self, person_id, person_name, picture_list):
        """Add face tokens to faceset;

        Args:
            face_tokens list.

        Returns:
        {
            "faceset_token": "42fb0d5bf81c5ac57c52344dddc3e7c9",
            "time_used": 479,
            "face_count": 1,
            "face_added": 1,
            "request_id": "1470293555,78637cd1-f773-47c6-8ba4-5af7153e4e00",
            "outer_id": "uabREDWZvshpHISwVsav",
            "failure_detail": []
        } 
        {   
            u'added': 1, 
            u'errormsg': u'OK', 
            u'face_ids': [u'1989390683606093797', u'1989390686576709605',
            u'1989390689447710693'],
            u'session_id': u'', 
            u'errorcode': 0, 
            u'ret_codes': [-1312, 0, -1312]
        }
        {
            u'group_ids': [], 
            u'suc_face': 0, 
            u'errormsg': u'SDK_IMAGE_FACEDETECT_FAILED', 
            u'session_id': u'', 
            u'errorcode': -1101,
            u'suc_group': 0, 
            u'person_id': u'3'
         }
        """
        mapping = [
            'insert success',
            'has low qualitity picture',
            'insert failed',
        ]
        if type(person_id) == ObjectId:
            person_id = str(person_id)
        to_return = ReturnStruct(mapping)
        picture = picture_list[0]
        result = self.youtu.NewPerson(person_id,
                                      picture, [self.group_id],
                                      person_name=person_name,
                                      tag='',
                                      data_type=2)
        logging.info("new person result is %s" % result)
        # string_token=''
        # for item in face_tokens:
        #     string_token = string_token+item+','
        # string_token = string_token[0:-1]
        if result['errorcode'] == 0:
            # first picture detect success.
            del picture_list[0]
            if picture_list != []:
                result2 = self.youtu.AddFace(person_id,
                                             picture_list,
                                             tag='',
                                             data_type=2)
                logging.info("add face result is %s" % result2)
                if result2['errorcode'] == 0:
                    if result2['added'] != len(picture_list):
                        # some picture detect failed
                        def find_all_index(arr, item):
                            return [i for i, a in enumerate(arr) if a != item]

                        invalid_index = find_all_index(result2['ret_codes'], 0)

                        def find_all_index_item(arr, arr_index):
                            return [arr[a] for a in arr_index]

                        invalid_msg = find_all_index_item(
                            result2['ret_codes'], invalid_index)
                        to_return.code = 1
                        to_return.data = {
                            'invalid_msg': invalid_msg,
                            'invalid_index': [x + 1 for x in invalid_index]
                        }
                    else:
                        to_return.code = 0
                else:
                    # insert failed
                    to_return.code = 2
                    to_return.data = {
                        'errorcode': result2['errorcode'],
                        'errormsg': result2['errormsg']
                    }
            else:
                # only one picture.
                to_return.code = 0
        else:
            to_return.code = 2
            to_return.data = {
                'errorcode': result['errorcode'],
                'errormsg': result['errormsg']
            }
        if to_return.code != 0:
            # delete add new person.
            self.youtu.DelPerson(person_id)
        return to_return
Exemplo n.º 18
0
    def get(self):
        """Get lastest update message [include LBS message, call help mesage and camera find high confidence picture message]

        Args:
            spot:
            max_distance:
            page:
            size:

        Returns:
             {
                "message": "default message",
                "code": 0,
                "data": {
                    "message_list": [
                        {
                            "pic_key": "http://cloudeye.oss-cn-shanghai.aliyuncs.com/user48%3A%3A1482904514.95.jpg?OSSAccessKeyId=LTAIkY3jD1E5hu8z&Expires=1482906060&Signature=SDRhsnWkqQt59dc%2B%2BAkUgZPuqTA%3D",
                            "name": "俞敏洪",
                            "std_pic_key": "http://cloudeye.oss-cn-shanghai.aliyuncs.com/r?OSSAccessKeyId=LTAIkY3jD1E5hu8z&Expires=1482906060&Signature=BT1EQ4VbmIfTBbEeRVWJtpxEbto%3D",
                            "spot": [
                                22.9,
                                22.9
                            ],
                            "date": 1482904513,
                            "person_id": "586353c316b2d60f26bf73ec",
                            "type": 2
                        },
                        {
                            "pic_key": "empty",
                            "name": "chenxionghui",
                            "std_pic_key": "http://cloudeye.oss-cn-shanghai.aliyuncs.com/r?OSSAccessKeyId=LTAIkY3jD1E5hu8z&Expires=1482906060&Signature=BT1EQ4VbmIfTBbEeRVWJtpxEbto%3D",
                            "spot": [
                                22.9,
                                22.9
                            ],
                            "date": 1482888255,
                            "person_id": "5863144416b2d67b38f27f65",
                            "type": 0
                        }
                    ],
                    "page": 0,
                    "size": 10
                }
            }

        """
        result = ReturnStruct()
        spot = eval(self.get_argument("spot"))
        max_distance = float(self.get_argument("max_distance"))
        page = int(self.get_argument('page'))
        size = int(self.get_argument('size'))
        # temp for web request.
        jquery = ''
        try:
            jquery = str(self.get_argument('jsoncallback'))
        except Exception as e:
            pass
        # get the formal cases by size and spot range.
        person_info = self.message_model.get_lastest_message(
            spot, max_distance, page, size)
        # logging.info("MessageHandler, peson_info is %s "%person_info)
        result.data['message_list'] = copy.deepcopy(person_info)
        result.data['page'] = page
        result.data['size'] = size
        # logging.info("message list is %s"%person_info)
        # logging.info("result.data.message_list %s"%result.data['message_list'])
        result.print_info("[GetLastMessageHandler]")
        self.return_to_client(result, jquery)
        self.finish()
Exemplo n.º 19
0
    def post(self):
        """User can upload a picture for a specific person_id. 
        System will compare it and tell user if this is a high confidence face.
        Besides, if it is a high confidence face, we should store this new message and pugh this message though LBS and pilice man.

        Args:

            person_id:
            picture:
            coordinate:
            user_id

        Returns:

        """
        try:
            person_id = self.get_argument('person_id')
            coordinate = eval(self.get_argument('coordinate'))
            picture = self.get_argument('picture')
            description = self.get_argument('description')
            user_id = int(self.get_secure_cookie('user_id'))
            pic_type = self.get_argument('pic_type')
        except tornado.web.MissingArgumentError as e:
            raise MyMissingArgumentError(e.arg_name)
        try:
            binary_picture = base64.b64decode(picture)
        except TypeError as e:
            raise ArgumentTypeError('picture')
        message_mapping = [
            'find high confidence person',
            'the person maybe not the missing one or you upload a low quality picture'
        ]
        result = ReturnStruct(message_mapping)
        event_happen_date = self.get_even_happen_data()
        # 1. get person's std picture. personid--> -->face_token
        # std_face_token = self.person_model.get_person_std_pic(person_id)
        # # 2. detect picture --> face_token2
        # result_detect_struct = yield self.background_task(self.face_model.detect_img_list, [binary_picture], True)
        # result.merge_info(result_detect_struct)
        # # 3. compare face_token.
        # if result_detect_struct.code == 0:
        #     # the result just one element
        #     detect_result = result_detect_struct.data['detect_result_list']

        # -----[base64]不需要检测人脸,只要比较person_id和base64;不需要std_face_token;不需要detect_result
        confidence = yield self.background_task(self.face_model.compare_face,
                                                person_id, picture)
        result.data = confidence
        logging.info("[compare]the confidence is %s" % confidence)
        # [change]
        if confidence['errorcode'] == 0 and confidence[
                'ismatch'] and confidence['level'] >= self.confirm_level:
            # 4. update info
            result.code = 0
            #[change] 这里也不需要detect_result
            pic_key_list = yield self.background_task(
                self.picture_model.store_pictures, [binary_picture],
                "user" + str(user_id), pic_type)
            # 4. update track and person information
            shooter_info = {'user_id': user_id, 'description': description}
            event_info = {
                'coordinate': coordinate,
                'confidence': confidence['confidence'],
                'pic_key': pic_key_list[0],
                'person_id': person_id,
                'date': event_happen_date
            }
            self.person_model.update_person_status(self.person_model.PERSON,
                                                   event_info, shooter_info)
            # 5. send message.
            message_data = {
                'spot': coordinate,
                'date': event_happen_date,
                'person_id': person_id,
                'upload_user_id': user_id,
                'confidence': confidence['confidence'],
                'pic_key': pic_key_list[0]
            }
            self.message_model.send_message_factory(self.message_model.COMPARE,
                                                    message_data)
        else:
            result.code = 1
            result.data = confidence
        self.return_to_client(result)
        self.finish()
Exemplo n.º 20
0
    def detect_img_list(self, binary_picture_list, only):
        """detect face of a image list through face++, get face_token list as a result.

        Args:
            binary_picture_list
            only: if only, detect the higest quality picture.
        Returns:
            ReturnStruct.
                if code == 1: detect error, return low quality picture number in data['count']
                if code == 0: return the faces list in data. 
                    example: 
                        [
                            {
                                u'attributes': {
                                    u'facequality': 20.67800000000001
                                },
                                u'face_token': u'44f2a168abdb7770203ae924f3bfaa6c',
                                u'face_rectangle': {
                                    u'width': 180,
                                    u'top': 88,
                                    u'height': 180,
                                    u'left': 99
                                }
                            },
                            {
                                u'attributes': {
                                    u'facequality': 12.599000000000004
                                },
                                u'face_token': u'6eb1852aceb54bb1f69cd66863e0718a',
                                u'face_rectangle': {
                                    u'width': 138,
                                    u'top': 176,
                                    u'height': 138,
                                    u'left': 252
                                }
                            }
                        ]
        """
        message_mapping = [
            'detect all pictures successful', 'has low quality picture'
        ]
        to_return = ReturnStruct(message_mapping)
        detect_result_list = []
        count = 0
        for binary_picture in binary_picture_list:
            # detect.
            detect_result = self.face_model.detect_faces(binary_picture)
            if detect_result == []:
                # the quality of pictures is too to detect any faces
                to_return.code = 1
                to_return.data = {'failed_detect_count': count}
                break
            else:
                if only:
                    max_index = 0
                    max_quality = 0
                    item_count = 0
                    # get the highest quality face.
                    for item in detect_result:
                        if item['attributes']['facequality'] > max_quality:
                            max_index = item_count
                            max_quality = item['attributes']['facequality']
                        item_count += 1
                    detect_result = detect_result[max_index]
                    # appends.
                    detect_result_list.append(detect_result)
                else:
                    detect_result_list.extend(detect_result)
            count += 1

        if to_return.code != 1:
            to_return.data = {'detect_result_list': detect_result_list}
        # logging.info("[detect result list] detect img list function : %s"%detect_result_list)
        return to_return
Exemplo n.º 21
0
    def get(self):
        """Get all of information of a specific missing person, 
        include person's detail information adn his camera track list and person track list.

        Args:
            person_id:

        Returns:
            {
                "message": "default message",
                "code": 0,
                "data": {
                    "person_info": {
                        "last_update_time": 1482912276,
                        "lost_time": 1482893944,
                        "relation_telephone": "15195861108",
                        "description": "please help me dear!!!!",
                        "name": "俞敏洪",
                        "lost_spot": [
                            22.9,
                            22.9
                        ],
                        "picture_key_list": [
                            "http://cloudeye.oss-cn-shanghai.aliyuncs.com/reporter%3A48%3A%3A1482893949.95.jpg?OSSAccessKeyId=LTAIkY3jD1E5hu8z&Expires=1482912353&Signature=tPpR%2FNFaDVN2cyg%2FmflSpZcZ4Lo%3D",
                            "http://cloudeye.oss-cn-shanghai.aliyuncs.com/reporter%3A48%3A%3A1482893950.13.jpg?OSSAccessKeyId=LTAIkY3jD1E5hu8z&Expires=1482912353&Signature=Jsn00mREm%2BxF0p2n69Jgjn3qfO4%3D"
                        ],
                        "age": 20,
                        "last_update_spot": [
                            22.9,
                            22.9
                        ],
                        "sex": 0,
                        "relation_name": "chenxionghui",
                        "relation_id": 48,
                        "_id": "58632a7e16b2d67fa66fa9e9",
                        "formal": 0
                    },
                    "machine_track": [
                        {
                            "date": 1482911879,
                            "coordinate": [
                                22.9,
                                22.9
                            ],
                            "confidence": 89.421,
                            "pic_key": "http://cloudeye.oss-cn-shanghai.aliyuncs.com/camera1%3A%3A1482911881.05.jpg?OSSAccessKeyId=LTAIkY3jD1E5hu8z&Expires=1482912353&Signature=3PJal3HamwECLCeUWS2ivVHU2Uw%3D"
                        },
                        {
                            "date": 1482912135,
                            "coordinate": [
                                22.9,
                                22.9
                            ],
                            "confidence": 89.421,
                            "pic_key": "http://cloudeye.oss-cn-shanghai.aliyuncs.com/camera1%3A%3A1482912138.35.jpg?OSSAccessKeyId=LTAIkY3jD1E5hu8z&Expires=1482912353&Signature=yvIfz1Rj6spblpQy5g0n%2Fz%2FiPGY%3D"
                        }
                    ],
                    "person_track": [
                        {
                            "confidence": 89.543,
                            "pic_key": "http://cloudeye.oss-cn-shanghai.aliyuncs.com/user48%3A%3A1482912281.63.jpg?OSSAccessKeyId=LTAIkY3jD1E5hu8z&Expires=1482912353&Signature=f4gzXa%2B1UwfKTVMSQBaiihkBPbI%3D",
                            "user_id": 48,
                            "description": "maybe I find this missing child!",
                            "coordinate": [
                                22.9,
                                22.9
                            ],
                            "user_nick_name": "burningbear",
                            "date": 1482912276
                        }
                    ]
                }
            }
        """
        result = ReturnStruct()
        person_id = self.get_argument("person_id")
        # temp for web request.
        jquery = ''
        try:
            jquery = str(self.get_argument('jsoncallback'))
        except Exception as e:
            pass
        person_info = self.person_model.get_person_detail(person_id)
        result.data = person_info
        self.return_to_client(result, jquery)
        self.finish()