def login(self): """ 用户登录 """ self.logined = datetime.now() self.ip = get_ip() self.spm = request.args.get('spm', self.spm) self.ip_area = parse_ip(get_ip()) self.save()
def prepay(self, **kwargs): """微信支付预付款下单,对接口进行封装。 :param body: 订单名称 :param detail: 订单详情 :param out_trade_no: 订单号 :param openid: 用户OpenID :param type: 订单分类,默认为normal :rtype: 微信接口返回结果 """ type = kwargs.pop('type', 'normal') kwargs.setdefault('appid', self.config.get('appid')) kwargs.setdefault('mch_id', self.config.get('mchid')) kwargs.setdefault('spbill_create_ip', get_ip()) kwargs.setdefault('notify_url', url_for(self.endpoint, type=type, _external=True)) kwargs.setdefault('trade_type', 'JSAPI') kwargs.setdefault('body', '微信支付') kwargs.setdefault('out_trade_no', 'wxtest') kwargs.setdefault('total_fee', 100) kwargs.setdefault('nonce_str', randstr(32)) kwargs.setdefault('sign', self.sign(**kwargs)) if 'openid' not in kwargs: raise ValueError('openid is required.') data = dicttoxml(kwargs, custom_root='xml', attr_type=False) try: xml = requests.post(self.PREPAY_URL, data=data).content return self.xml2dict(xml) except Exception, e: return dict(return_code='ERROR', return_msg=str(e))
def bind(self, args): if current_user.is_user(): if current_user.phone: abort(BINDED) current_user.phone = args['phone'] if um.config.required_bind_password: current_user.password = args['password'] current_user.save() return current_user user = um.models.User.objects(phone=args['phone']).first() if not user: user = um.models.User( phone=args['phone'], password=args['password'] if um.config.required_bind_password else '', channel=get_channel(), spm=get_spm(), ip=get_ip(), ) user.create() elif um.config.required_bind_password: user.password = args['password'] user.save() return user
def prepay(self, **kwargs): """微信支付预付款下单,对接口进行封装。 :param body: 订单名称 :param detail: 订单详情 :param out_trade_no: 订单号 :param openid: 用户OpenID :param type: 订单分类,默认为normal :rtype: 微信接口返回结果 """ config = kwargs.pop('config', {}) self.config['appid'] = config.get('appid') self.config['mchid'] = config.get('mchid') self.config['key'] = config.get('key') type = kwargs.pop('type', 'normal') kwargs.setdefault('appid', self.get_config('appid', config=config)) kwargs.setdefault('mch_id', self.get_config('mchid', config=config)) kwargs.setdefault('spbill_create_ip', get_ip()) kwargs.setdefault('notify_url', url_for(self.endpoint, type=type, _external=True)) kwargs.setdefault('trade_type', 'JSAPI') kwargs.setdefault('body', '微信支付') kwargs.setdefault('out_trade_no', 'wxtest') kwargs.setdefault('total_fee', 100) kwargs.setdefault('nonce_str', randstr(32)) kwargs.setdefault('sign', self.sign(config=config, **kwargs)) data = dicttoxml(kwargs, custom_root='xml', attr_type=False) try: xml = requests.post(self.PREPAY_URL, data=data).content return self.xml2dict(xml) except Exception, e: current_app.logger.error(traceback.format_exc()) return dict(return_code='ERROR', return_msg=str(e))
def prepay(self, **kwargs): """微信支付预付款下单,对接口进行封装。 :param body: 订单名称 :param detail: 订单详情 :param out_trade_no: 订单号 :param openid: 用户OpenID :param type: 订单分类,默认为normal :rtype: 微信接口返回结果 """ type = kwargs.pop('type', 'normal') kwargs.setdefault('appid', self.config.get('appid')) kwargs.setdefault('mch_id', self.config.get('mchid')) kwargs.setdefault('spbill_create_ip', get_ip()) kwargs.setdefault('notify_url', url_for('wxpay_callback', type=type, _external=True)) kwargs.setdefault('trade_type', 'JSAPI') kwargs.setdefault('body', '微信支付') kwargs.setdefault('out_trade_no', 'wxtest') kwargs.setdefault('total_fee', 100) kwargs.setdefault('nonce_str', randstr(32)) kwargs.setdefault('sign', self.sign(**kwargs)) if 'openid' not in kwargs: raise ValueError('openid is required.') data = dicttoxml(kwargs, custom_root='xml', attr_type=False) try: xml = requests.post(self.PREPAY_URL, data=data).content return self.xml2dict(xml) except Exception, e: return dict(return_code='ERROR', return_msg=str(e))
def question(id): form = AnswerForm() q = Question.objects(id=id).get_or_404() related = Question.objects( id__ne=id, tags__in=q.tags).order_by('-week_weight').limit(8) query = Answer.objects(question=q).order_by('-created') current_app.redis.sadd('qv_%s' % q.id, get_ip()) return query.paginate(id=id).render( 'common/question.html', question=q, related=related, form=form)
def create(self, args): user = um.models.User( email=args['email'], password=args['password'], channel=get_channel(), spm=get_spm(), ip=get_ip(), ) user.create() return user
def log(user, model, before_data, after_data, type, **kwargs): ip = kwargs.get('ip', get_ip()) spm = kwargs.get('spm', get_spm()) headers = kwargs.get('headers', request.headers) AdminChangeLog(user=user, model=model, before_data=before_data, after_data=after_data, type=type, ip=ip, spm=spm, headers=str(headers)).save()
def log(type, id, device, key='', spm=None, ip=None, ua=None): if current_app.config.get('FAST_MODE') is True: return spm = spm if spm else get_spm() ip = ip if ip else get_ip() ua = ua if ua else request.headers.get('User-Agent', '') um.models.UserLog(user=id, type=type, device=device, key=key, spm=spm, ip=ip, ua=ua).save()
def transfers(self, **kwargs): kwargs.setdefault('mch_appid', self.config.get('appid')) kwargs.setdefault('mchid', self.config.get('mchid')) kwargs.setdefault('check_name', 'NO_CHECK') kwargs.setdefault('amount', 1) kwargs.setdefault('desc', '企业打款') kwargs.setdefault('spbill_create_ip', get_ip()) kwargs.setdefault('nonce_str', randstr(32)) kwargs.setdefault('sign', self.sign(**kwargs)) data = dicttoxml(kwargs, custom_root='xml', attr_type=False) try: xml = requests.post(self.TRANSFERS, data=data, cert=self.config.get('cert')).content return self.xml2dict(xml) except Exception, e: current_app.logger.error(traceback.format_exc()) return dict(return_code='ERROR', return_msg=str(e))
def prepay(self, **kwargs): kwargs.setdefault('MchId', self.config.get('mchid')) kwargs.setdefault('PayTypeId', 'wechat_wap') kwargs.setdefault('TradeContent', '云计费') kwargs.setdefault('TradeAttach', '云计费') kwargs.setdefault('TradeMoney', 1) kwargs.setdefault('Ip', get_ip()) host = self.callback_host if self.callback_host else request.host backurl = 'http://%s%s' % (host, url_for(self.endpoint)) kwargs.setdefault('NotifyUrl', backurl) kwargs.setdefault('RedirectUrl', 'http://%s/' % request.host) kwargs['Sign'] = self.sign(**kwargs) try: return requests.post(self.PREPAY_URL % self.host, data=json.dumps(kwargs), timeout=8).json() except Exception, e: return dict(Error=-1, Message=str(e))
def prepay(self, **kwargs): kwargs.setdefault('body', '云计费') kwargs.setdefault('total_fee', '1') kwargs.setdefault('product_id', '20170101') kwargs.setdefault('goods_tag', 'default') kwargs.setdefault('op_user_id', self.config.get('op_user_id')) kwargs.setdefault('nonce_str', randstr(32)) host = self.callback_host if self.callback_host else request.host backurl = 'http://%s%s' % (host, url_for(self.endpoint)) kwargs.setdefault('notify_url', backurl) kwargs.setdefault('spbill_create_ip', self.config.get('spbill_create_ip', get_ip())) kwargs['sign'] = self.sign(**kwargs) try: res = requests.post(self.PREPAY_URL % self.host, data=json.dumps(kwargs)) return res.json() except Exception, e: return dict(errcode=500, msg=str(e))
def prepay(self, **kwargs): kwargs.setdefault('appid', self.config.get('appid')) kwargs.setdefault('mch_id', self.config.get('mchid')) kwargs.setdefault('spbill_create_ip', get_ip()) kwargs.setdefault('notify_url', url_for('wxpay_callback', _external=True)) kwargs.setdefault('trade_type', 'JSAPI') kwargs.setdefault('body', '微信支付') kwargs.setdefault('out_trade_no', 'wxtest') kwargs.setdefault('total_fee', 100) kwargs.setdefault('nonce_str', randstr(32)) kwargs.setdefault('sign', self.sign(**kwargs)) if 'openid' not in kwargs: raise ValueError('openid is required.') data = dicttoxml(kwargs, custom_root='xml', attr_type=False) try: xml = requests.post(self.PREPAY_URL, data=data).content return self.xml2dict(xml) except Exception, e: return dict(return_code='ERROR', return_msg=str(e))
def post(self): if not um.allow_phone: abort(ACCESS_DENIED) action = request.args.get('action') args = self.get_args() self.validate(action, args) PhoneCode = um.models.PhoneCode if current_app.is_web and not current_user.is_authenticated() \ and action not in PhoneCode.PASS_ACTIONS: verify_code = request.form.get('verify_code') code_len = current_app.config.get('VERIFY_CODE_LEN', 4) key = 'users_' + action + '_phone' code, times = get_verify_code(key, code_len=code_len) if code.lower() != verify_code.lower(): validate_code(key) abort(VERIFY_CODE_ERROR, refresh=True) code = PhoneCode.objects(phone=args['phone'], action=action).first() if code: if code.timelimit: abort(PHONE_CODE_TIME_LIMIT) else: ip = get_ip() ua = request.headers.get('User-Agent', '') code = PhoneCode(phone=args['phone'], action=action, ip=ip, ua=ua) if code.action in PhoneCode.REGISTERED_ACTIONS and code.registered: abort(PHONE_REGISTERED) elif code.action in PhoneCode.UNREGISTERED_ACTIONS and not code.registered: abort(PHONE_UNREGISTERED) condom.heart('send_phone_code') code.make() code.save() code.send() return success()
def bind(self, args): if current_user.is_user(): if current_user.email: abort(BINDED) current_user.email = args['email'] if um.config.required_bind_password: current_user.password = args['password'] current_user.save() return current_user user = um.models.User.objects(email=args['email']).first() if not user: user = um.models.User( email=args['email'], password=args['password'] if um.config.required_bind_password else '', channel=get_channel(), spm=get_spm(), ip=get_ip(), ) user.create() elif um.config.required_bind_password and user.password != args['password']: abort(PASSWORD_ERROR) return user
def log(type, id, device, key='', spm=None, ip=None): spm = spm if spm else get_spm() ip = ip if ip else get_ip() UserLog(user=id, type=type, device=device, key=key, spm=spm, ip=ip).save()
def create_empty(): return um.models.User(channel=get_channel(), spm=get_spm(), ip=get_ip())
def login(self): """ 用户登录 """ self.logined = datetime.now() self.ip = get_ip() self.spm = request.args.get('spm', self.spm) self.save()
def log(user, type, spm=None, ip=None): spm = spm if spm else get_spm() ip = ip if ip else get_ip() AdminUserLoginLog(user=user, type=type, spm=spm, ip=ip).save()
def create_empty(): return um.models.User( channel=get_channel(), spm=get_spm(), ip=get_ip())