def remove_kind(self, kind_id): try: Kind.objects.get(id=kind_id).delete() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def test_paycallback(request): """ @note: 测试回调 """ params = request.REQUEST if request.user.id in (u'd081652b603211e48a41685b35d0bf16',): buyer_email = params.get('buyer_email') buyer_id = params.get('buyer_id') trade_no = params.get('trade_no') trade_id = params.get('out_trade_no') total_fee = float(params.get('total_fee')) errcode, errmsg = 0, "支付成功" try: ob = OrderBase() pay_info = 'trade_no:%s, buyer_email:%s, buyer_id:%s' % (trade_no, buyer_email, buyer_id) if trade_id.startswith("W"): errcode, errmsg = ob.order_pay_callback(trade_id=trade_id, payed_fee=total_fee, pay_info=pay_info) elif trade_id.startswith("R"): errcode, errmsg = CashOrderBase().cash_order_pay_callback(trade_id=trade_id, payed_fee=total_fee, pay_info=pay_info) status = u'success' if errcode == 0 else 'fail' except Exception, e: debug.get_debug_detail(e) status = u'fail' errmsg = u'支付遇到问题: %s' % str(e) if errcode == 20301: # 不存在的订单返回成功防止一直补发 return HttpResponse('success') return HttpResponse(u"status is:%s\nerrmsg is:%s" % (status, errmsg))
def modify_article_type(self, type_id, name, domain, sort_num=0, state=True): if None in (name, domain): return 99800, dict_err.get(99800) objs = ArticleType.objects.filter(id=type_id) if not objs: return 90105, dict_err.get(90105) objs = objs[0] temp = ArticleType.objects.filter(name=name) if temp and objs.id != temp[0].id: return 90103, dict_err.get(90103) temp = ArticleType.objects.filter(domain=domain) if temp and objs.id != temp[0].id: return 90104, dict_err.get(90104) try: objs.name = name objs.domain = domain objs.sort_num = sort_num objs.state = state objs.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def modify_article_type(self, type_id, name, domain, sort_num=0, state=True): if None in (name, domain): return 99800, dict_err.get(99800) objs = ArticleType.objects.filter(id=type_id) if not objs: return 90105, dict_err.get(90105) objs = objs[0] temp = ArticleType.objects.filter(name=name) if temp and objs.id != temp[0].id: return 90103, dict_err.get(90103) temp = ArticleType.objects.filter(domain=domain) if temp and objs.id != temp[0].id: return 90104, dict_err.get(90104) try: objs.name = name objs.domain = domain objs.sort_num = sort_num objs.state = state objs.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def test_paycallback(request): """ @note: 测试回调 """ params = request.REQUEST if request.user.id in (u'd081652b603211e48a41685b35d0bf16',): buyer_email = params.get('buyer_email') buyer_id = params.get('buyer_id') trade_no = params.get('trade_no') trade_id = params.get('out_trade_no') total_fee = float(params.get('total_fee')) errcode, errmsg = 0, "支付成功" try: ob = OrderBase() pay_info = 'trade_no:%s, buyer_email:%s, buyer_id:%s' % (trade_no, buyer_email, buyer_id) if trade_id.startswith("W"): errcode, errmsg = ob.order_pay_callback(trade_id=trade_id, payed_fee=total_fee, pay_info=pay_info) elif trade_id.startswith("R"): errcode, errmsg = CashOrderBase().cash_order_pay_callback(trade_id=trade_id, payed_fee=total_fee, pay_info=pay_info) status = u'success' if errcode == 0 else 'fail' except Exception, e: debug.get_debug_detail(e) status = u'fail' errmsg = u'支付遇到问题: %s' % str(e) if errcode == 20301: # 不存在的订单返回成功防止一直补发 return HttpResponse('success') return HttpResponse(u"status is:%s\nerrmsg is:%s" % (status, errmsg))
def create_feed(self, stock_id_or_object, question_content, answer_content, belong_market, origin_id=None, create_time=None, create_question_time=None): try: from www.timeline.interface import FeedBase try: assert stock_id_or_object and question_content and answer_content assert belong_market is not None except: transaction.rollback(using=DEFAULT_DB) return 99800, dict_err.get(99800) stock = stock_id_or_object now = datetime.datetime.now() ps = dict(stock=stock, question_content=question_content, answer_content=answer_content, belong_market=belong_market, origin_id=origin_id) ps.update(create_time=create_time or now, create_question_time=create_question_time or now) feed = StockFeed.objects.create(**ps) stock.feed_count += 1 stock.save() # 产生feed FeedBase().create_feed(stock.id, feed.id, feed_type=4) transaction.commit(using=DEFAULT_DB) return 0, feed except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=DEFAULT_DB) return 99900, dict_err.get(99900)
def modify_kind(self, kind_id, name, stocks, group=0, sort=0): if not name or not stocks or not kind_id: return 99800, dict_err.get(99800) try: kind = self.get_kind_by_id(kind_id) kind.name = name kind.group = group kind.sort = sort kind.save() StockKind.objects.filter(kind_id=kind_id).delete() for stock in stocks: StockKind.objects.create(kind=kind, stock_id=stock) # KindDataBase().update_kind_data(kind_id) # 异步调用 from www.tasks import async_update_kind_data async_update_kind_data.delay(kind_id) transaction.commit(using=DEFAULT_DB) except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=DEFAULT_DB) return 99900, dict_err.get(99900)
def modify_district(self, district_id, **kwargs): if not district_id: return 99800, dict_err.get(99800) district = self.get_district_by_id(district_id) if not district: return 99800, dict_err.get(99800) # if kwargs.get('pinyin'): # temp = self.get_city_by_pinyin(kwargs.get('pinyin')) # if temp and temp.id != city.id: # return 50105, dict_err.get(50105) # if kwargs.get('pinyin_abbr'): # temp = self.get_city_by_pinyin_abbr(kwargs.get('pinyin_abbr')) # if temp and temp.id != city.id: # return 50106, dict_err.get(50106) try: for k, v in kwargs.items(): setattr(district, k, v) district.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def add_department(self, company_id, name, des, addr, tel, city_id, district_id, sort_num=0): if None in (company_id, name): return 99800, dict_err.get(99800) if len(self.get_departments_by_name(name)) > 0: return 50109, dict_err.get(50109) import time try: obj = Department.objects.create(company_id=company_id, name=name, des=des, addr=addr, tel=tel, city_id=city_id, district_id=district_id, sort_num=sort_num, unique_id=int(time.time())) company = CompanyBase().get_company_by_id(company_id) company.department_count += 1 company.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def create_activity(self, user_id, title, content, start_date, end_date, sign_up_end_date, addr, assembly_point, activity_cover): try: content = utils.filter_script(content) if not all((user_id, title, content, start_date, end_date, sign_up_end_date, activity_cover, addr, assembly_point)): transaction.rollback(using=ACTIVITY_DB) return 99800, dict_err.get(99800) errcode, errmsg = JourneyBase().validate_journey_element(title, content, min_title_len=5) if not errcode == 0: transaction.rollback(using=ACTIVITY_DB) return errcode, errmsg # 检测时间是否正常 errcode, errmsg = self.check_date(start_date, end_date, sign_up_end_date) if not errcode == 0: transaction.rollback(using=ACTIVITY_DB) return errcode, errmsg activity = Activity.objects.create(user_id=user_id, title=title, content=content, start_date=start_date, end_date=end_date, sign_up_end_date=sign_up_end_date, activity_cover=activity_cover, addr=addr, assembly_point=assembly_point) transaction.commit(using=ACTIVITY_DB) return 0, activity except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=ACTIVITY_DB) return 99900, dict_err.get(99900)
def modify_department(self, department_id, **kwargs): if not department_id: return 99800, dict_err.get(99800) department = self.get_department_by_id(department_id) if not department: return 50101, dict_err.get(50101) company_id = kwargs.get("company_id") if company_id and str(company_id) != str(department.company_id): old_company = department.company old_company.department_count -= 1 old_company.save() new_company = CompanyBase().get_company_by_id(company_id) new_company.department_count += 1 new_company.save() try: for k, v in kwargs.items(): setattr(department, k, v) department.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def send_template_msg(self, app_key, openid, content, template_id): """ @note: 发送模板消息 """ access_token = self.get_weixin_access_token(app_key) url = '%s/cgi-bin/message/template/send?access_token=%s' % (weixin_api_url, access_token) jump_url = ('https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23cca542b396c669&redirect_uri=' 'http%3A%2F%2Fwww.84che.com%2Faccount%2Foauth%2Fweixin&response_type=code&scope=snsapi_base&state=order_code#wechat_redirect' ) data = u''' { "touser":"******", "template_id":"%(template_id)s", "url":"%(jump_url)s", "data":%(content)s } ''' % dict(openid=openid, template_id=template_id, jump_url=jump_url, content=content) data = data.encode('utf8') errcode, errmsg = 0, dict_err.get(0) try: r = requests.post(url, data=data, timeout=20, verify=False) text = r.text r.raise_for_status() result = json.loads(text) errcode, errmsg = result["errcode"], result["errmsg"] except Exception, e: debug.get_debug_detail(e) errcode, errmsg = 70100, dict_err.get(70100)
def join_activity(self, activity, user_id, real_name, mobile, partner_count, state=0): try: if not all((user_id, real_name, mobile)): transaction.rollback(using=ACTIVITY_DB) return 99800, dict_err.get(99800) if ActivityPerson.objects.filter(activity=activity, user_id=user_id): transaction.rollback(using=ACTIVITY_DB) return 30806, dict_err.get(30806) ap = ActivityPerson.objects.create(activity=activity, user_id=user_id, real_name=real_name, mobile=mobile, partner_count=partner_count, state=state) user = UserBase().get_user_by_id(user_id) if state > 0: activity.person_count += partner_count activity.save() else: UnreadCountBase().add_system_message( activity.user_id, content=u'用户<a href="/p/%s" class="co5 pr-5 pl-5" >%s</a>申请报名你创建的活动:<a class="co5 pr-5 pl-5" href="/activity/%s">%s</a>, 立刻去<a class="co5 pr-5 pl-5" href="/admin/sign#search/0/%s/1">审核</a>' % ( user.id, user.nick, activity.id, activity.title, real_name) ) transaction.commit(using=ACTIVITY_DB) return 0, dict_err.get(0) except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=ACTIVITY_DB) return 99900, dict_err.get(99900)
def send_template_msg(self, app_key, openid, content, template_id, jump_url=''): """ @note: 发送模板消息 """ access_token = self.get_weixin_access_token(app_key) url = '%s/cgi-bin/message/template/send?access_token=%s' % (weixin_api_url, access_token) data = u''' { "touser":"******", "template_id":"%(template_id)s", "url":"%(jump_url)s", "data":%(content)s } ''' % dict(openid=openid, template_id=template_id, jump_url=jump_url, content=content) data = data.encode('utf8') errcode, errmsg = 0, dict_err.get(0) try: r = requests.post(url, data=data, timeout=20, verify=False) text = r.text r.raise_for_status() result = json.loads(text) errcode, errmsg = result["errcode"], result["errmsg"] except Exception, e: debug.get_debug_detail(e) errcode, errmsg = 70100, dict_err.get(70100)
def test_paycallback(request): """ @note: 测试回调 """ params = request.REQUEST if request.user.id in (u'f02d7bea3c2b11e58be400163e001bb1',): buyer_email = params.get('buyer_email') buyer_id = params.get('buyer_id') trade_no = params.get('trade_no') trade_id = params.get('out_trade_no') total_fee = float(params.get('total_fee')) errcode, errmsg = 0, "支付成功" try: pay_info = 'trade_no:%s, buyer_email:%s, buyer_id:%s' % (trade_no, buyer_email, buyer_id) errcode, errmsg = RechargeOrderBase().order_pay_callback(trade_id=trade_id, payed_fee=total_fee, pay_info=pay_info) status = u'success' if errcode == 0 else 'fail' except Exception, e: debug.get_debug_detail(e) status = u'fail' errmsg = u'支付遇到问题: %s' % str(e) if errcode == 21301: # 不存在的订单返回成功防止一直补发 return HttpResponse('success') return HttpResponse(u"status is:%s\nerrmsg is:%s" % (status, errmsg))
def add_sight(self, name, province, des, code=None, imgs=[]): if None in (name, province, des): return 99800, dict_err.get(99800) if not imgs: return 50101, dict_err.get(50101) if Sight.objects.filter(name=name): return 50102, dict_err.get(50102) sight = None try: sight = Sight.objects.create(name=name, code=code, province_key=province, des=des) for img in imgs: SightImg.objects.create(sight=sight, img=img.replace('!600m0', '')) transaction.commit() except Exception, e: transaction.rollback() debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def modify_city(self, city_id, **kwargs): if not city_id: return 99800, dict_err.get(99800) city = self.get_city_by_id(city_id) if not city: return 99800, dict_err.get(99800) if kwargs.get('pinyin'): temp = self.get_city_by_pinyin(kwargs.get('pinyin')) if temp and temp.id != city.id: return 50105, dict_err.get(50105) if kwargs.get('pinyin_abbr'): temp = self.get_city_by_pinyin_abbr(kwargs.get('pinyin_abbr')) if temp and temp.id != city.id: return 50106, dict_err.get(50106) try: for k, v in kwargs.items(): setattr(city, k, v) city.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def modify_district(self, district_id, **kwargs): if not district_id: return 99800, dict_err.get(99800) district = self.get_district_by_id(district_id) if not district: return 99800, dict_err.get(99800) # if kwargs.get('pinyin'): # temp = self.get_city_by_pinyin(kwargs.get('pinyin')) # if temp and temp.id != city.id: # return 50105, dict_err.get(50105) # if kwargs.get('pinyin_abbr'): # temp = self.get_city_by_pinyin_abbr(kwargs.get('pinyin_abbr')) # if temp and temp.id != city.id: # return 50106, dict_err.get(50106) try: for k, v in kwargs.items(): setattr(district, k, v) district.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def modify_city(self, city_id, **kwargs): if not city_id: return 99800, dict_err.get(99800) city = self.get_city_by_id(city_id) if not city: return 99800, dict_err.get(99800) if kwargs.get('pinyin'): temp = self.get_city_by_pinyin(kwargs.get('pinyin')) if temp and temp.id != city.id: return 50105, dict_err.get(50105) if kwargs.get('pinyin_abbr'): temp = self.get_city_by_pinyin_abbr(kwargs.get('pinyin_abbr')) if temp and temp.id != city.id: return 50106, dict_err.get(50106) try: for k, v in kwargs.items(): setattr(city, k, v) city.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def save_static_page(self, footer_about='', about='', agreement='', contact=''): obj = StaticPage.objects.all() try: if obj: obj = obj[0] obj.footer_about = footer_about obj.about = about obj.agreement = agreement obj.contact = contact obj.save() else: obj = StaticPage.objects.create( footer_about=footer_about, about=about, agreement=agreement, contact=contact ) self.get_static_page(must_update_cache=True) except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def modify_department(self, department_id, **kwargs): if not department_id: return 99800, dict_err.get(99800) department = self.get_department_by_id(department_id) if not department: return 50101, dict_err.get(50101) company_id = kwargs.get("company_id") if company_id and str(company_id) != str(department.company_id): old_company = department.company old_company.department_count -= 1 old_company.save() new_company = CompanyBase().get_company_by_id(company_id) new_company.department_count += 1 new_company.save() try: for k, v in kwargs.items(): setattr(department, k, v) department.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def modify_kit(self, kit, user, kit_title, kit_content, ip='127.0.0.1', is_hide_user=None): try: # 防止xss漏洞 kit_title = utils.filter_script(kit_title) kit_content = utils.filter_script(kit_content) errcode, errmsg = self.validate_kit_element(kit_title, kit_content) if not errcode == 0: transaction.rollback(using=KIT_DB) return errcode, errmsg kit.title = kit_title kit.content = kit_content kit.ip = ip if is_hide_user: kit.is_hide_user = True kit.save() # 更新summary self.get_kit_summary_by_id(kit, must_update_cache=True) transaction.commit(using=KIT_DB) return 0, kit except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=KIT_DB) return 99900, dict_err.get(99900)
def add_friendly_link(self, name, href, link_type=0, city_id=None, img=None, des=None, sort_num=0): try: try: assert name and href if link_type == 0: assert city_id except: return 99800, dict_err.get(99800) obj = FriendlyLink.objects.create(name=name, href=href, city_id=city_id, img=img, link_type=link_type, sort_num=sort_num, des=des) # 更新缓存 self.get_all_friendly_link(must_update_cache=True) except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def create_kit(self, user_id, kit_title, kit_content, ip='127.0.0.1', is_hide_user=None): try: # 防止xss漏洞 kit_title = utils.filter_script(kit_title) kit_content = utils.filter_script(kit_content) errcode, errmsg = self.validate_kit_element(kit_title, kit_content) if not errcode == 0: transaction.rollback(using=KIT_DB) return errcode, errmsg is_hide_user = True if is_hide_user else False kit = Kit.objects.create(user_id=user_id, title=kit_title, content=kit_content, last_answer_time=datetime.datetime.now(), ip=ip, is_hide_user=is_hide_user) # 更新用户话题数信息 # UserCountBase().update_user_count(user_id=user_id, code='user_kit_count') transaction.commit(using=KIT_DB) return 0, kit except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=KIT_DB) return 99900, dict_err.get(99900)
def add_kind(self, name, stocks, group=0, sort=0): kind = None if not name or not stocks: return 99800, dict_err.get(99800) try: kind = Kind.objects.create( name=name, group=group, sort_num=sort ) for stock in stocks: StockKind.objects.create(kind=kind, stock_id=stock) # KindDataBase().update_kind_data(kind.id) # 异步调用 from www.tasks import async_update_kind_data async_update_kind_data.delay(kind.id) transaction.commit(using=DEFAULT_DB) except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=DEFAULT_DB) return 99900, dict_err.get(99900)
def modify_zhuanti(self, zhuanti_id, **kwargs): if not zhuanti_id or not kwargs.get('title') or not kwargs.get( 'domain'): return 99800, dict_err.get(99800) zhuanti = self.get_zhuanti_by_id_or_domain(zhuanti_id) if not zhuanti: return 70101, dict_err.get(70101) temp = Zhuanti.objects.filter(title=kwargs.get('title')) if temp and temp[0].id != zhuanti.id: return 70102, dict_err.get(70102) temp = Zhuanti.objects.filter(domain=kwargs.get('domain')) if temp and temp[0].id != zhuanti.id: return 70103, dict_err.get(70103) try: for k, v in kwargs.items(): setattr(zhuanti, k, v) zhuanti.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def send_template_msg(self, app_key, openid, content, template_id): """ @note: 发送模板消息 """ access_token = self.get_weixin_access_token(app_key) url = '%s/cgi-bin/message/template/send?access_token=%s' % ( weixin_api_url, access_token) jump_url = ( 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23cca542b396c669&redirect_uri=' 'http%3A%2F%2Fwww.cekaa.com%2Faccount%2Foauth%2Fweixin&response_type=code&scope=snsapi_base&state=order_code#wechat_redirect' ) data = u''' { "touser":"******", "template_id":"%(template_id)s", "url":"%(jump_url)s", "data":%(content)s } ''' % dict(openid=openid, template_id=template_id, jump_url=jump_url, content=content) data = data.encode('utf8') errcode, errmsg = 0, dict_err.get(0) try: r = requests.post(url, data=data, timeout=20, verify=False) text = r.text r.raise_for_status() result = json.loads(text) errcode, errmsg = result["errcode"], result["errmsg"] except Exception, e: debug.get_debug_detail(e) errcode, errmsg = 70100, dict_err.get(70100)
def modify_journey(self, journey, user, journey_title, journey_content, ip='127.0.0.1', is_hide_user=None): try: # 防止xss漏洞 journey_title = utils.filter_script(journey_title) journey_content = utils.filter_script(journey_content) errcode, errmsg = self.validate_journey_element( journey_title, journey_content) if not errcode == 0: transaction.rollback(using=JOURNEY_DB) return errcode, errmsg journey.title = journey_title journey.content = journey_content journey.ip = ip if is_hide_user: journey.is_hide_user = True journey.save() # 更新summary self.get_journey_summary_by_id(journey, must_update_cache=True) transaction.commit(using=JOURNEY_DB) return 0, journey except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=JOURNEY_DB) return 99900, dict_err.get(99900)
def save_static_page(self, footer_about='', about='', agreement='', contact=''): obj = StaticPage.objects.all() try: if obj: obj = obj[0] obj.footer_about = footer_about obj.about = about obj.agreement = agreement obj.contact = contact obj.save() else: obj = StaticPage.objects.create(footer_about=footer_about, about=about, agreement=agreement, contact=contact) self.get_static_page(must_update_cache=True) except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def set_important(self, journey, user, title, summary, author_user_id=None, img='', img_alt=None, sort_num=0): try: if author_user_id and not UserBase().get_user_by_id( author_user_id): transaction.rollback(using=JOURNEY_DB) return 99600, dict_err.get(99600) try: assert journey and user and title and summary except: transaction.rollback(using=JOURNEY_DB) return 99800, dict_err.get(99800) journey.is_important = True journey.save() transaction.commit(using=JOURNEY_DB) return 0, dict_err.get(0) except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=JOURNEY_DB) return 99900, dict_err.get(99900)
def add_article(self, title, content, article_type, weixin_mp_id, from_url, img, sort_num=0, is_silence=False): if None in (title, content, article_type, weixin_mp_id, from_url, img): return 99800, dict_err.get(99800) if Article.objects.filter(title=title): return 90107, dict_err.get(90107) obj = None try: obj = Article.objects.create(title=title, content=content, article_type_id=article_type, weixin_mp_id=weixin_mp_id, from_url=from_url, img=img, sort_num=sort_num, is_silence=is_silence) except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def modify_stock(self, stock_id, **kwargs): if not stock_id or not kwargs.get('name') or not kwargs.get('code') \ or not kwargs.get('belong_board') or not kwargs.get('belong_market'): return 99800, dict_err.get(99800) stock = self.get_stock_by_id(stock_id, None) if not stock: return 80100, dict_err.get(80100) temp = Stock.objects.filter(name=kwargs.get('name')) if temp and temp[0].id != stock.id: return 80102, dict_err.get(80102) temp = Stock.objects.filter(code=kwargs.get('code')) if temp and temp[0].id != stock.id: return 80103, dict_err.get(80103) try: for k, v in kwargs.items(): setattr(stock, k, v) stock.save() state = kwargs.get('state', True) # 修改股票动态记录的状态为false StockFeed.objects.filter(stock__id=stock.id).update(state=state) except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def create_invite(self, from_user_id, to_user_id, question_id): try: from www.question.interface import QuestionBase ub = UserBase() try: from_user = ub.get_user_by_id(from_user_id) to_user = ub.get_user_by_id(to_user_id) question = QuestionBase().get_question_by_id(question_id) assert from_user and to_user and question except: transaction.rollback(using=DEFAULT_DB) return 99800, dict_err.get(99800) if from_user_id == to_user_id: transaction.rollback(using=DEFAULT_DB) return 40100, dict_err.get(40100) # 同一个问题最多邀请6个人 if InviteAnswerIndex.objects.filter(from_user_id=from_user_id, question_id=question_id).count() >= 6: transaction.rollback(using=DEFAULT_DB) return 40101, dict_err.get(40101) # 重复邀请给出提示 if InviteAnswerIndex.objects.filter(from_user_id=from_user_id, to_user_id=to_user_id, question_id=question_id): transaction.rollback(using=DEFAULT_DB) return 40102, dict_err.get(40102) try: ia = InviteAnswer.objects.create(from_user_ids=json.dumps([from_user_id, ]), to_user_id=to_user_id, question_id=question_id) need_update_unread_count = True except: ia = InviteAnswer.objects.get(to_user_id=to_user_id, question_id=question_id) from_user_ids = json.loads(ia.from_user_ids) if from_user_id not in from_user_ids: from_user_ids.append(from_user_id) ia.from_user_ids = json.dumps(from_user_ids) ia.save() need_update_unread_count = True if ia.is_read else False # 建立索引 InviteAnswerIndex.objects.create(from_user_id=from_user_id, to_user_id=to_user_id, question_id=question_id) # 更新未读消息,新邀请或者邀请已读才更新未读数 if need_update_unread_count: UnreadCountBase().update_unread_count(to_user_id, code='invite_answer') # 发送提醒邮件 context = dict(user=from_user, question=question) async_send_email(to_user.email, u'%s 在智选邀请你回答问题' % (from_user.nick, ), utils.render_email_template('email/invite.html', context), 'html') transaction.commit(using=DEFAULT_DB) return 0, dict_err.get(0) except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=DEFAULT_DB) return 99900, dict_err.get(99900)
def create_answer(self, obj, obj_type, from_user_id, content, ip=None): try: obj_type = str(obj_type) content = utils.filter_script(content) if not all((obj, obj_type, from_user_id, content)): transaction.rollback(using=ANSWER_DB) return 99800, dict_err.get(99800) errcode, errmsg = JourneyBase().validate_content(content) if not errcode == 0: transaction.rollback(using=ANSWER_DB) return errcode, errmsg to_user_id = obj.user_id answer = Answer.objects.create(from_user_id=from_user_id, to_user_id=to_user_id, content=content, obj_id=obj.id, obj_type=obj_type, ip=ip) from_user = UserBase().get_user_by_id(from_user_id) # 添加at信息 if content.find('@') != -1: at_usernicks = utils.select_at(content) for nick in at_usernicks: at_user = UserBase().get_user_by_nick(nick) if at_user: # 自己@自己的关系不进行存储 if at_user.id != from_user_id: AtAnswer.objects.create(answer=answer, user_id=at_user.id) if at_user.id != to_user_id: # 更新@未读消息数 UnreadCountBase().update_unread_count(at_user.id, code='at_answer') # 发送提醒邮件 context = dict(user=from_user, answer=answer) # async_send_email(at_user.email, u'%s 在且行户外回答中@了你' % (from_user.nick, ), utils.render_email_template('email/at.html', context), 'html') # 更新未读消息 if from_user_id != to_user_id: UnreadCountBase().update_unread_count(to_user_id, code='received_answer') # 发送提醒邮件 to_user = UserBase().get_user_by_id(to_user_id) context = dict(user=from_user, answer=answer) # async_send_email(to_user.email, u'%s 在且行户外回答了你的提问' % (from_user.nick, ), utils.render_email_template('email/answer.html', context), 'html') # 更新用户回答统计总数 UserCountBase().update_user_count(user_id=from_user_id, code='user_answer_count') # 更新回答数冗余信息 obj.answer_count += 1 obj.last_answer_time = datetime.datetime.now() obj.save() transaction.commit(using=ANSWER_DB) return 0, answer except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=ANSWER_DB) return 99900, dict_err.get(99900)
def process_exception(self, request, exception): if type(exception) == Http404: return url = request.path ext_data = {"url": url, "method": request.method, "query_string": ",".join(["".join([k, request.REQUEST.get(k)]) for k in request.REQUEST])} debug.get_debug_detail(exception)
def save_img(request): imgFile = request.FILES.get('imgFile') flag = False try: flag, img_name = qiniu_client.upload_img(imgFile, img_type='editor') except Exception, e: debug.get_debug_detail(e)
def save_img(request): imgFile = request.FILES.get('imgFile') flag = False try: flag, img_name = qiniu_client.upload_img(imgFile, img_type='editor') except Exception, e: debug.get_debug_detail(e)
def sync_ext_id(requests, ext_id_dict): try: for k, v in ext_id_dict.items(): temp = WeixinMp.objects.get(id=k) temp.ext_id = v temp.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def add_cover(self, img, link, sort_num, des=""): if None in (img, link, sort_num): return 99800, dict_err.get(99800) try: obj = HomeCover.objects.create(img=img, link=link, sort_num=sort_num, des=des) except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def remove_bankey(self, key_id): if not key_id: return 90109, dict_err.get(90109) try: BanKey.objects.filter(id=key_id).delete() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def remove_bankey(self, key_id): if not key_id: return 90109, dict_err.get(90109) try: BanKey.objects.filter(id=key_id).delete() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def sync_ext_id(requests, ext_id_dict): try: for k, v in ext_id_dict.items(): temp = WeixinMp.objects.get(id=k) temp.ext_id = v temp.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def change_profile_from_weixin(self, user, app_key, openid): ''' @note: 通过微信资料修改 ''' try: import urllib2 from www.misc import qiniu_client from www.weixin.interface import dict_weixin_app, WexinBase if user.nick.startswith("weixin_"): user_id = user.id app_id = dict_weixin_app[app_key]["app_id"] weixin_user_info = WexinBase().get_user_info(app_key, openid) if weixin_user_info: nick = weixin_user_info["nickname"] gender = weixin_user_info["sex"] errcode, errmsg = self.check_gender(gender) if errcode != 0: return errcode, errmsg weixin_img_url = weixin_user_info.get("headimgurl") user_avatar = '' if weixin_img_url: # 上传图片 flag, img_name = qiniu_client.upload_img( urllib2.urlopen(weixin_img_url, timeout=20), img_type='weixin_avatar') if flag: user_avatar = '%s/%s' % (settings.IMG0_DOMAIN, img_name) else: logging.error(u'转换微信图片失败,weixin_img_url is %s' % weixin_img_url) ets = list( ExternalToken.objects.filter(app_id=app_id, external_user_id=openid, source="weixin")) if ets: et = ets[0] et.nick = nick et.save() nick = self.generate_nick_by_external_nick(nick) user = self.get_user_by_id(user_id) user.nick = nick user.avatar = user_avatar user.gender = int(gender) user.save() # 更新缓存 self.get_user_by_id(user.id, must_update_cache=True) return 0, user except Exception, e: debug.get_debug_detail(e)
def modify_customer_manager(self, user_id, **kwargs): if not user_id: return 99800, dict_err.get(99800) user = UserBase().get_user_by_id(user_id) if not user: return 50100, dict_err.get(50100) customer_manager = self.get_customer_manager_by_user_id(user_id) if not customer_manager: return 50102, dict_err.get(50102) temp = CustomerManager.objects.filter(id_cert=kwargs.get('id_cert')) if temp and temp[0].user_id != user_id: transaction.rollback(using=KAIHU_DB) return 50108, dict_err.get(50108) # 如果修改了营业部,所属城市也要一并修改 department_id = kwargs.get('department_id') old_department_id = customer_manager.department.id if department_id: temp = DepartmentBase().get_department_by_id(department_id) if not temp: return 50101, dict_err.get(50101) else: kwargs.update({'city_id': temp.city_id}) try: if kwargs.get("state") and customer_manager.state is False: # 通过审核发送通知 content = u'你的客户经理认证请求已经通过 <a href="%s/account/custom_manager">立即查看</a>' % settings.MAIN_DOMAIN UnreadCountBase().add_system_message(user_id, content, send_email=True) for k, v in kwargs.items(): setattr(customer_manager, k, v) customer_manager.save() # 新营业部客户经理个数 new_department = DepartmentBase().get_department_by_id(department_id) new_department.cm_count = new_department.get_active_custom_managers_count() # new_department.cm_count += 1 new_department.save() # 旧营业部客户经理个数 old_department = DepartmentBase().get_department_by_id(old_department_id) old_department.cm_count = old_department.get_active_custom_managers_count() # old_department.cm_count -= 1 old_department.save() transaction.commit(using=KAIHU_DB) except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=KAIHU_DB) return 99900, dict_err.get(99900)
def remove_activity(self, activity, user): try: activity.state = False activity.save() transaction.commit(using=ACTIVITY_DB) return 0, dict_err.get(0) except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=ACTIVITY_DB) return 99900, dict_err.get(99900)
def remove_cache(request): index = request.REQUEST.get('index') key = request.REQUEST.get('key_name') try: c = cache.Cache(cache.CACHE_INDEX[index][1]) c.delete(key) return 0, u'删除成功!' except Exception, e: debug.get_debug_detail(e) return 1, u'系统错误!'
def remove_cover(self, cover_id): if not cover_id: return 99800, dict_err.get(99800) try: obj = self.get_cover_by_id(cover_id) obj.delete() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def get_cache(request): index = request.REQUEST.get('index') key = request.REQUEST.get('key_name') try: c = cache.Cache(cache.CACHE_INDEX[index][1]) return 0, [c.get(key) or '', c.ttl(key) or 0] except Exception, e: debug.get_debug_detail(e) return 1, u'系统错误!'
def get_cache(request): index = request.REQUEST.get('index') key = request.REQUEST.get('key_name') try: c = cache.Cache(cache.CACHE_INDEX[index][1]) return 0, [c.get(key) or '', c.ttl(key) or 0] except Exception, e: debug.get_debug_detail(e) return 1, u'系统错误!'
def remove_cache(request): index = request.REQUEST.get('index') key = request.REQUEST.get('key_name') try: c = cache.Cache(cache.CACHE_INDEX[index][1]) c.delete(key) return 0, u'删除成功!' except Exception, e: debug.get_debug_detail(e) return 1, u'系统错误!'
def regist_user(self, email, nick, password, re_password, ip, mobilenumber=None, username=None, source=0, gender=0, invitation_code=None): ''' @note: 注册 ''' try: if not (email and nick and password): transaction.rollback(using=ACCOUNT_DB) return 99800, dict_err.get(99800) if password != re_password: transaction.rollback(using=ACCOUNT_DB) return 10105, dict_err.get(10105) errcode, errmsg = self.check_user_info(email, nick, password, mobilenumber) if errcode != 0: transaction.rollback(using=ACCOUNT_DB) return errcode, errmsg id = utils.uuid_without_dash() now = datetime.datetime.now() user = User.objects.create(id=id, email=email, mobilenumber=mobilenumber, last_login=now, password=self.set_password(password)) profile = Profile.objects.create(id=id, nick=nick, ip=ip, source=source, gender=gender) self.set_profile_login_att(profile, user) transaction.commit(using=ACCOUNT_DB) # 发送验证邮件 # self.send_confirm_email(user) return 0, profile except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=ACCOUNT_DB) return 99900, dict_err.get(99900)
def remove_activity(self, activity, user): try: activity.state = False activity.save() transaction.commit(using=ACTIVITY_DB) return 0, dict_err.get(0) except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=ACTIVITY_DB) return 99900, dict_err.get(99900)
def set_top(self, activity): try: activitys = Activity.objects.filter(state=True).order_by("-sort_num") max_sort_num = 1 if not activitys else (activitys[0].sort_num + 1) activity.sort_num = max_sort_num activity.save() return 0, dict_err.get(0) except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def add_ad(self, city_id, qq, expire_time, img): try: assert city_id and qq and expire_time and img except: return 99800, dict_err.get(99800) obj = None try: obj = Ad.objects.create(city_id=city_id, qq=qq, expire_time=expire_time, img=img) except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)