示例#1
0
 def post(self):
     openid = None
     try:
         request = json.loads(self.request.body.decode())
         id = request.get('id', None)
         openid = request.get('openid', None)
         if openid is None:
             raise AttributeError
         if id is None:
             user = yield dbutil.do(
                 User.select(User.id).where(User.openid == openid).get)
             id = user.get_id()
         modified_user = shortcuts.dict_to_model(User,
                                                 request,
                                                 ignore_unknown=True)
         modified_user.set_id(id)
         yield dbutil.do(modified_user.save)
         self.write(Response(status=1, msg='ok', result={}).json())
     except AttributeError as e:
         self.write(Response(msg='sorry,亲,修改用户信息时必须包含openid').json())
         logging.exception('UpdateUserInfoHandler error: {0}'.format(
             str(e)))
     except DoesNotExist as e:
         self.write(
             Response(msg='sorry,亲,用户不存在 openid={0}'.format(openid)).json())
         logging.exception('UpdateUserInfoHandler error: {0}'.format(
             str(e)))
     except Exception as e:
         self.write(Response(msg='sorry,亲,修改用户信息失败').json())
         logging.exception('UpdateUserInfoHandler error: {0}'.format(
             str(e)))
示例#2
0
def pull_user_info(openid, web_access_token=None):
    if web_access_token:
        pull_user_info_url = wxconfig.pull_user_info_url.format(web_access_token, openid)
        http_client = AsyncHTTPClient()
        response = yield http_client.fetch(pull_user_info_url)
        logging.debug(response.body.decode())
        user_dict = json.loads(response.body.decode())
        user = dict_to_model(User, user_dict, ignore_unknown=True)
    else:
        user = User(openid='openid')
    user_id = None
    try:
        _user = dbutil.do(User.get, User.openid == openid)
        user_id = _user.get_id()
        exists = True
    except DoesNotExist:
        exists = False
    if exists:
        assert user_id
        user.set_id(user_id)
        user.updatetime = datetime.datetime.now()
    else:
        user.createtime = datetime.datetime.now()
    yield dbutil.do(user.save)
    user = yield dbutil.do(User.get, User.openid == openid)
    return model_to_dict(user)
示例#3
0
 def process(self, wxmsg):
     user = yield dbutil.do(
         User.select().where(User.openid == wxmsg.fromusername).get)
     user.subscribe = 0
     dbutil.do(user.save)
     wxmsg.response, wxmsg.responsetime = 1, datetime.datetime.now()
     yield super().process(wxmsg)
示例#4
0
 def process(self, wxmsg):
     user = yield dbutil.do(User.select().where(User.openid == wxmsg.fromusername).get)
     xml_data = ElementTree.fromstring(wxmsg.content)
     user.latitude = xml_data.find('Latitude').text
     user.longitude = xml_data.find('Longitude').text
     user.precision = xml_data.find('Precision').text
     user.updatetime = datetime.datetime.now()
     yield dbutil.do(user.save)
     wxmsg.response, wxmsg.responsetime = 1, datetime.datetime.now()
     yield super().process(wxmsg)
示例#5
0
 def process(self, wxmsg):
     user = yield dbutil.do(
         User.select().where(User.openid == wxmsg.fromusername).get)
     xml_data = ElementTree.fromstring(wxmsg.content)
     user.latitude = xml_data.find('Latitude').text
     user.longitude = xml_data.find('Longitude').text
     user.precision = xml_data.find('Precision').text
     user.updatetime = datetime.datetime.now()
     yield dbutil.do(user.save)
     wxmsg.response, wxmsg.responsetime = 1, datetime.datetime.now()
     yield super().process(wxmsg)
示例#6
0
def sync_media_file():
    while True:
        cur_hour = int(time.strftime('%H'))
        if cur_hour >= syncconfig.start_at and cur_hour < syncconfig.stop_at:
            try:
                event = yield dbutil.do(
                    Event.select().where((Event.syncfinish != 1)
                                         | (Event.syncfinish >> None)).
                    order_by(+Event.createtime).get)
                logging.info('开始处理活动[#{0}] 的media文件'.format(event.code))
                if event.mediaids:
                    all = json.loads(event.mediaids)
                    logging.debug('all ' + str(all))
                    if event.syncstatus:
                        uploaded = json.loads(event.syncstatus)
                    else:
                        uploaded = []
                    if event.imgurls:
                        img_urls = json.loads(event.imgurls)
                    else:
                        img_urls = {}
                    to_upload = list(set(all) - set(uploaded))
                    logging.info('待处理media文件清单' + str(to_upload))
                    results = yield [
                        wxutil.process_temp_resource(media_id)
                        for media_id in to_upload
                    ]
                    for i in range(0, len(results)):
                        if results[i] is not None:
                            uploaded.append(to_upload[i])
                            img_urls[to_upload[i]] = results[i]
                    event.syncstatus = json.dumps(uploaded, ensure_ascii=False)
                    event.imgurls = json.dumps(img_urls, ensure_ascii=False)
                    logging.info('已完成media文件清单:' + str(uploaded))
                    if set(all) == set(uploaded):
                        logging.info('活动[#{0}] 所有media文件已完成'.format(
                            event.code))
                else:
                    logging.info('mediaids不存在,没有media文件需要同步')
                event.syncfinish = 1
                yield dbutil.do(event.save)
            except DoesNotExist:
                logging.info('无待同步media文件, sleep...')
                yield gen.sleep(60 * 10)
            except Exception as e:
                logging.exception('同步media文件发生异常:{0}, 退出...'.format(str(e)))
                break
        else:
            yield gen.sleep(60 * 10)
示例#7
0
 def post(self):
     try:
         data = json.loads(self.request.body.decode())
         code = data['eventcode']
         openid = data['openid']
         star = yield dbutil.do(Star.select().where(
             (Star.eventcode == code) & (Star.openid == openid)
         ).get)
         star.status = -1
         star.updatetime = datetime.datetime.now()
         yield dbutil.do(star.save)
         self.write(Response(status=1, msg='ok', result={}).json())
     except Exception as e:
         self.write(Response(msg='sorry,亲,取消关注活动失败').json())
         logging.exception('UnStarEventHandler error: {0}'.format(str(e)))
示例#8
0
 def post(self):
     try:
         data = json.loads(self.request.body.decode())
         code = data['eventcode']
         openid = data['openid']
         star = yield dbutil.do(
             Star.select().where((Star.eventcode == code)
                                 & (Star.openid == openid)).get)
         star.status = -1
         star.updatetime = datetime.datetime.now()
         yield dbutil.do(star.save)
         self.write(Response(status=1, msg='ok', result={}).json())
     except Exception as e:
         self.write(Response(msg='sorry,亲,取消关注活动失败').json())
         logging.exception('UnStarEventHandler error: {0}'.format(str(e)))
示例#9
0
 def post(self):
     try:
         param = json.loads(self.request.body.decode())
         url = urllib.request.unquote(param['url'])
         if url.find('#') != -1:
             url = url[0:url.index('#')]
         jsapi_ticket = yield wxutil.get_jsapi_ticket()
         noncestr = self.random_str()
         timestamp = int(time.time())
         param = {
             'url': url,
             'timestamp': timestamp,
             'jsapi_ticket': jsapi_ticket,
             'noncestr': noncestr
         }
         tmp_str = '&'.join([
             '{0}={1}'.format(key, param[key])
             for key in sorted(param.keys())
         ])
         sha1 = hashlib.sha1(tmp_str.encode()).hexdigest()
         del param['jsapi_ticket']
         param['signature'] = sha1
         config = yield dbutil.do(Config.get)
         param['appid'] = config.appid
         self.write(Response(status=1, msg='ok', result=param).json())
     except Exception as e:
         self.write(Response(msg='sorry,亲,js api签名失败').json())
         logging.exception('GetUserInfoHandler error: {0}'.format(str(e)))
示例#10
0
 def post(self):
     try:
         param = json.loads(self.request.body.decode())
         url = urllib.request.unquote(param['url'])
         if url.find('#') != -1:
             url = url[0:url.index('#')]
         jsapi_ticket = yield wxutil.get_jsapi_ticket()
         noncestr = self.random_str()
         timestamp = int(time.time())
         param = {
             'url': url,
             'timestamp': timestamp,
             'jsapi_ticket': jsapi_ticket,
             'noncestr': noncestr
         }
         tmp_str = '&'.join(['{0}={1}'.format(key, param[key]) for key in sorted(param.keys())])
         sha1 = hashlib.sha1(tmp_str.encode()).hexdigest()
         del param['jsapi_ticket']
         param['signature'] = sha1
         config = yield dbutil.do(Config.get)
         param['appid'] = config.appid
         self.write(Response(
             status=1, msg='ok',
             result=param
         ).json())
     except Exception as e:
         self.write(Response(msg='sorry,亲,js api签名失败').json())
         logging.exception('GetUserInfoHandler error: {0}'.format(str(e)))
示例#11
0
def get_user_info(openid):
    id = None
    try:
        _user = yield dbutil.do(User.get, User.openid == openid)
        id = _user.get_id()
    except DoesNotExist:
        pass
    access_token = yield get_access_token()
    get_user_info_url = wxconfig.get_user_info_url.format(access_token, openid)
    http_client = AsyncHTTPClient()
    response = yield http_client.fetch(get_user_info_url)
    result = json.loads(response.body.decode())
    logging.debug(result)
    try:
        # 未关注微信号时,会出错
        result['errcode']
    except Exception:
        user = dict_to_model(User, result, ignore_unknown=True)
        if id:
            user.set_id(id)
            user.updatetime = datetime.datetime.now()
        else:
            user.createtime = datetime.datetime.now()
        # yield dbutil.do(user.save)
        return model_to_dict(user)
    logging.error('拉取用户信息出错:{0}'.format(result))
示例#12
0
 def post(self):
     try:
         data = json.loads(self.request.body.decode())
         code = data['eventcode']
         openid = data['openid']
         star = None
         try:
             star = yield dbutil.do(
                 Star.select().where((Star.eventcode == code)
                                     & (Star.openid == openid)).get)
         except:
             pass
         if star:
             if star.status == 1:  # 已经关注
                 raise RuntimeError
             else:  # 已经取消关注
                 star.status = 1
                 star.updatetime = datetime.datetime.now()
         else:  # 首次关注
             results = yield [
                 dbutil.do(
                     Event.select(
                         Event.id,
                         Event.code).where(Event.code == code).get),
                 dbutil.do(
                     User.select(
                         User.id,
                         User.openid).where(User.openid == openid).get)
             ]
             event = results[0]
             user = results[1]
             star = Star(eventid=event.get_id(),
                         eventcode=event.code,
                         userid=user.get_id(),
                         openid=user.openid,
                         createtime=datetime.datetime.now(),
                         status=1)
         yield dbutil.do(star.save)
         self.write(Response(status=1, msg='ok', result={}).json())
     except RuntimeError as e:
         self.write(Response(msg='sorry,亲,用户已经关注该活动').json())
         logging.exception('StarEventHandler error: {0}'.format(str(e)))
     except Exception as e:
         self.write(Response(msg='sorry,亲,关注活动失败').json())
         logging.exception('StarEventHandler error: {0}'.format(str(e)))
示例#13
0
def refresh_access_token():
    logging.info('开始刷新微信access token')
    try:
        config = yield dbutil.do(Config.select().get)
        http_client = AsyncHTTPClient()
        logging.debug(wxconfig.access_token_url.format(config.appid, config.appsecret))
        response = yield http_client.fetch(
            wxconfig.access_token_url.format(config.appid, config.appsecret))
        logging.info(response.body.decode())
        result = json.loads(response.body.decode())
        config.accesstoken = result['access_token']
        config.jsapiticket = yield refresh_jsapi_ticket(config.accesstoken)
        config.expires = result['expires_in']
        logging.debug(config.accesstoken)
        logging.debug(config.jsapiticket)
        logging.debug(config.expires)
        yield dbutil.do(config.save)
    except Exception:
        pass
示例#14
0
def sync_media_file():
    while True:
        cur_hour = int(time.strftime('%H'))
        if cur_hour >= syncconfig.start_at and cur_hour < syncconfig.stop_at:
            try:
                event = yield dbutil.do(Event.select().where(
                    (Event.syncfinish != 1) | (Event.syncfinish >> None)).order_by(+Event.createtime).get)
                logging.info('开始处理活动[#{0}] 的media文件'.format(event.code))
                if event.mediaids:
                    all = json.loads(event.mediaids)
                    logging.debug('all ' + str(all))
                    if event.syncstatus:
                        uploaded = json.loads(event.syncstatus)
                    else:
                        uploaded = []
                    if event.imgurls:
                        img_urls = json.loads(event.imgurls)
                    else:
                        img_urls = {}
                    to_upload = list(set(all) - set(uploaded))
                    logging.info('待处理media文件清单' + str(to_upload))
                    results = yield [wxutil.process_temp_resource(media_id) for media_id in to_upload]
                    for i in range(0, len(results)):
                        if results[i] is not None:
                            uploaded.append(to_upload[i])
                            img_urls[to_upload[i]] = results[i]
                    event.syncstatus = json.dumps(uploaded, ensure_ascii=False)
                    event.imgurls = json.dumps(img_urls, ensure_ascii=False)
                    logging.info('已完成media文件清单:' + str(uploaded))
                    if set(all) == set(uploaded):
                        logging.info('活动[#{0}] 所有media文件已完成'.format(event.code))
                else:
                    logging.info('mediaids不存在,没有media文件需要同步')
                event.syncfinish = 1
                yield dbutil.do(event.save)
            except DoesNotExist:
                logging.info('无待同步media文件, sleep...')
                yield gen.sleep(60 * 10)
            except Exception as e:
                logging.exception('同步media文件发生异常:{0}, 退出...'.format(str(e)))
                break
        else:
            yield gen.sleep(60 * 10)
示例#15
0
def refresh_oauth2_access_code(refresh_token):
    if refresh_access_token:
        return '{}'

    config = dbutil.do(Config.get)
    appid = config.appid
    oauth2_refresh_url = wxconfig.oauth2_access_token_refresh_url.format(appid, refresh_token)
    http_client = AsyncHTTPClient()
    response = yield http_client.fetch(oauth2_refresh_url)
    logging.debug(response.body.decode())
    return json.loads(response.body.decode())
示例#16
0
 def post(self):
     try:
         data = json.loads(self.request.body.decode())
         code = data['eventcode']
         openid = data['openid']
         star = None
         try:
             star = yield dbutil.do(Star.select().where(
                 (Star.eventcode == code) & (Star.openid == openid)
             ).get)
         except:
             pass
         if star:
             if star.status == 1:  # 已经关注
                 raise RuntimeError
             else:  # 已经取消关注
                 star.status = 1
                 star.updatetime = datetime.datetime.now()
         else:  # 首次关注
             results = yield [
                 dbutil.do(Event.select(Event.id, Event.code).where(Event.code == code).get),
                 dbutil.do(User.select(User.id, User.openid).where(User.openid == openid).get)
             ]
             event = results[0]
             user = results[1]
             star = Star(
                 eventid=event.get_id(),
                 eventcode=event.code,
                 userid=user.get_id(),
                 openid=user.openid,
                 createtime=datetime.datetime.now(),
                 status=1
             )
         yield dbutil.do(star.save)
         self.write(Response(status=1, msg='ok', result={}).json())
     except RuntimeError as e:
         self.write(Response(msg='sorry,亲,用户已经关注该活动').json())
         logging.exception('StarEventHandler error: {0}'.format(str(e)))
     except Exception as e:
         self.write(Response(msg='sorry,亲,关注活动失败').json())
         logging.exception('StarEventHandler error: {0}'.format(str(e)))
示例#17
0
def get_oauth2_access_code(code):
    if code:
        return '{}'

    config = dbutil.do(Config.get)
    appid = config.appid
    secret = config.appsecret
    oauth2_url = wxconfig.oauth2_access_token_url.format(appid, secret, code)
    http_client = AsyncHTTPClient()
    response = yield http_client.fetch(oauth2_url)
    logging.debug(response.body.decode())
    return json.loads(response.body.decode())
示例#18
0
def send_template_msg(templatemsg):
    if templatemsg is None: return
    logging.info('wxutil.send_template_msg - 发送模板消息:{0}'.format(templatemsg))
    config = yield dbutil.do(Config.get)
    url = wxconfig.custom_msg_url.format(config.accesstoken)
    # data = {
    #     'touser': templatemsg.touser,
    #     'template_id': templatemsg.templateid,
    #     'url': templatemsg.url,
    #     'data': json.loads(templatemsg.data)
    # }
    http_client = AsyncHTTPClient()
    response = yield http_client.fetch(url, **{'method': 'POST',
                                               'body': json.dumps(templatemsg, ensure_ascii=False)})
    result = json.loads(response.body.decode())
    errcode = result['errcode']
    if errcode == 0:
        templatemsg['msgid'] = result['msgid']
        templatemsg['updatetime'] = datetime.datetime.now()
        tmsg = dict_to_model(Templatemsg, templatemsg)
        yield dbutil.do(tmsg.save)
    else:
        raise RuntimeError('wxutil.send_template_msg-发送模板消息失败,消息内容:{0}'.format(templatemsg))
示例#19
0
def send_custom_msg(msg, reply):
    custom_text = copy.deepcopy(wxconfig.custom_text_template)
    custom_text['touser'] = msg.fromusername
    custom_text['text']['content'] = reply
    logging.debug(custom_text)

    config = yield dbutil.do(Config.select().get)
    url = wxconfig.custom_msg_url.format(config.accesstoken)
    logging.debug(url)

    logging.debug(json.dumps(custom_text, ensure_ascii=False, indent=4))
    http_client = AsyncHTTPClient()
    response = yield http_client.fetch(url, **{'method': 'POST',
                                               'body': json.dumps(custom_text, ensure_ascii=False)})
    logging.debug(response.body.decode())
示例#20
0
def query_fulltext_code(code):
    pinyin = Pinyin()
    initials = []
    for letter in pinyin.get_initials(code, splitter=' ').lower().split(' '):
        if letter.isalpha():
            initials.append(letter * 4)
    logging.debug(initials)
    analysed_code = pinyin.get_pinyin(code, splitter=u' ') + ' ' + ' '.join(initials)
    logging.debug(analysed_code)
    clause = "MATCH(`codepinyin`, `codepinyininitials`) AGAINST (%s)"
    query = yield dbutil.do(Event.select(SQL('*, ' + clause + ' AS similarity', analysed_code)).where(
        SQL(clause, analysed_code)).limit(4).dicts)
    events = [event for event in query]
    logging.debug(events)
    return events
示例#21
0
 def post(self):
     try:
         data = json.loads(self.request.body.decode())
         logging.debug(data)
         # 默认查询第一页
         page_number = data.get('page_number', 1)
         # 默认每页显示4条数据
         items_per_page = data.get('items_per_page', 4)
         query = yield dbutil.do(
             Event.select().order_by(-Event.createtime).paginate(
                 page_number, items_per_page).dicts)
         result = [event for event in query]
         self.write(Response(status=1, msg='ok', result=result).json())
     except Exception as e:
         self.write(Response(msg='sorry,亲,活动查询失败').json())
         logging.exception('CreateEventHandler error: {0}'.format(str(e)))
示例#22
0
def download_temp_resource(media_id):
    config = yield dbutil.do(Config.get)
    url = wxconfig.temp_resource_download_url.format(config.accesstoken, media_id)
    http_client = AsyncHTTPClient()
    response = yield http_client.fetch(url)
    filename = response.headers['Content-disposition'][len('attachment; filename="'):-1]
    if syncconfig.store_at:
        path = syncconfig.store_at
    else:
        path = sys.path[0] + os.path.sep + syncconfig.default_name
    os.makedirs(path, exist_ok=True)
    if path[-1] != os.path.sep:
        path += os.path.sep
    with open(path + filename, mode='wb') as file:
        file.write(response.body)
    return {'path': path, 'filename': filename}
示例#23
0
 def post(self):
     try:
         data = json.loads(self.request.body.decode())
         logging.debug(data)
         # 默认查询第一页
         page_number = data.get('page_number', 1)
         # 默认每页显示4条数据
         items_per_page = data.get('items_per_page', 4)
         query = yield dbutil.do(
             Event.select().order_by(-Event.createtime).paginate(
                 page_number, items_per_page).dicts)
         result = [event for event in query]
         self.write(Response(status=1, msg='ok', result=result).json())
     except Exception as e:
         self.write(Response(msg='sorry,亲,活动查询失败').json())
         logging.exception('CreateEventHandler error: {0}'.format(str(e)))
示例#24
0
 def _validate(signature, timestamp, nonce, echostr):
     try:
         logging.debug(
             'signature:{0} timestamp:{1} nonce:{2} echostr:{3}'.format(
                 signature, timestamp, nonce, echostr))
         _config = yield dbutil.do(Config().select().get)
         tmp_list = sorted([_config.token, timestamp, nonce])
         tmp_str = ''.join(tmp_list)
         logging.debug('before sha1: {0}'.format(tmp_str))
         tmp_str = hashlib.sha1(tmp_str.encode()).hexdigest()
         logging.debug('after  sha1: {0}'.format(tmp_str))
         if tmp_str == signature:
             return True
         else:
             return False
     except Exception as e:
         logging.exception('WeiXinMessageHandler error: {0}'.format(str(e)))
         return False
示例#25
0
 def _validate(signature, timestamp, nonce, echostr):
     try:
         logging.debug(
             'signature:{0} timestamp:{1} nonce:{2} echostr:{3}'.
             format(signature, timestamp, nonce, echostr))
         _config = yield dbutil.do(Config().select().get)
         tmp_list = sorted([_config.token, timestamp, nonce])
         tmp_str = ''.join(tmp_list)
         logging.debug('before sha1: {0}'.format(tmp_str))
         tmp_str = hashlib.sha1(tmp_str.encode()).hexdigest()
         logging.debug('after  sha1: {0}'.format(tmp_str))
         if tmp_str == signature:
             return True
         else:
             return False
     except Exception as e:
         logging.exception('WeiXinMessageHandler error: {0}'.format(str(e)))
         return False
示例#26
0
 def post(self):
     try:
         data = json.loads(self.request.body.decode())
         logging.debug(data)
         event = dict_to_model(Event, data)
         event.createtime = datetime.datetime.now()
         pinyin = Pinyin()
         event.codepinyin = pinyin.get_pinyin(event.code, splitter=' ')
         initials = []
         for letter in pinyin.get_initials(event.code,
                                           splitter=' ').lower().split(' '):
             if letter.isalpha():
                 initials.append(letter * 4)
         event.codepinyininitials = ' '.join(initials)
         yield dbutil.do(event.save)
         self.write(Response(status=1, msg='恭喜你,活动发布成功!', result={}).json())
         ioloop.IOLoop.current().spawn_callback(event_service.create_qrcode,
                                                event)
     except Exception as e:
         self.write(Response(msg='sorry,亲,活动发布失败').json())
         logging.exception('CreateEventHandler error: {0}'.format(str(e)))
示例#27
0
 def post(self):
     openid = None
     try:
         request = json.loads(self.request.body.decode())
         openid = request['openid']
         logging.debug('openid: {0}'.format(openid))
         user = yield dbutil.do(
             User.select().where(User.openid == openid).get)
         self.write(
             Response(status=1,
                      msg='ok',
                      result=shortcuts.model_to_dict(user)).json())
     except DoesNotExist as e:
         self.write(
             Response(msg='sorry,亲,用户不存在 openid={0}'.format(openid)).json())
         logging.exception('GetUserInfoHandler error: {0}'.format(str(e)))
     except Exception as e:
         self.write(
             Response(
                 msg='sorry,亲,查询用户失败 openid={0}'.format(openid)).json())
         logging.exception('GetUserInfoHandler error: {0}'.format(str(e)))
示例#28
0
 def post(self):
     try:
         data = json.loads(self.request.body.decode())
         logging.debug(data)
         event = dict_to_model(Event, data)
         event.createtime = datetime.datetime.now()
         pinyin = Pinyin()
         event.codepinyin = pinyin.get_pinyin(event.code, splitter=' ')
         initials = []
         for letter in pinyin.get_initials(event.code, splitter=' ').lower().split(' '):
             if letter.isalpha():
                 initials.append(letter * 4)
         event.codepinyininitials = ' '.join(initials)
         yield dbutil.do(event.save)
         self.write(Response(
             status=1, msg='恭喜你,活动发布成功!',
             result={}
         ).json())
         ioloop.IOLoop.current().spawn_callback(event_service.create_qrcode, event)
     except Exception as e:
         self.write(Response(msg='sorry,亲,活动发布失败').json())
         logging.exception('CreateEventHandler error: {0}'.format(str(e)))
示例#29
0
 def post(self):
     openid = None
     try:
         request = json.loads(self.request.body.decode())
         openid = request.get('openid', None)
         results = yield dbutil.do(
             Star.select().where((Star.openid == openid)
                                 & (Star.status == 1)).dicts)
         stars = [star for star in results]
         self.write(Response(status=1, msg='ok', result=stars).json())
     except AttributeError as e:
         self.write(Response(msg='sorry,亲,修改用户信息时必须包含openid').json())
         logging.exception('UpdateUserInfoHandler error: {0}'.format(
             str(e)))
     except DoesNotExist as e:
         self.write(
             Response(msg='sorry,亲,用户不存在 openid={0}'.format(openid)).json())
         logging.exception('UpdateUserInfoHandler error: {0}'.format(
             str(e)))
     except Exception as e:
         self.write(Response(msg='sorry,亲,修改用户信息失败').json())
         logging.exception('UpdateUserInfoHandler error: {0}'.format(
             str(e)))
示例#30
0
def create_qrcode(event):
    event.qrcodeurl = yield wxutil.get_temp_qrcode_url(event.get_id())
    event.qrcodecreatetime = datetime.datetime.now()
    yield dbutil.do(event.save)
示例#31
0
def get_baidu_api_url(query, region, output='json'):
    url = 'http://api.map.baidu.com/place/v2/search?q={0}&region={1}&output={2}&ak={3}'
    config = yield dbutil.do(Config.get)
    logging.debug(config.baiduak)
    return url.format(query, region, output, config.baiduak)
示例#32
0
 def process(self, wxmsg):
     yield dbutil.do(wxmsg.save)
示例#33
0
 def process(self, wxmsg):
     user = yield wxutil.get_user_info(wxmsg.fromusername)
     dbutil.do(shortcuts.dict_to_model(User, user).save)
     wxmsg.response, wxmsg.responsetime = 1, datetime.datetime.now()
     yield super().process(wxmsg)
示例#34
0
 def process(self, wxmsg):
     user = yield dbutil.do(User.select().where(User.openid == wxmsg.fromusername).get)
     user.subscribe = 0
     dbutil.do(user.save)
     wxmsg.response, wxmsg.responsetime = 1, datetime.datetime.now()
     yield super().process(wxmsg)
示例#35
0
def get_access_token():
    config = yield dbutil.do(Config.get)
    return config.accesstoken
示例#36
0
def get_jsapi_ticket():
    config = yield dbutil.do(Config.get)
    return config.jsapiticket