def oauth_weixin(request): import logging from www.misc.oauth2.weixin import Consumer from www.weixin.interface import dict_weixin_app, WeixinBase from www.tasks import async_change_profile_from_weixin app_key = WeixinBase().init_app_key() client = Consumer(app_key) code = request.REQUEST.get('code') if not code: return HttpResponseRedirect(client.authorize()) else: weixin_state = request.GET.get("state") # 获取access_token dict_result = client.token(code) access_token = dict_result.get('access_token') # logging.error(dict_result) # dict_result={u'errcode': 40029, u'errmsg': u'invalid code'} if dict_result.get("errcode") == 40029: # 重新授权 return HttpResponseRedirect(client.authorize()) # 自动检测用户登陆 openid = dict_result.get("openid") user_info = dict(nick=u"weixin_%s" % int(time.time() * 1000), url="", gender=0) flag, result = UserBase().get_user_by_external_info(source='weixin', access_token=access_token, external_user_id=openid, refresh_token=None, nick=user_info['nick'], ip=utils.get_clientip(request), expire_time=dict_result['expires_in'], user_url=user_info['url'], gender=user_info['gender'], app_id=dict_weixin_app[app_key]["app_id"]) if flag: user = result user.backend = 'www.middleware.user_backend.AuthBackend' auth.login(request, user) UserBase().update_user_last_login_time(user.id, ip=utils.get_clientip(request), last_active_source=2) # 更新用户资料 if settings.LOCAL_FLAG: async_change_profile_from_weixin(user, app_key, openid) else: async_change_profile_from_weixin.delay(user, app_key, openid) dict_next = { "introduction": "/company/introduction_m", "booking": "/company/booking", "recommend": "/company/invite", "contact": "/s/contact_us_m", "admin": "/admin/nav" } next_url = dict_next.get(weixin_state, dict_next["recommend"]) return HttpResponseRedirect(next_url) else: error_msg = result or u'微信登陆失败,请重试' return HttpResponse(error_msg) return HttpResponse(u'code is %s' % (code, ))
def oauth_weixin(request): import logging from www.misc.oauth2.weixin import Consumer from www.weixin.interface import dict_weixin_app, WexinBase from www.tasks import async_change_profile_from_weixin app_key = WexinBase().init_app_key() client = Consumer(app_key) code = request.REQUEST.get('code') if not code: return HttpResponseRedirect(client.authorize()) else: weixin_state = request.GET.get("state") # 获取access_token dict_result = client.token(code) access_token = dict_result.get('access_token') # logging.error(dict_result) # dict_result={u'errcode': 40029, u'errmsg': u'invalid code'} if dict_result.get("errcode") == 40029: # 重新授权 return HttpResponseRedirect(client.authorize()) # 自动检测用户登陆 openid = dict_result.get("openid") user_info = dict(nick=u"weixin_%s" % int(time.time() * 1000), url="", gender=0) flag, result = UserBase().get_user_by_external_info(source='weixin', access_token=access_token, external_user_id=openid, refresh_token=None, nick=user_info['nick'], ip=utils.get_clientip(request), expire_time=dict_result['expires_in'], user_url=user_info['url'], gender=user_info['gender'], app_id=dict_weixin_app[app_key]["app_id"]) if flag: user = result user.backend = 'www.middleware.user_backend.AuthBackend' auth.login(request, user) UserBase().update_user_last_login_time(user.id, ip=utils.get_clientip(request), last_active_source=2) # 更新用户资料 if settings.LOCAL_FLAG: async_change_profile_from_weixin(user, app_key, openid) else: async_change_profile_from_weixin.delay(user, app_key, openid) dict_next = {"home": "/car_wash/", "order_code": "/car_wash/order_code", "recharge": "/cash/recharge", "coupon": "/car_wash/coupon", "about": "/s/about", "help": "/s/help", "shop": "/shop/"} next_url = dict_next.get(weixin_state, "/car_wash/") return HttpResponseRedirect(next_url) else: error_msg = result or u'微信登陆失败,请重试' return HttpResponse(error_msg) return HttpResponse(u'code is %s' % (code, ))
def oauth_sina(request): from www.misc.oauth2.sina import Consumer client = Consumer() code = request.REQUEST.get('code') if not code: return HttpResponseRedirect(client.authorize()) else: # 获取access_token dict_result = client.token(code) access_token = dict_result.get('access_token') # 获取用户信息 openid = dict_result['uid'] user_info = client.request_api(access_token, '/2/users/show.json', data=dict(access_token=access_token, uid=openid)) # pprint(user_info) user_info = format_external_user_info(user_info, 'sina') flag, result = UserBase().get_user_by_external_info(source='sina', access_token=access_token, external_user_id=openid, refresh_token=dict_result['refresh_token'], nick=user_info['nick'], ip=utils.get_clientip(request), expire_time=dict_result['expires_in'], user_url=user_info['url'], gender=user_info['gender']) if flag: user = result user.backend = 'www.middleware.user_backend.AuthBackend' auth.login(request, user) next_url = request.session.get('next_url') or '/' request.session.update(dict(next_url='')) return HttpResponseRedirect(next_url) else: error_msg = result or u'新浪微博账号登陆失败,请重试' return render_to_response('account/login.html', locals(), context_instance=RequestContext(request)) return HttpResponse(u'code is %s' % code)
def ask_question(request, template_name='question/ask_question.html'): if request.POST: question_title = request.POST.get('question_title', '').strip() question_content = request.POST.get('question_content', '').strip() is_hide_user = request.POST.get('is_hide_user') topic_ids = request.POST.getlist('tag') question_type = request.POST.get('question_type', '') topic_ids = topic_ids or [ question_type, ] errcode, result = qb.create_question(request.user.id, question_title, question_content, ip=utils.get_clientip(request), is_hide_user=is_hide_user, topic_ids=topic_ids) if errcode == 0: request.session['guide'] = True return HttpResponseRedirect(result.get_url()) else: error_msg = result # 所有话题 topics = json.dumps( tb.format_topics_for_ask_page(tb.get_all_topics_for_show())) return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def regist(request, invitation_code=None, template_name='account/regist.html'): email = request.POST.get('email', '').strip() nick = request.POST.get('nick', '').strip() password = request.POST.get('password', '').strip() invitation = None invitation_code = invitation_code or request.session.get('invitation_code', '') if invitation_code: invitation = ib.get_invitation_by_code(invitation_code) if invitation: request.session['invitation_code'] = invitation.code if not invitation: # return HttpResponse(u'网站内测中,只能通过邀请注册,邀请码获取可以联系QQ: 2659790310') return render_to_response('account/alpha_regist.html', locals(), context_instance=RequestContext(request)) if request.POST: errcode, result = ub.regist_user(email, nick, password, ip=utils.get_clientip(request), invitation_code=request.session.get('invitation_code')) if errcode == 0: user = auth.authenticate(username=email, password=password) auth.login(request, user=user) next_url = request.session.get('next_url') or '/home' request.session.update(dict(next_url='', invitation_code='')) return HttpResponseRedirect(next_url) else: error_msg = result return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def modify_question(request, question_id): if request.POST: question_title = request.POST.get('question_title', '').strip() question_content = request.POST.get('question_content', '').strip() is_hide_user = request.POST.get('is_hide_user') topic_ids = request.POST.getlist('tag') question_type = request.POST.get('question_type', '') topic_ids = topic_ids or [ question_type, ] errcode, result = qb.modify_question(question_id, request.user, question_title, question_content, ip=utils.get_clientip(request), is_hide_user=is_hide_user, topic_ids=topic_ids) if errcode == 0: request.session['success_msg'] = u'修改成功' return HttpResponseRedirect(result.get_url()) else: request.session['error_msg'] = result return HttpResponseRedirect( qb.get_question_by_id(question_id).get_url())
def oauth_sina(request): from www.misc.oauth2.sina import Consumer client = Consumer() code = request.REQUEST.get('code') if not code: return HttpResponseRedirect(client.authorize()) else: # 获取access_token dict_result = client.token(code) access_token = dict_result.get('access_token') # 获取用户信息 openid = dict_result['uid'] user_info = client.request_api(access_token, '/2/users/show.json', data=dict(access_token=access_token, uid=openid)) # pprint(user_info) user_info = format_external_user_info(user_info, 'sina') flag, result = UserBase().get_user_by_external_info(source='sina', access_token=access_token, external_user_id=openid, refresh_token=dict_result['refresh_token'], nick=user_info['nick'], ip=utils.get_clientip(request), expire_time=dict_result['expires_in'], user_url=user_info['url'], gender=user_info['gender']) if flag: user = result user.backend = 'www.middleware.user_backend.AuthBackend' auth.login(request, user) next_url = request.session.get('next_url') or '/' request.session.update(dict(next_url='')) return HttpResponseRedirect(next_url) else: error_msg = result or u'新浪微博账号登陆失败,请重试' return render_to_response('account/login.html', locals(), context_instance=RequestContext(request)) return HttpResponse(u'code is %s' % code)
def regist(request, invitation_code=None, template_name='account/regist.html'): email = request.POST.get('email', '').strip() nick = request.POST.get('nick', '').strip() password = request.POST.get('password', '').strip() re_password = request.POST.get('re_password', '').strip() captcha = request.POST.get('captcha', '').strip() if request.POST: if captcha and request.session.get("captcha", "").strip() == captcha: errcode, result = ub.regist_user( email, nick, password, re_password, ip=utils.get_clientip(request), invitation_code=request.session.get('invitation_code')) if errcode == 0: user = auth.authenticate(username=email, password=password) auth.login(request, user=user) next_url = request.session.get('next_url') or '/' request.session.update(dict(next_url='', invitation_code='')) return HttpResponseRedirect(next_url) else: warning_msg = result else: warning_msg = u"请输入正确的验证码" return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def add_service_cash_record(request): service_id = request.REQUEST.get('service_id') value = request.REQUEST.get('value') operation = request.REQUEST.get('operation') notes = request.REQUEST.get('notes') ip = utils.get_clientip(request) return ServiceCashRecordBase().add_cash_record_with_transaction(service_id, value, operation, notes, ip)
def oauth_weixin(request): import logging import urllib from www.misc.oauth2.weixin import Consumer from www.weixin.interface import dict_weixin_app, WeixinBase from www.tasks import async_change_profile_from_weixin app_key = WeixinBase().init_app_key() client = Consumer(app_key) def _get_next_url(weixin_state): if weixin_state.startswith("cacheurl"): _next_url = urllib.unquote(cache.Cache().get(weixin_state)) else: dict_next = { "index": "/", "order": "/service/my_order", "recommendation": "/account/recommendation", "verify": "/account/verify", "about": "/s/about", "profile": "/account/profile", "contact": "/s/contact_us_m", "admin": "/admin/nav" } _next_url = dict_next.get(weixin_state, dict_next["index"]) return _next_url code = request.REQUEST.get('code') if not code: return HttpResponseRedirect(client.authorize()) else: weixin_state = request.GET.get("state") # 获取access_token dict_result = client.token(code) access_token = dict_result.get('access_token') # logging.error(dict_result) # dict_result={u'errcode': 40029, u'errmsg': u'invalid code'} if dict_result.get("errcode") == 40029: # 重新授权 return HttpResponseRedirect(client.authorize()) # 自动检测用户登陆 openid = dict_result.get("openid") user, result = UserBase().regist_by_weixin(openid, app_key, ip=utils.get_clientip(request), expire_time=dict_result['expires_in']) if user: user.backend = 'www.middleware.user_backend.AuthBackend' auth.login(request, user) next_url = _get_next_url(weixin_state) return HttpResponseRedirect(next_url) else: error_msg = result or u'微信登陆失败,请重试' return HttpResponse(error_msg) return HttpResponse(u'code is %s' % (code, ))
def add_user(request): email = request.POST.get('email', '').strip() nick = request.POST.get('nick', '').strip() password = request.POST.get('password', '').strip() re_password = request.POST.get('re_password', '').strip() ip = utils.get_clientip(request) flag, msg = UserBase().regist_user(email, nick, password, re_password, ip) return flag, msg.id if flag == 0 else msg
def add_user(request): email = request.POST.get('email', '').strip() nick = request.POST.get('nick', '').strip() password = request.POST.get('password', '').strip() re_password = request.POST.get('re_password', '').strip() ip = utils.get_clientip(request) flag, msg = UserBase().regist_user(email, nick, password, re_password, ip) return flag, msg.id if flag == 0 else msg
def add_cash_record(request): company_id = request.REQUEST.get('company_id') value = request.REQUEST.get('value') operation = request.REQUEST.get('operation') notes = request.REQUEST.get('notes') ip = utils.get_clientip(request) is_invoice = request.REQUEST.get('is_invoice') is_invoice = 1 if is_invoice == "1" else 0 return CashRecordBase().add_cash_record_with_transaction(company_id, value, operation, notes, ip, is_invoice)
def add_user(request): email = request.POST.get('email', '').strip() nick = request.POST.get('nick', '').strip() password = request.POST.get('password', '').strip() re_password = request.POST.get('re_password', '').strip() mobilenumber = request.POST.get('mobilenumber', '').strip() ip = utils.get_clientip(request) flag, msg = UserBase().regist_user_with_transaction(email, nick, password, re_password, ip, mobilenumber) return flag, msg.id if flag == 0 else msg
def api_get_city_by_ip(request): ip = utils.get_clientip(request) city_info = utils.get_city_by_ip_from_taobao(ip) city_name = "成都市" city_id = 1974 if city_info["country"] == u"中国": city = cb.get_one_city_by_name(city_info["city"]) if city: city_name = city.city city_id = city.id return dict(ip=ip, city_name=city_name, city_id=city_id)
def api_get_city_by_ip(request): ip = utils.get_clientip(request) city_info = utils.get_city_by_ip_from_taobao(ip) city_name = "成都市" city_id = 1974 if city_info["country"] == u"中国": city = cb.get_one_city_by_name(city_info["city"]) if city: city_name = city.city city_id = city.id return dict(ip=ip, city_name=city_name, city_id=city_id)
def modify_journey(request, journey_id): if request.POST: journey_title = request.POST.get('journey_title', '').strip() journey_content = request.POST.get('journey_content', '').strip() is_hide_user = request.POST.get('is_hide_user') errcode, result = jb.modify_journey(journey_id, request.user, journey_title, journey_content, ip=utils.get_clientip(request), is_hide_user=is_hide_user) if errcode == 0: request.session['success_msg'] = u'修改成功' return HttpResponseRedirect(result.get_url()) else: request.session['error_msg'] = result return HttpResponseRedirect(jb.get_journey_by_id(journey_id).get_url())
def create_answer(request, question_id): answer_content = request.POST.get('answer_content', '').strip() errcode, result = ab.create_answer(question_id, request.user.id, answer_content, ip=utils.get_clientip(request)) if errcode == 0: return HttpResponseRedirect(result.question.get_url()) else: request.session['error_msg'] = result request.session['answer_content'] = answer_content return HttpResponseRedirect( qb.get_question_by_id(question_id).get_url())
def modify_kit(request, kit_id): if request.POST: kit_title = request.POST.get('kit_title', '').strip() kit_content = request.POST.get('kit_content', '').strip() is_hide_user = request.POST.get('is_hide_user') errcode, result = jb.modify_kit(kit_id, request.user, kit_title, kit_content, ip=utils.get_clientip(request), is_hide_user=is_hide_user) if errcode == 0: request.session['success_msg'] = u'修改成功' return HttpResponseRedirect(result.get_url()) else: request.session['error_msg'] = result return HttpResponseRedirect(jb.get_kit_by_id(kit_id).get_url())
def write_kit(request, template_name='kit/write_kit.html'): if request.POST: kit_title = request.POST.get('kit_title', '').strip() kit_content = request.POST.get('kit_content', '').strip() is_hide_user = request.POST.get('is_hide_user') errcode, result = jb.create_kit(request.user.id, kit_title, kit_content, ip=utils.get_clientip(request), is_hide_user=is_hide_user) if errcode == 0: request.session['guide'] = True return HttpResponseRedirect(result.get_url()) else: error_msg = result return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def write_journey(request, template_name='journey/write_journey.html'): if request.POST: journey_title = request.POST.get('journey_title', '').strip() journey_content = request.POST.get('journey_content', '').strip() is_hide_user = request.POST.get('is_hide_user') errcode, result = jb.create_journey(request.user.id, journey_title, journey_content, ip=utils.get_clientip(request), is_hide_user=is_hide_user) if errcode == 0: request.session['guide'] = True return HttpResponseRedirect(result.get_url()) else: error_msg = result return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def process_response(self, request, response): from www.account.interface import UserBase if hasattr(request, '_process_start_timestamp'): t = int((time.time() - float(getattr(request, '_process_start_timestamp')))) if t >= 10: user_id = request.user.id if request.user.is_authenticated() else "anymouse" logging.error("LONG_PROCESS: %s %s %s" % (request.path, t, user_id)) # 更新活跃时间 if hasattr(request, 'user') and request.user.is_authenticated(): user_agent = request.META.get("HTTP_USER_AGENT", "").lower() last_active_source = 2 if "micromessenger" in user_agent else 0 UserBase().update_user_last_active_time(request.user.id, ip=utils.get_clientip(request), last_active_source=last_active_source) return response
def regist(request, template_name='account/regist.html'): email = request.POST.get('email', '').strip() nick = request.POST.get('nick', '').strip() password = request.POST.get('password', '').strip() if request.POST: ub = UserBase() flag, result = ub.regist_user(email, nick, password, ip=utils.get_clientip(request)) if flag: user = auth.authenticate(username=email, password=password) auth.login(request, user=user) next_url = request.session.get('next_url') or '/home' request.session.update(dict(next_url='')) return HttpResponseRedirect(next_url) else: error_msg = result return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def _decorator(request, *args, **kwargs): cache_obj = cache.Cache() cache_key = u'%s_%s_%s' % (utils.get_function_code(func), utils.get_clientip(request), str(datetime.datetime.now().date())) cache_count = cache_obj.get(cache_key, original=True) if cache_count is None: cache_obj.set(cache_key, 1, time_out=self.cycle, original=True) else: cache_count = int(cache_count) cache_count += 1 cache_obj.incr(cache_key) if cache_count > self.max_count: if request.is_ajax(): # return 99900, "test" return HttpResponse(json.dumps(dict(errcode=99900, errmsg=u'request limited by ip')), mimetype='application/json') else: return render_to_response('error.html', dict(err_msg=u'request limited by ip'), context_instance=RequestContext(request)) return func(request, *args, **kwargs)
def add_record(request): supplier_id = request.POST.get('supplier_id') price = request.POST.get('price') des = request.POST.get('des') img_name = '' img = request.FILES.get('img') if img: flag, img_name = qiniu_client.upload_img(img, img_type='purchase', file_name=None, dst_w=1024, dst_h=768) img_name = '%s/%s' % (settings.IMG0_DOMAIN, img_name) flag, msg = PurchaseRecordBase().add_record( supplier_id, des, price, img_name, request.user.id, utils.get_clientip(request) ) if flag == 0: url = "/admin/purchase_record?#modify/%s" % (msg.id) else: url = "/admin/purchase_record?%s" % (msg) return HttpResponseRedirect(url)
def regist(request, invitation_code=None, template_name='account/regist.html'): email = request.POST.get('email', '').strip() nick = request.POST.get('nick', '').strip() password = request.POST.get('password', '').strip() re_password = request.POST.get('re_password', '').strip() captcha = request.POST.get('captcha', '').strip() if request.POST: if captcha and request.session.get("captcha", "").strip() == captcha: errcode, result = ub.regist_user(email, nick, password, re_password, ip=utils.get_clientip(request), invitation_code=request.session.get('invitation_code')) if errcode == 0: user = auth.authenticate(username=email, password=password) auth.login(request, user=user) next_url = request.session.get('next_url') or '/' request.session.update(dict(next_url='', invitation_code='')) return HttpResponseRedirect(next_url) else: warning_msg = result else: warning_msg = u"请输入正确的验证码" return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def create_answer(request): answer_content = request.POST.get('answer_content', '').strip() obj_id = request.POST.get('obj_id', '').strip() obj_type = request.POST.get('obj_type', '').strip() obj = ab.get_obj(obj_id, obj_type) errcode, result = ab.create_answer(obj, obj_type, request.user.id, answer_content, ip=utils.get_clientip(request)) if errcode == 0: return HttpResponseRedirect(obj.get_url()) else: request.session['error_msg'] = result request.session['answer_content'] = answer_content return HttpResponseRedirect(obj.get_url())
def confirm_record(request): obj_id = request.POST.get('obj_id') ip = utils.get_clientip(request) return OrderRecordBase().confirm_record(obj_id, ip)
def like_journey(request): journey_id = request.POST.get('journey_id', '').strip() return lb.like_it(journey_id, request.user.id, ip=utils.get_clientip(request))
def like_answer(request): answer_id = request.POST.get('answer_id', '').strip() return lb.like_it(answer_id, request.user.id, ip=utils.get_clientip(request))
def use_order_code(request, car_wash_id): code = request.REQUEST.get("code", "").strip().replace(" ", "") return ocb.use_order_code(request.car_wash, request.user, code, ip=utils.get_clientip(request))
def get_unread_count_total(request): count_info = urb.get_unread_count_total(request.user) # 更新最后活跃时间 ub.update_user_last_active_time(request.user.id, ip=utils.get_clientip(request)) return HttpResponse(json.dumps(count_info), mimetype='application/json')
def deposit(request, company_id, template_name='pc/company/deposit.html'): ''' 在线充值 ''' account = CashAccountBase().get_account_by_company(company_id) total_fee = abs(account.balance) if request.method == "POST": from common.alipay import alipay_pc total_fee = request.POST.get('total_fee') pay_type = request.POST.get('pay_type') flag, msg = RechargeOrderBase().create_order(company_id, total_fee, pay_type, utils.get_clientip(request)) if flag == 0: order = msg return HttpResponseRedirect( alipay_pc.create_direct_pay_by_user( order.trade_id, u"三点十分下午茶", u"水果,点心,热饮", total_fee ) ) warning_msg = msg return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def modify_record(request): record_id = request.REQUEST.get('record_id') return PurchaseRecordBase().modify_record(record_id, utils.get_clientip(request))