def get_wx_config_accesstoken(self, url): import time import hashlib noncestr = self.__create_nonce_str() data = { "url": url, "jsapi_ticket": mp.jsticket(), 'timestamp': int(time.time()), "noncestr": noncestr } logger.info("get wx config %s", data) try: # response_str = "&".join([str(k)+'='+str(v) for k, v in data.items()]) # response_str = signature_str.format(**data) response_str = '&'.join( ['%s=%s' % (key.lower(), data[key]) for key in sorted(data)]) logger.debug("get response: %s", response_str) signature = hashlib.sha1(response_str.encode('utf-8')).hexdigest() logger.debug('get signature: %s', signature) data['sign'] = signature data['appid'] = APP_ID except: logger.exception("Get wx config error") return SYSTEM_ERROR # response = import_status("SUCCESS_GET_CONFIG", "OK") # response['data'] = data # return response return data
def login(self): """超级用户登录""" json_data = request.json suname = json_data.get('suname').encode('utf8') supassword = json_data.get('supassword') logger.debug("super user login data is %s", json_data) # if not suname or not supassword: # return PARAMS_MISS parameter_required('suname', 'supassword') try: suuser = self.ssuperuser.verify_super(suname, supassword) # if not suuser: # return SYSTEM_ERROR if suuser.SUlevel == 0: level = 'customerservice' if suuser.SUlevel == 1: level = 'ordinaryadmin' if suuser.SUlevel == 2: level = 'superadmin' token = usid_to_token(suuser.SUid, 'SuperUser') token_data = { 'token': token, 'level': level, 'head': suuser.SUheader } data = import_status('generic_token_success', 'OK') data['data'] = token_data return data except: logger.exception('super user login in error') raise SYSTEM_ERROR(u'用户名或密码错误')
def del_address(self): if is_tourist(): return TOKEN_ERROR(u"未登录, 或token错误") data = request.json logger.info("this is del address data %s", data) parameter_required("UAid") try: logger.debug("del address") del_address = self.suesraddress.delete_address(data.get("UAid")) if not del_address: return SYSTEM_ERROR exist_default = self.suesraddress.get_default_address_by_usid( request.user.id) if not exist_default: no_default_address = self.suesraddress.get_first_no_default_address( request.user.id) if no_default_address: self.suesraddress.change_default_address_status( no_default_address.UAid, {'UAdefault': True}) response = import_status("delete_useraddress_success", "OK") response['data'] = {"uaid": data.get("UAid")} return response except: logger.exception("del address error") return SYSTEM_ERROR
def add_useraddress(self): if not hasattr(request, 'user'): return TOKEN_ERROR(u"未登录, 或token错误") parameter_required("areaid", "UAname", "UAphone", "UAtext") data = request.json logger.info("this is useraddress data %s", data) try: uaid = str(uuid.uuid1()) logger.debug("get default address by usid") exist_default = self.suesraddress.get_default_address_by_usid( request.user.id) uadefault = True if not exist_default else data.get("UAdefault") if str(uadefault) not in ['True', 'False']: raise PARAMS_ERROR(u'uadefault参数不合法') if uadefault is True and exist_default: self.suesraddress.change_default_address_status( exist_default.UAid, {'UAdefault': False}) self.suesraddress.add_model( "UserAddress", **{ "UAid": uaid, "USid": request.user.id, "UAname": data.get("UAname"), "UAphone": data.get("UAphone"), "UAtext": data.get("UAtext"), "areaid": data.get("areaid"), "UAdefault": uadefault }) response = import_status("add_address_success", "OK") response['data'] = {"UAid": uaid} return response except: logger.exception("add user address error") return SYSTEM_ERROR
def get_all(self): """活动所有热文""" if is_tourist(): raise TOKEN_ERROR(u'未登录') args = request.args.to_dict() logger.debug("get hotmessage args is %s", args) lasting = args.get('lasting', 'true') htfilter = 1 if is_partner() else 0 if is_admin(): htfilter = [0, 1] try: hot_list = self.s_hotmessage.get_hotmsg_list_by_filter(htfilter) if str(lasting) == 'true': hot_list = filter( lambda hot: hot.HMstarttime < get_db_time_str() < hot. HMendtime, hot_list) for hotmsg in hot_list: hotmsg.HMstarttime = get_web_time_str(hotmsg.HMstarttime) hotmsg.HMendtime = get_web_time_str(hotmsg.HMendtime) data = import_status("get_hotmessage_list_success", "OK") data['data'] = hot_list return data except: logger.exception("get hotmessage error") raise SYSTEM_ERROR(u'服务器繁忙')
def add_complain(self): if not hasattr(request, 'user'): return TOKEN_ERROR # 未登录, 或token错误 parameter_required("OIid", "COtype") data = request.json try: complain = self.scomplain.get_complain_by_oiid(data.get("OIid")) logger.debug("get complain by oiid %s", complain) if complain: return import_status("complain_repeat_error", "WD_ERROR", "error_complain_exit") coid = str(uuid.uuid1()) cotype_list = [str(i) for i in data.get("COtype", [])] self.scomplain.add_model( "Complain", **{ "COid": coid, "COcontent": data.get("COcontent"), "COtype": ",".join(cotype_list), "OIid": data.get("OIid"), "USid": request.user.id, "COtreatstatus": 1, }) response = import_status("complain_success", "OK") response['data'] = {"COid": coid} return response except: logger.exception("add complain error") return SYSTEM_ERROR
def update_address(self): if not hasattr(request, 'user'): return TOKEN_ERROR(u"未登录, 或token错误") args = request.args.to_dict() logger.debug("this is address args %s", args) data = request.json logger.debug("this is address data %s", data) uaid = args.get('uaid') uadefault = data.get("UAdefault") try: exist_default = self.suesraddress.get_default_address_by_usid( request.user.id) parameter_required("uaid", "areaid", "UAname", "UAphone", "UAtext", "UAdefault") if uadefault == True and exist_default: self.suesraddress.change_default_address_status( exist_default.UAid, {'UAdefault': False}) update_address = self.suesraddress.update_address( uaid, { "areaid": data.get("areaid"), "UAname": data.get("UAname"), "UAphone": data.get("UAphone"), "UAtext": data.get("UAtext"), "UAdefault": uadefault }) logger.info("update address succress ") if not update_address: raise SYSTEM_ERROR(u'数据更新错误') response = import_status("update_useraddress_success", "OK") response['data'] = {"uaid": args["uaid"]} return response except: logger.exception("update address error") return SYSTEM_ERROR
def get_complain_by_usid(self): """后台管理查看投诉记录""" if not hasattr(request, 'user'): raise TOKEN_ERROR() # 未登录, 或token错误 args = request.args.to_dict() logger.debug("get complain args is %s", args) page_size = args.get('page_size') page_size = 10 if not page_size else int(page_size) page_num = args.get('page_num') page_num = 1 if not page_num else int(page_num) try: complain_list = self.scomplain.admin_get_all_complain( page_size, page_num) complain_list_length = self.scomplain.admin_get_complain_count() from WeiDian.config.enums import complain_type data = import_status("get_complain_success", "OK") for complain in complain_list: colist = str(complain.COtype).split(",") logger.debug('get colist %s', colist) complaintype = ",".join([complain_type.get(i) for i in colist]) logger.debug('convert complain type %s', complaintype) complain.COtype = complaintype user_info = self.suser.get_user_by_user_id(complain.USid) complain.fill(user_info.USname, 'usname') complain.COcreatetime = get_web_time_str(complain.COcreatetime) data['data'] = complain_list data['count'] = complain_list_length logger.debug("get complain by usid %s", complain_list) return data except: logger.exception("get complain by usid error") raise SYSTEM_ERROR(u'获取数据错误')
def add_bankcard(self): if not hasattr(request, 'user'): return TOKEN_ERROR(u"未登录, 或token错误") data = request.json logger.info("this add bankcard info %s", data) parameter_required('BCusername', 'BCnumber', 'BCbankname', 'BCaddress') banknumber = str(data.get('BCnumber')).strip() self._verify_cardnum(banknumber, error='raise') usid = request.user.id try: bankcard = self.sbankcard.update_bankcard_by_usid( usid, {'BCisdelete': True}) logger.debug("bankcard count is %s", bankcard) bcid = str(uuid.uuid1()) self.sbankcard.add_model( "BankCard", **{ "BCid": bcid, "USid": usid, "BCusername": data.get("BCusername"), "BCnumber": banknumber, "BCbankname": data.get("BCbankname"), "BCaddress": data.get("BCaddress") }) response = import_status("add_bank_card_success", "OK") response['data'] = {"BCid": bcid} return response except: logger.exception("add bankcard error") return SYSTEM_ERROR
def share_activity(self): if is_tourist(): raise TOKEN_ERROR(u'未登录') data = request.json logger.debug("share qrcode data is %s", data) # data_url = data.get("dataurl") data_url = self.get_share_url(data.get("dataurl")) try: logger.info("get user info") user = self.suser.get_user_by_user_id(request.user.id) if not user: raise SYSTEM_ERROR(u'找不到该用户') save_path = LinuxRoot + LinuxImgs + "/qrcode/" + user.openid + '.png' if platform.system( ) == "Linux" else WindowsRoot + "qrcode/" + user.openid + '.png' make_qrcode(user.USheader, data_url, save_path) response = import_status("make_qrcode_success", "OK") response[ "qrcodeurl"] = QRCODEHOSTNAME + '/' + LinuxImgs + '/qrcode/' + user.openid + '.png' response[ "components"] = QRCODEHOSTNAME + '/' + LinuxImgs + '/components.png' logger.debug('response url is %s', response["qrcodeurl"]) url = data_url.split('#')[-1] from WeiDian.common.get_url_params import GetUrlParams parse_dict = GetUrlParams.url_params_to_dict(url) if 'baid' in parse_dict or 'prid' in parse_dict: # 分享时更改转发数 paramstype = bool(not 'baid' in parse_dict) filter_parameter = { 'AClinkvalue': parse_dict['prid'] if paramstype else parse_dict['baid'], 'ACSkipType': 2 if paramstype else 1, 'ACisdelete': False } act_list = self.sactivity.get_acid_by_filterid( filter_parameter) for act in act_list: if act.ACforwardFakenum != 0: self.sactivity.update_forward_fakenum(act.ACid) else: self.sactivity.add_model( 'ActivityFoward', **{ 'AFid': str(uuid.uuid1()), 'USid': request.user.id, 'ACid': act.ACid }) if is_partner(): self.do_shoppingtask_or_forwardtask(1) return response except: logger.exception("make qrcode error") return SYSTEM_ERROR(u'服务器繁忙')
def get_province(self): try: province_list = self.suesraddress.get_province() logger.debug("get province") # map(lambda x: x.hide('_id'), province_list) res = import_status("get_province_list_success", "OK") res["data"] = province_list return res except: logger.exception("get province error") return SYSTEM_ERROR
def get_one(self): """通过acid获取活动及活动下的评论 """ if is_tourist(): return AUTHORITY_ERROR(u"未登录或token错误") args = request.args.to_dict() logger.info("get one act args is %s", args) parameter_required('acid') acid = args.get('acid') # 活动id try: activity = self.sactivity.get_activity_by_acid(acid) logger.debug("get one act access") if not activity: raise SYSTEM_ERROR(u'数据错误,无此内容') self.sactivity.update_view_num(activity.ACid) self.fill_detail(activity) self.fill_like_num(activity) self.fill_type(activity) if activity.ACSkipType == 0: self.fill_comment_two(activity) activity.fill('none_skip', 'skip_type') activity.fill('无跳转类型', 'zh_skip_type') elif activity.ACSkipType == 1: baid = activity.AClinkvalue activity.fill('bigactivity', 'skip_type') activity.fill('专题', 'zh_skip_type') bigactivity = self.sbigactivity.get_one_big_act(baid) if not bigactivity: # raise NOT_FOUND() pass else: bigactivity_type = bigactivity.BAtype big_activity_content = {'type': bigactivity_type} big_activity_content.setdefault('baid', bigactivity.BAid) # 图片类型专题 if bigactivity_type == 0: big_activity_content.setdefault( 'baimage', bigactivity.BAlongimg) # 返回字段不修改 big_activity_content.setdefault( 'baid', bigactivity.BAid) activity.fill(big_activity_content, 'bigactivity') elif activity.ACSkipType == 2: self.fill_soldnum(activity) self.fill_product(activity) activity.fill('product', 'skip_type') activity.fill('商品', 'zh_skip_type') activity.ACstarttime = get_web_time_str(activity.ACstarttime) activity.ACendtime = get_web_time_str(activity.ACendtime) data = import_status("get_activity_info_success", "OK") data["data"] = activity return data except: logger.exception("get one act error") return SYSTEM_ERROR(u"服务器繁忙")
def get_wx_response(self, url, urltype): try: req = urllib2.Request(url) response = urllib2.urlopen(req) strResult = response.read() response.close() logger.info("%s is %s", urltype, strResult) return json.loads(strResult) except: logger.exception("%s error", urltype) raise NETWORK_ERROR
def get_all_task_level(self): if not is_admin(): raise AUTHORITY_ERROR(u"未登录") try: task_level_list = self.stask.get_task_level_all() map(self.fill_reward, task_level_list) response = import_status('get_task_success', 'OK') response['data'] = task_level_list except: logger.exception('get all task level error') raise SYSTEM_ERROR(u"服务器繁忙") return response
def add_or_update_task_level(self): if not is_admin(): raise AUTHORITY_ERROR(u"权限不足") parameter_required(*self.add_task_level) data = request.json logger.debug('get request data : %s', data) reward_list = data.get("reward") try: tasklevel = self.stask.get_tasklevel_by_level( int(data.get("TAlevel"))) if not tasklevel: tlid = str(uuid.uuid1()) self.stask.add_model( "TaskLevel", **{ "TLid": tlid, "TAlevel": data.get("TAlevel"), "TArole": data.get("TArole"), "TAcomplateNotifications": data.get("TAcomplateNotifications"), "TLisdelete": 0 }) for reward in reward_list: self.add_task_raward(tlid, reward) else: update_result = self.stask.update_task_level( tasklevel.TLid, { "TAlevel": data.get("TAlevel", 0), "TArole": data.get("TArole"), "TAcomplateNotifications": data.get("TAcomplateNotifications") }) if not update_result: return import_status("update_data_error", "WEIDIAN_ERROR", "error_update_data") self.sraward.delte_task_raward_by_tlid(tasklevel.TLid) for reward in reward_list: self.add_task_raward(tasklevel.TLid, reward) return import_status('add_task_success', 'OK') except: logger.exception('add or update task level error') return SYSTEM_ERROR(u"服务器繁忙")
def get_useraddress(self): if not hasattr(request, 'user'): return TOKEN_ERROR(u"未登录, 或token错误") try: adderss_list = self.suesraddress.get_address_list_by_usid( request.user.id) logger.debug("get address list") self.fill_areainfo_by_areaid(adderss_list) data = import_status("get_useraddress_success", "OK") data['data'] = adderss_list return data except: logger.exception("get useraddress by usid error ") return SYSTEM_ERROR
def get_exist_tags(self): if not is_admin(): raise AUTHORITY_ERROR(u'非管理员权限') args = request.args.to_dict() logger.debug("get tags args is %s", args) try: tags_list = self.stags.get_exist_tags() logger.info("try to get tags") response = import_status("messages_get_item_ok", "OK") response['data'] = {"tags_list": tags_list} return response except Exception as e: logger.exception("get exist tags error") raise SYSTEM_ERROR(u"数据错误")
def get_area_by_citynum(self): args = request.args.to_dict() logger.info("get area args is %s", args) parameter_required('cityid') city_id = args['cityid'] try: logger.debug("get arealist by cityid") area_list = self.suesraddress.get_arealist_by_cityid(city_id) # map(lambda x: x.hide('_id'), area_list) res = import_status("get_area_list_success", "OK") res["data"] = area_list return res except: logger.exception("get area list error") return SYSTEM_ERROR
def batch_delete_prlike(self): if is_tourist(): return TOKEN_ERROR(u'未登录') data = request.json plid_list = data.get("plid").split( ',') if data and 'plid' in data else None logger.info("batch del prlike data is %s", data) print plid_list try: self.sproductlike.batch_delete_prlike(plid_list) response = import_status('delete_activity_success', 'OK') response['data'] = {"plidlist": plid_list} return response except: logger.exception("batch del prlike error") return SYSTEM_ERROR
def inner(self, *args, **kwargs): try: result = fn(self, *args, **kwargs) if isinstance(result, (tuple, list)) or isinstance(result, BaseModel): self.session.expunge_all() self.session.commit() return result except Exception as e: print("DBERROR" + e.message) logger.exception("DBERROR") self.session.rollback() # raise e raise dberror() finally: self.session.close()
def get_city_by_provincenum(self): args = request.args.to_dict() logger.info("get city list args is %s", args) parameter_required("provinceid") province_id = args["provinceid"] try: logger.debug("get citylist by province_id") city_list = self.suesraddress.get_citylist_by_provinceid( province_id) # map(lambda x: x.hide('_id'), city_list) res = import_status("get_city_list_success", "OK") res["data"] = city_list return res except: logger.exception("get city list error") return SYSTEM_ERROR
def get_like_list(self): """获取用户的收藏列表""" if is_tourist(): return TOKEN_ERROR(u'未登录') args = request.args.to_dict() logger.debug("get like list args is %s", args) parameter_required("page_size", "page_num") page_num = args.get("page_num") page_size = args.get("page_size") page_num = 1 if not page_num else int(page_num) page_size = 5 if not page_size else int(page_size) try: productlike_list = self.sproductlike.get_productlike_list_by_usid( request.user.id, page_num, page_size) if not productlike_list: raise NOT_FOUND(u'用户无收藏信息') logger.info("get product like list success") map(self.fill_productinfo, productlike_list) # 获取转发数 from WeiDian.service.SActivity import SActivity from WeiDian.service.SActivityFoward import SActivityFoward total_forward = 0 for prlike in productlike_list: forward_act = SActivity().get_acid_by_filterid({ 'AClinkvalue': prlike.PRid, 'ACSkipType': 2, }) for act in forward_act: forward_num = SActivityFoward().get_fowardnum_by_acid( act.ACid) total_forward = total_forward + forward_num prlike.forwardnum = total_forward prlike.add("forwardnum") prlikecount = self.sproductlike.get_prlike_count_by_usid( request.user.id) data = import_status("get_product_like_success", "OK") data["count"] = prlikecount data["data"] = productlike_list return data except Exception as e: logger.exception("get product like error") raise SYSTEM_ERROR(u'收藏信息不存在')
def del_bankcard(self): if not hasattr(request, 'user'): return TOKEN_ERROR(u"未登录, 或token错误") data = request.json logger.info("this is del bankcard data %s", data) parameter_required("BCid") try: logger.debug("del bankcard") del_bankcard = self.sbankcard.del_bankcard(data.get("BCid"), request.user.id) if not del_bankcard: return SYSTEM_ERROR response = import_status("delete_bankcard_success", "OK") response['data'] = {"bcid": data.get("BCid")} return response except: logger.exception("del address error") return SYSTEM_ERROR
def get_bankcard(self): if not hasattr(request, 'user'): return TOKEN_ERROR(u"未登录, 或token错误") args = request.args.to_dict() logger.info("get bankcard this is args %s", args) try: logger.debug("get bankcard") my_bankcard = self.sbankcard.get_bankcard_by_usid(request.user.id) if not my_bankcard or not my_bankcard.BCnumber or not my_bankcard.BCusername: my_bankcard = None response = import_status("get_bankcard_success", "OK") response['data'] = my_bankcard return response except: logger.exception("get bankcard error") return SYSTEM_ERROR
def add_one(self): """添加活动热文, 需要管理员登录""" if not is_admin(): return AUTHORITY_ERROR # 权限不足 data = request.json logger.debug("add hotmessage data is ", data) parameter_required('HMtext', 'HMsort', 'HMSkipType') now_time = datetime.strftime(datetime.now(), format_for_db) HMstarttime = get_db_time_str(data.get('HMstarttime', now_time)) # 热文开始时间 hmstarttime_str_to_time = datetime.strptime(HMstarttime, format_for_db) # 7天以后 seven_days_later = datetime.strftime( hmstarttime_str_to_time + timedelta(days=7), format_for_db) HMendtime = get_db_time_str(data.get( 'HMendtime', seven_days_later)) # 热文结束时间, 默认7天以后 # if not self.sproduct.get_product_by_prid(prid): # return SYSTEM_ERROR HMSkipType = data.get('HMSkipType') if str(HMSkipType) not in self.hotmessage_type: raise SYSTEM_ERROR(u'HMSkipType参数错误') HMdisplaytype = data.get("HMdisplaytype") if str(HMdisplaytype) not in self.hotmessage_display_type: raise SYSTEM_ERROR(u'HMdisplaytype参数错误') try: HMid = str(uuid.uuid1()) self.s_hotmessage.add_model( 'HotMessage', **{ 'HMid': HMid, 'HMtext': data.get('HMtext'), 'HMstarttime': HMstarttime, 'HMendtime': HMendtime, 'HMsort': data.get('HMsort'), 'HMSkipType': HMSkipType, "HMcontent": data.get("HMcontent"), "HMdisplaytype": HMdisplaytype }) response_make_hotmesasge = import_status('add_hotmessage_success', 'OK') response_make_hotmesasge['data'] = {'HMid': HMid} return response_make_hotmesasge except: logger.exception("create hotmessage error") return SYSTEM_ERROR(u'服务器繁忙')
def add_admin_by_superadmin(self): """超级管理员添加普通管理""" if not is_superadmin(): raise AUTHORITY_ERROR(u'当前非超管权限') data = request.json logger.debug("add admin data is %s", data) parameter_required('suname', 'password', 'suheader') suid = str(uuid.uuid1()) password = data.get('password') if len(password) < 4: raise PARAMS_ERROR(u'密码长度低于4位') zh_pattern = re.compile(u'[\u4e00-\u9fa5]+') match = zh_pattern.search(password) if match: raise PARAMS_ERROR(u'密码包含中文字符') suname = data.get('suname') sulevel = data.get('sulevel') sulevel = 1 if not sulevel else int(sulevel) if sulevel not in [0, 1]: raise PARAMS_ERROR(u'sulevel参数错误') sufilter = {'SUisdelete': False, 'SUname': suname} suexist = self.ssuperuser.get_existuser_by_name(sufilter) if suexist: raise SYSTEM_ERROR(u'用户名已存在') try: self.ssuperuser.add_model( 'SuperUser', **{ 'SUid': suid, 'SUname': suname, 'SUpassword': generate_password_hash(password), 'SUheader': data.get('suheader'), 'SUlevel': sulevel, }) response = import_status("add_admin_success", "OK") response["data"] = {'suid': suid} return response except Exception as e: logger.exception("add admin error") raise SYSTEM_ERROR(u'添加管理员信息错误')
def update_bankcard(self): if not hasattr(request, 'user'): return TOKEN_ERROR(u"未登录, 或token错误") args = request.args.to_dict() logger.info("this is update bankcard args %s", args) data = request.json logger.info("this is update bankcard data %s", data) try: parameter_required("bcid", "BCusername", "BCnumber", "BCbankname", "BCaddress") update_bankcard = self.sbankcard.update_bankcard( args["bcid"], data) logger.debug("update bankcard accress") if not update_bankcard: return SYSTEM_ERROR response = import_status("update_bankcard_success", "OK") response["data"] = {"bcid": args["bcid"]} return response except: logger.exception("update bankcard error") return SYSTEM_ERROR
def get_levelrules(self): if is_tourist(): return AUTHORITY_ERROR(u"未登录") try: lr_list = self.slevelrules.get_rule_list() logger.debug("get level rules") map(lambda x: setattr(x, 'LRtext', re.sub('\s', '', x.LRtext)), lr_list) user = self.suser.get_user_by_user_id(request.user.id) if user.USlevel == 0: user.level = 'ordinary' if user.USlevel > 0: user.level = 'partner' user.add('level').hide('USid', 'USname', 'USheader') data = import_status("get_levelrules_success", "OK") data['data'] = lr_list data['userlevel'] = user.level return data except: logger.exception("get level rules error") return SYSTEM_ERROR
def get_image(self): if is_tourist(): return AUTHORITY_ERROR(u"未登录") args = request.args.to_dict() lasting = args.get('lasting', 'true') logger.debug("get image args is %s", args) try: logger.info("get my image list") adimage_list = self.sadimage.get_myimage() if lasting == 'true': now_time = datetime.strftime(datetime.now(), format_for_db) adimage_list = filter( lambda adimage: adimage.AIstarttime < now_time < adimage. AIendtime, adimage_list) for adimage in adimage_list: adimage.hide('AIurl') data = import_status("get_adimage_success", "OK") data['data'] = adimage_list return data except: logger.exception("get ad_image by aiid error") return SYSTEM_ERROR(u"无底部图片")
def upload_tags(self): if not is_admin(): raise AUTHORITY_ERROR(u'非管理员权限') data = request.json logger.debug("upload tags data is %s", data) tags = data.get('tags') atid_list = [] try: for tag in tags: atid = str(uuid.uuid1()) self.stags.add_model( 'ActivityTag', **{ 'ATid': atid, 'ACid': 'customupload', 'ATname': tag.get('atname'), }) atid_list.append(atid) res = import_status("save_photo_success", "OK") res['data'] = {'atid_list': atid_list} return res except Exception as e: logger.exception("upload tags error") raise SYSTEM_ERROR(u"上传数据错误")