def edit_red_envelope_view(request, id): if int(id) > 0: try: red_envelope = RedEnvelope.objects.get(id=id) except: raise Http404('不存在该微信红包') relations = RedEnvelopeHasPrize.objects.filter(red_envelope=red_envelope) prize_ids = [r.prize_id for r in relations] prizes = Prize.objects.filter(id__in=prize_ids) id2prize = dict([(p.id, p) for p in prizes]) red_envelope.prizes = [] for r in relations: prize = id2prize[r.prize_id] prize.prize_source = r.prize_source prize.prize_type = r.prize_type red_envelope.prizes.append(prize) red_envelope.prizes.sort(lambda x,y: cmp(x.level, y.level)) #转换为json response = JsonResponse() response.id = red_envelope.id response.name = red_envelope.name response.total_award_value = red_envelope.total_award_value response.desc = red_envelope.desc response.can_repeat = red_envelope.can_repeat response.daily_play_count = red_envelope.daily_play_count response.prizes = {} for prize in red_envelope.prizes: prize_json = {} prize_json['prize_source'] = prize.prize_source prize_json['prize_type'] = prize.prize_type prize_json['prize_name'] = prize.name prize_json['prize_level'] = prize.level prize_json['prize_odds'] = prize.odds prize_json['prize_count'] = prize.count response.prizes[prize.id] = prize_json lottery_json = response.get_json() else: red_envelope = {'can_update': True} lottery_json = '' coupon_rules = get_coupon_rules(request.user) c = RequestContext(request, { 'first_nav_name': MARKET_TOOLS_NAV, 'second_navs': export.get_second_navs(request), 'second_nav_name': SECOND_NAV_NAME, 'red_envelope': red_envelope, 'lottery_json':lottery_json, 'coupon_rules':coupon_rules }) return render_to_response('red_envelope/editor/edit_red_envelope.html', c)
def edit_lottery_view(request, id): id = int(id) if id: lottery = Lottery.objects.get(id=id) lottery.can_update = False if lottery.status == LOTTERY_STATUS_NO_START: lottery.can_update = True relations = LotteryHasPrize.objects.filter(lottery=lottery) prize_ids = [r.prize_id for r in relations] prizes = Prize.objects.filter(id__in=prize_ids) id2prize = dict([(p.id, p) for p in prizes]) lottery.prizes = [] for r in relations: prize = id2prize[r.prize_id] prize.prize_source = r.prize_source prize.prize_type = r.prize_type lottery.prizes.append(prize) lottery.prizes.sort(lambda x,y: cmp(x.level, y.level)) #转换为json response = JsonResponse() response.id = lottery.id response.name = lottery.name response.detail = lottery.detail response.expend_integral = lottery.expend_integral response.can_repeat = lottery.can_repeat response.daily_play_count = lottery.daily_play_count response.type = lottery.type response.award_hour = lottery.award_hour response.not_win_desc = lottery.not_win_desc if lottery.award_type: response.award_type = lottery.award_type else: response.award_type = '' response.start_at = lottery.start_at.strftime("%Y-%m-%d") response.end_at = lottery.end_at.strftime("%Y-%m-%d") response.prizes = {} for prize in lottery.prizes: prize_json = {} prize_json['prize_source'] = prize.prize_source prize_json['prize_type'] = prize.prize_type prize_json['prize_name'] = prize.name prize_json['prize_level'] = prize.level prize_json['prize_odds'] = prize.odds prize_json['prize_count'] = prize.count response.prizes[prize.id] = prize_json lottery_json = response.get_json() else: lottery = {'can_update': True} lottery_json = '' coupon_rules = get_coupon_rules(request.user) c = RequestContext(request, { 'first_nav_name': MARKET_TOOLS_NAV, 'second_navs': export.get_second_navs(request), 'second_nav_name': SECOND_NAV_NAME, 'lottery': lottery, 'lottery_json':lottery_json, 'coupon_rules':coupon_rules }) return render_to_response('lottery/editor/edit_lottery.html', c)
def record_message(args): sender_username = args['sender_username'] sender_nickname = args['sender_nickname'] sender_fake_id = args['sender_fake_id'] sender_icon = args['sender_icon'] receiver_username = args['receiver_username'] receiver_nickname = args['receiver_nickname'] receiver_fake_id = args['receiver_fake_id'] receiver_icon = args['receiver_icon'] content = args['content'] mpuser = args['mpuser'] mode = args['mode'] weixin_created_at = args['weixin_created_at'] #add by bert at 20.0 msg_id = args['msg_id'] pic_url = args['pic_url'] message_type = args['message_type'] media_id = args['media_id'] is_un_read_msg = args['is_un_read_msg'] session = None sender = WeixinUser.objects.get(username=sender_username) if sender_fake_id and sender.fake_id != sender_fake_id: sender.fake_id = sender_fake_id sender.save() # try: # print sender_username,']]]]]]]]]]', WeixinUser.objects.get(username=sender_username).id # sender = WeixinUser.objects.get(username=sender_username) # if sender_fake_id and sender.fake_id != sender_fake_id: # sender.fake_id = sender_fake_id # sender.save() # print '1-----2' # print '1-----3' # except: # print '2-----1' # sender = WeixinUser.objects.create( # username = sender_username, # fake_id = sender_fake_id, # nick_name = byte_to_hex(sender_nickname), # weixin_user_icon = sender_icon # ) try: receiver = WeixinUser.objects.get(username=receiver_username) if receiver_fake_id and receiver.fake_id != receiver_fake_id: receiver.fake_id = receiver_fake_id receiver.save() except: receiver = WeixinUser.objects.create( username=receiver_username, fake_id=receiver_fake_id, nick_name=byte_to_hex(receiver_nickname), weixin_user_icon=receiver_icon) should_increase_realtime_unread_count = False should_increase_new_message_count = False try: session = Session.objects.get(weixin_user=sender, mpuser=mpuser) should_increase_realtime_unread_count = True should_increase_new_message_count = True session.latest_contact_content = content session.latest_contact_created_at = datetime.today() session.is_latest_contact_by_viper = False if is_un_read_msg: session.unread_count += 1 session.retry_count = 0 session.weixin_created_at = weixin_created_at #更新微信用户session信息, added by slzhu session.member_user = sender session.member_latest_content = content session.member_latest_created_at = weixin_created_at session.is_replied = False session.save() #通知客户端 #TODO 使用其它通知方式? # try: # notifyclient.send_notify_to_all_user( # "WEIXIN_MESSAGE", # u'[%s]: 用户%s发来新消息: %s' % (mpuser.owner.username, session.weixin_user_id, content), # 'http://%s/message/' % settings.DOMAIN # ) # except: # pass except: watchdog_alert(u'更新消息会话失败,改为创建,cause:\n{}'.format( unicode_full_stack())) if is_un_read_msg: unread_count = 1 else: unread_count = 0 if mode == 'test' or mode == 'develop': session = Session.objects.create( mpuser=mpuser, weixin_user=sender, weixin_created_at=weixin_created_at, latest_contact_content=content, unread_count=unread_count, is_show=False, member_user_username=sender.username, member_latest_content=content, member_latest_created_at=weixin_created_at, is_replied=False) request = HttpRequest() request.GET['id'] = session.id enable_session(request) else: #正式环境中,新会话为显示状态, 同时直接进行通知 session = Session.objects.create( mpuser=mpuser, weixin_user=sender, weixin_created_at=weixin_created_at, latest_contact_content=content, unread_count=unread_count, is_show=True, member_user_username=sender.username, member_latest_content=content, member_latest_created_at=weixin_created_at, is_replied=False) #增加未读数 # count = Message.objects.filter(session_id=session.id, is_reply=False).count() # RealTimeInfo.objects.filter(mpuser=mpuser).update(unread_count = F('unread_count') + count) # #增加首页显示的new message count # increase_new_message_count(user=mpuser.owner, count=session.unread_count) #通知客户端 #TODO 改用其他通知方式? # try: # notifyclient.send_notify_to_all_user( # "WEIXIN_MESSAGE", # u'[%s]: 用户%s发来新消息: %s' % (mpuser.owner.username, session.weixin_user_id, content), # 'http://%s/message/' % settings.DOMAIN # ) # except: # pass # try: # realtime_info = RealTimeInfo.objects.get(mpuser=mpuser) # if should_increase_realtime_unread_count: # RealTimeInfo.objects.filter(mpuser=mpuser).update(unread_count=F('unread_count')+1) # if should_increase_new_message_count: # increase_new_message_count(user=mpuser.owner, count=1) # except: # RealTimeInfo.objects.create(mpuser=mpuser, unread_count=0) if message_type == WeixinMessageTypes.VOICE: is_updated = False else: is_updated = True receive_message = Message.objects.create( mpuser=mpuser, session=session, from_weixin_user_username=sender_username, to_weixin_user_username=receiver_username, content=content, is_reply=False, #add by bert at 20 msg_id=msg_id, pic_url=pic_url, media_id=media_id, is_updated=is_updated, message_type=message_type) if pic_url: content = pic_url #added by slzhu Session.objects.filter(id=session.id).update( message_id=receive_message.id, latest_contact_content=content, member_message_id=receive_message.id) if message_type == WeixinMessageTypes.VOICE: try: queue = '/queue/jms.com.wintim.service.weapp.weixin_upload_audio' response = JsonResponse() response.message_id = receive_message.id message = response.get_json() send_message(queue, message) except: notify_message = u"record_message Session cause:\n{}".format( unicode_full_stack()) watchdog_warning(notify_message) return { 'mpuser': mpuser, 'session': session, 'receive_message': receive_message, 'receiver_username': receiver_username, 'sender_username': sender_username }