Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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
    }