Ejemplo n.º 1
0
def step_impl(context, user, weapp_user):

    #获取消息详情的数据并处理
    response = context.client.get(bdd_util.nginx(context.detail_url))
    realMsgs_data = json.loads(response.content)['data']['items']
    actual_data = []
    for realMsg_data in realMsgs_data:
        adict = {}
        if realMsg_data['is_reply']:
            adict['member_name'] = realMsg_data['mp_username'] or user
        else:
            adict['member_name'] = realMsg_data['sender_username'].split(
                '_')[0]
        adict['inf_content'] = realMsg_data['text']
        if realMsg_data['is_news_type']:
            adict['inf_content'] = realMsg_data['news_title']
        adict['time'] = bdd_util.get_date_str(realMsg_data['created_at'][:10])
        #星标
        adict['star'] = realMsg_data['is_collected']
        adict['remark'] = realMsg_data['remark']
        actual_data.append(adict)
    expected_datas = json.loads(context.text)
    for expected_data in expected_datas:
        expected_data['time'] = bdd_util.get_date_str(expected_data['time'])
        if expected_data.get('star', ''):
            expected_data['star'] = True if (expected_data.get('star', True)
                                             in ('true', 'yes', 'True', 'Yes',
                                                 True)) else False
    bdd_util.assert_list(expected_datas, actual_data)
Ejemplo n.º 2
0
def step_tmpl(context, webapp_user_name, power_me_rule_name):
    if hasattr(context, "search_powerme_result"):
        participances = context.search_powerme_result
    else:
        participances = context.participances['data']['items']
    actual = []
    print(participances)
    for p in participances:
        p_dict = OrderedDict()
        p_dict[u"rank"] = p['ranking']
        p_dict[u"member_name"] = p['username']
        p_dict[u"powerme_value"] = p['power']
        p_dict[u"parti_time"] = bdd_util.get_date_str(p['created_at'])
        actual.append((p_dict))
    print("actual_data: {}".format(actual))
    expected = []
    if context.table:
        for row in context.table:
            cur_p = row.as_dict()
            if cur_p[u'parti_time']:
                cur_p[u'parti_time'] = bdd_util.get_date_str(
                    cur_p[u'parti_time'])
            expected.append(cur_p)
    else:
        expected = json.loads(context.text)
    print("expected: {}".format(expected))

    bdd_util.assert_list(expected, actual)
Ejemplo n.º 3
0
def step_tmpl(context, webapp_user_name, exlottery_name):

    if hasattr(context, "search_lottery_result"):
        participances = context.search_lottery_result
    else:
        participances = context.participances['data']['items']
    actual = []

    for p in participances:
        p_dict = OrderedDict()
        p_dict[u"member_name"] = p['participant_name']
        p_dict[u"mobile"] = p['tel']
        p_dict[u"prize_grade"] = p['prize_title']
        p_dict[u"prize_name"] = p['prize_name']
        p_dict[u"lottery_time"] = bdd_util.get_date_str(p['created_at'])
        p_dict[u"receive_status"] = u'已领取' if p['status'] else u'未领取'
        p_dict[u"actions"] = u'' if p['status'] else u'领取'
        actual.append((p_dict))
    print("actual_data: {}".format(actual))
    expected = []
    if context.table:
        for row in context.table:
            cur_p = row.as_dict()
            if cur_p[u'lottery_time']:
                cur_p[u'lottery_time'] = bdd_util.get_date_str(
                    cur_p[u'lottery_time'])
            expected.append(cur_p)
    else:
        expected = json.loads(context.text)
    print("expected: {}".format(expected))

    bdd_util.assert_list(expected, actual)
Ejemplo n.º 4
0
def step_impl(context, user):
	start_date = bdd_util.get_date_str(context.date_dict['start_date'])
	end_date = bdd_util.get_date_str(context.date_dict['end_date'])

	url = '/stats/api/member_detail_data/?start_date=%s&end_date=%s' % (start_date, end_date)
	response = context.client.get(url)
	bdd_util.assert_api_call_success(response)
	results = json.loads(response.content)
	print("results: {}".format(results))
	actual = results['data']['items']

	expected = []
	for row in context.table:
		expected_dict = {}
		expected_dict['date'] = bdd_util.get_date_str(row['date'])
		expected_dict['new_member_count'] = row['new_member']
		expected_dict['binding_phone_member_count'] = row['mobile_phone_member']
		expected_dict['share_url_member_count'] = row['launch_share_link_member']
		expected_dict['member_from_share_url_count'] = row['share_link_new_member']
		expected_dict['ori_qrcode_member_count'] = row['launch_spreading_code_member']
		expected_dict['member_from_qrcode_count'] = row['spreading_code_new_member']
		expected_dict['bought_member_count'] = row['order_member']

		expected.append(expected_dict)

	bdd_util.assert_list(expected, actual)
Ejemplo n.º 5
0
def __date2time(date_str):
    """
	字符串 今天/明天……
	转化为字符串 "%Y-%m-%d %H:%M"
	"""
    cr_date = date_str
    p_date = bdd_util.get_date_str(cr_date)
    p_time = "{} 00:00".format(bdd_util.get_date_str(cr_date))
    return p_time
Ejemplo n.º 6
0
def step_impl(context, user):
    #更改所有参与者的最后一次签到时间
    if context.need_change_date:
        __change_all_member_last_sign_time(context)
        context.need_change_date = False

    design_mode = 0
    count_per_page = 10
    version = 1
    page = 1
    enable_paginate = 1
    participant_name = u''
    #分页情况,更新分页参数
    if hasattr(context, "paging"):
        paging_dic = context.paging
        count_per_page = paging_dic['count_per_page']
        page = paging_dic['page_num']
    if hasattr(context, "filter"):
        participant_name = context.filter["name"]
    url = '/apps/exsign/api/exsign_participances/?design_mode=%s&version=%s&count_per_page=%s&page=%s&enable_paginate=%s&_method=get&id=%s&participant_name=%s' % (
        design_mode, version, count_per_page, page, enable_paginate,
        context.exsign_id, participant_name)
    url = bdd_util.nginx(url)
    response = context.client.get(url)
    context.participances = json.loads(response.content)
    participances = context.participances['data']['items']
    actual = []
    for p in participances:
        p_dict = OrderedDict()
        p_dict[u"name"] = p['participant_name']
        p_dict[u"last_sign"] = bdd_util.get_date_str(p['latest_date_f'])
        p_dict[u"total_sign"] = p['total_count']
        p_dict[u"continuous_sign"] = p['serial_count']
        p_dict[u"integral"] = p['total_integral']
        p_dict[u"coupon_num"] = p['coupon_count']
        actual.append((p_dict))
    print("actual_data: {}".format(actual))
    expected = []
    if context.table:
        for row in context.table:
            cur_p = row.as_dict()
            if cur_p[u'last_sign']:
                cur_p[u'last_sign'] = bdd_util.get_date_str(
                    cur_p[u'last_sign'])
            expected.append(cur_p)
    else:
        expected = json.loads(context.text)
    print("expected: {}".format(expected))

    bdd_util.assert_list(expected, actual)
def step_impl(context, user, red_envelope_rule_name):
    id = __get_red_envelope_rule_id(red_envelope_rule_name)
    params = {
        'id': id
    }
    response = context.client.get('/apps/red_envelope/api/red_envelope_participances/?_method=get', params)
    participances = json.loads(response.content)['data']['items']
    actual = []
    for p in participances:
        p_dict = OrderedDict()
        p_dict[u"下单会员"] = p['username_truncated']
        p_dict[u"会员状态"] = p['grade']
        p_dict[u"引入领取人数"] = p['introduce_received_number_count']
        p_dict[u"引入使用人数"] = p['introduce_used_number_count']
        p_dict[u"引入新关注"] = p['introduce_new_member_count']
        p_dict[u"引入消费额"] = p['introduce_sales_number']
        p_dict[u"领取时间"] = p['created_at']
        p_dict[u"使用状态"] = p['coupon_status_name']
        p_dict[u"操作"] = [u'查看引入详情',u'查看使用订单'] if p['coupon_status'] ==1 else u'查看引入详情'
        actual.append((p_dict))
    print("actual_data: {}".format(actual))
    expected = []
    if context.table:
        for row in context.table:
            cur_p = row.as_dict()
            if u'领取时间' in cur_p:
                cur_p[u'领取时间'] = bdd_util.get_date_str(cur_p[u'领取时间'])
            expected.append(cur_p)
    else:
        expected = json.loads(context.text)
    print("expected: {}".format(expected))

    bdd_util.assert_list(expected, actual)
Ejemplo n.º 8
0
def step_impl(context, user):
	start_date = bdd_util.get_date_str(context.date_dict['start_date'])
	end_date = bdd_util.get_date_str(context.date_dict['end_date'])

	url = '/stats/api/member_summary/?start_date=%s&end_date=%s' % (start_date, end_date)
	response = context.client.get(url)
	bdd_util.assert_api_call_success(response)
	results = json.loads(response.content)
	print("results: {}".format(results))
	actual = results['data']['items']

	expected_dict = {}
	for row in context.table:
		expected_dict[row['item']] = row['quantity']
	expected = convert_readable_dict(expected_dict)

	bdd_util.assert_dict(expected, actual)
Ejemplo n.º 9
0
def step_impl(context, user):
	start_date = bdd_util.get_date_str(context.date_dict['start_date'])
	end_date = bdd_util.get_date_str(context.date_dict['end_date'])

	url = '/stats/api/member_qrcode_rank/?start_date=%s&end_date=%s' % (start_date, end_date)
	response = context.client.get(url)
	results = json.loads(response.content)
	actual_list = results['data']['items']

	actual = {}
	for item in actual_list:
		actual[item['username']] = item['followers']

	expected = {}
	for row in context.table:
		expected[row['username']] = int(row['followers'])

	bdd_util.assert_dict(expected, actual)
Ejemplo n.º 10
0
def step_impl(context, user):
	start_date = bdd_util.get_date_str(context.date_dict['start_date'])
	end_date = bdd_util.get_date_str(context.date_dict['end_date'])

	url = '/stats/api/product_summary/?start_date=%s&end_date=%s' % (start_date, end_date)
	response = context.client.get(url)
	results = json.loads(response.content)
	actual = results['data']['item']

	expected_dict = {}
	for row in context.table:
		expected_dict[row['item']] = int(row['quantity'])

	expected = {}
	expected['buyer_count'] = expected_dict[u'购买总人数']
	expected['order_count'] = expected_dict[u'下单单量']
	expected['deal_product_count'] = expected_dict[u'总成交件数']

	bdd_util.assert_dict(expected, actual)
Ejemplo n.º 11
0
def step_impl(context, user, member_name, sign_name):
    design_mode = 0
    count_per_page = 15
    version = 1
    page = 1
    enable_paginate = 1
    belong_to = exSign.objects.get(name=sign_name).id
    member_id = member_models.Member.objects.get(
        username_hexstr=byte_to_hex(member_name)).id
    params = {
        "member_id": member_id,
        "belong_to": belong_to,
        "count_per_page": 15,
        "page": 1
    }
    response = context.client.get(
        '/apps/exsign/api/exsign_participance_details/?_method=put', params)
    participance_detatils = json.loads(response.content)['data']['items']
    actual = []
    for detail in participance_detatils:
        p_dict = OrderedDict()
        p_dict[u"sign_time"] = bdd_util.get_date_str(detail['created_at_f'])
        p_dict[u"get_reward"] = detail['prize'].replace('<br/>', '')
        p_dict[u"sign_state"] = detail['status']
        actual.append((p_dict))
    print("actual_data: {}".format(actual))
    expected = []
    if context.table:
        for row in context.table:
            cur_p = row.as_dict()
            if cur_p[u'sign_time']:
                cur_p[u'sign_time'] = bdd_util.get_date_str(
                    cur_p[u'sign_time'])
            expected.append(cur_p)
    else:
        for p in json.loads(context.text):
            if p[u'sign_time']:
                p[u'sign_time'] = bdd_util.get_date_str(p[u'sign_time'])
            expected.append(p)
    print("expected: {}".format(expected))

    bdd_util.assert_list(expected, actual)
Ejemplo n.º 12
0
def step_impl(context, user, exlottery_name):
    design_mode = 0
    count_per_page = 10
    version = 1
    page = 1
    enable_paginate = 1

    expected = json.loads(context.text)
    actual = []
    for code in expected:
        use_date = code.get('use_date', '')
        if use_date:
            start_date = bdd_util.get_date_str(use_date)
            code['use_date'] = start_date

    #搜索查看结果
    if hasattr(context, "search_exlottery_code"):
        search_code_result = context.search_exlottery_code
        for code in search_code_result:
            actual.append({
                'lottery_code': code['code'],
                'user': code['member'],
                'use_date': code['time'][:10] if code['time'] else '',
                'prize_grade': code['grade'],
                'prize_name': code['name']
            })

        bdd_util.assert_list(expected, actual)
    # 其他查看结果
    else:
        # 分页情况,更新分页参数
        if hasattr(context, "paging"):
            paging_dic = context.paging
            count_per_page = paging_dic['count_per_page']
            page = paging_dic['page_num']

        exlottery = __get_exlottery_by_exlottery_name(exlottery_name)
        url = "/apps/exlottery/api/exlottery_code_store/?design_mode={}&version={}&count_per_page={}&page={}&enable_paginate={}&id={}".format(
            design_mode, version, count_per_page, page, enable_paginate,
            exlottery.id)
        response = context.client.get(url)
        codes = json.loads(response.content)['data']['items']

        for code in codes:
            actual.append({
                'lottery_code': code['code'],
                'user': code['member'],
                'use_date': code['time'][:10] if code['time'] else '',
                'prize_grade': code['grade'],
                'prize_name': code['name']
            })

        bdd_util.assert_list(expected, actual)
Ejemplo n.º 13
0
def step_impl(context, user):
	start_date = bdd_util.get_date_str(context.date_dict['start_date'])
	end_date = bdd_util.get_date_str(context.date_dict['end_date'])
	
	url = '/stats/api/member_increasement/?start_date=%s&end_date=%s' % (start_date, end_date)
	response = context.client.get(url)
	bdd_util.assert_api_call_success(response)
	results = json.loads(response.content)
	actual_new_member_list = results['data']['series'][0]['data']
	actual_bought_member_list = results['data']['series'][1]['data']

	actual = [actual_new_member_list, actual_bought_member_list]

	expected = []
	expected_new_member_list = []
	expected_bought_member_list = []
	for row in context.table:
		expected_new_member_list.append(int(row['new_member_count']))
		expected_bought_member_list.append(int(row['bought_member_count']))
	expected = [expected_new_member_list, expected_bought_member_list]

	bdd_util.assert_list(expected, actual)
Ejemplo n.º 14
0
def step_impl(context, user, webapp_user):
    actual_data = context.focus_data['items']
    for data in actual_data:
        data['pay_money'] = float(data['pay_money'])
    expected_data = []
    for row in context.table:
        adict = {}
        adict['username'] = row['member']
        adict['pay_money'] = float(row['pay_money'])
        adict['integral'] = row['integral']
        adict['source'] = sources_dict[row['Source']]
        adict['created_at'] = bdd_util.get_date_str(row['attention_time'])
        expected_data.append(adict)
    bdd_util.assert_list(expected_data, actual_data)
Ejemplo n.º 15
0
def step_impl(context, webapp_user_name, date_str):
	today = datetime.now()
	date = "%s %s" % (bdd_util.get_date_str(date_str),today.strftime("%H:%M:%S"))
	if not hasattr(context,"latest_date"):
		context.latest_date = {
			webapp_user_name : bdd_util.get_date(date)
		}

	params = {
		'webapp_owner_id': context.webapp_owner_id,
		'id': context.exsign_id
	}
	signParticipance = exSignParticipance.objects(member_id=context.member.id)
	if signParticipance:
		timedelta = (bdd_util.get_date(date) - context.latest_date[webapp_user_name]).days
		__change_sign_date(context.member.id,timedelta)#将上一次签到时间向前调整
		response = context.client.post('/m/apps/exsign/api/exsign_participance/?_method=put', params)
	else:
		response = context.client.post('/m/apps/exsign/api/exsign_participance/?_method=put', params)
		#首次签到的话,将首次签到时间置为设定的时间
		signParticipance.update(set__created_at = bdd_util.get_date(date))
	#如果是另一个用户签到了,创建新的最近一次签到时间到dict里
	if webapp_user_name not in context.latest_date:
		context.latest_date[webapp_user_name] = bdd_util.get_date(date)
	#对比时间,记录最后一次签到时间
	if context.latest_date[webapp_user_name] < bdd_util.get_date(date):
		context.latest_date[webapp_user_name] = bdd_util.get_date(date)


	item = exSignDetails.objects.filter(belong_to=context.exsign_id, member_id=context.member.id).order_by('-id').first()
	item.update(created_at = bdd_util.get_date(date))


	# 下面的step会将签到详情领取时间改成step接受的时间.
	sign_details_index = exSignDetails.objects.count() - 1
	last_sign = exSignDetails.objects.all()[sign_details_index] # 得到最后一个签到信息

	if last_sign.prize["coupon"]: # 如果最后一个签到信息中提示获得了优惠券.修改日期为当前时间
		import time
		time.sleep(1)

		from apps.customerized_apps.mysql_models import  ConsumeCouponLog
		coupon_log_index = ConsumeCouponLog.objects.count() - 1
		last_coupon = ConsumeCouponLog.objects.all()[coupon_log_index]
		coupon = Coupon.objects.filter(id=last_coupon.coupon_id)

		coupon.update(provided_time=date) # 修改日期为当前时间


	context.need_change_date = True
Ejemplo n.º 16
0
def step_impl(context, user):
    start_date = None
    end_date = None

    if context.date_dict:
        start_date = context.date_dict['start_date']
        end_date = context.date_dict['end_date']
        start_date = bdd_util.get_date_str(start_date)
        end_date = bdd_util.get_date_str(end_date)
    else:
        today = dateutil.get_today()
        start_date = dateutil.get_previous_date(today, 6)
        end_date = today

    start_time = start_date + ' 00:00:00'
    end_time = end_date + ' 23:59:59'

    url = '/stats/api/order_summary/?start_time=%s&end_time=%s' % (start_time,
                                                                   end_time)
    response = context.client.get(url)
    bdd_util.assert_api_call_success(response)

    result = json.loads(response.content)
    context.stats_data = result['data']
Ejemplo n.º 17
0
def step_impl(context, user, member):
    member_id = bdd_util.get_member_by_username(member, context.webapp_id).id
    url = '/member/api/member_browse_record/?id=' + str(member_id)
    response = context.client.get(bdd_util.nginx(url))
    items = json.loads(response.content)['data']['items']
    expected = json.loads(context.text)

    actual = []
    for record in items:
        actual.append(
            dict(date_time=record['create_at'].split()[0],
                 link=record['tittle']))

    for item in expected:
        item['date_time'] = "{}".format(
            bdd_util.get_date_str(item['date_time']))

    bdd_util.assert_list(actual, expected)
Ejemplo n.º 18
0
def step_webapp_owner_verified_review(context, webapp_owner):
    """
	 [{
		"member": "tom",
		"status": "-1",  -> ('-1', '已屏蔽'),  ('0', '待审核'),  ('1', '通过审核'),  ('1', '取消置顶'),  ('2', '通过并置顶')
		"product_name": "商品1",
		"order_no": "3"
	}, {
		"member": "bill",
		"status": "1",
		"product_name": "商品1",
		"order_no": "1"
	}]


	"""
    review_status = {
        u'屏蔽处理': -1,
        u'待审核': 0,
        u'通过审核': 1,
        u'取消置顶': 1,
        u'通过并置顶': 2,
    }

    url = '/apps/evaluate/api/evaluate_review/?design_mode=0&version=1'
    context_dict = json.loads(context.text)
    for i in context_dict:
        product_name = i.get('product_name')
        order_code = i.get('order_no')
        product_review = get_product_review(order_code, product_name)

        args = {
            "product_review_id": product_review.id,
            "status": str(review_status[i.get("status")])
        }

        context.client.post(url, args)
        if 'time' in i and str(review_status[i.get("status")]) == "2":
            time = i['time']
            top_time = "{} 00:00".format(bdd_util.get_date_str(time))
            product_review.top_time = top_time
            product_review.save()
def step_impl(context, user, red_envelope_rule_name,share_member,order_no):
    id = __get_red_envelope_rule_id(red_envelope_rule_name)

    followed_member = Member.objects.get(username_hexstr=byte_to_hex(share_member))

    order_id = Order.objects.get(order_id=order_no).id
    relation_id = RedEnvelopeToOrder.objects.get(red_envelope_rule_id=id,order_id=order_id).id
    params = {
        'rule_id': id,
        'introduced_by': followed_member.id,
        'relation_id': relation_id
    }
    response = context.client.get('/apps/red_envelope/api/red_envelope_participances/?_method=get', params)
    participances = json.loads(response.content)['data']['items']
    actual = []
    for p in participances:
        p_dict = OrderedDict()
        p_dict[u"分享会员"] = p['username_truncated']
        p_dict[u"会员状态"] = p['grade']
        p_dict[u"引入领取人数"] = p['introduce_received_number_count']
        p_dict[u"引入使用人数"] = p['introduce_used_number_count']
        p_dict[u"引入新关注"] = p['introduce_new_member_count']
        p_dict[u"引入消费额"] = p['introduce_sales_number']
        p_dict[u"领取时间"] = p['created_at']
        p_dict[u"使用状态"] = p['coupon_status_name']
        p_dict[u"操作"] = u'查看使用订单' if p['coupon_status'] ==1 else ""
        actual.append((p_dict))
    print("actual_data: {}".format(actual))
    expected = []
    if context.table:
        for row in context.table:
            cur_p = row.as_dict()
            if u'领取时间' in cur_p:
                cur_p[u'领取时间'] = bdd_util.get_date_str(cur_p[u'领取时间'])
            expected.append(cur_p)
    else:
        expected = json.loads(context.text)
    print("expected: {}".format(expected))

    bdd_util.assert_list(expected, actual)
Ejemplo n.º 20
0
def step_impl(context, user):
    expected = []
    for row in context.table:
        tmp_dict = {}
        tmp_dict['product_name'] = row['product_name']
        tmp_dict['order_id'] = row['order_id']
        tmp_dict['discount_amount'] = float(row['discount_amount'])
        tmp_dict['freight'] = float(row['freight'])
        tmp_dict['paid_amount'] = float(row['paid_amount'])
        tmp_dict['payment_method'] = row['payment_method']
        tmp_dict['consumer'] = row['consumer']
        tmp_dict['order_datetime'] = bdd_util.get_date_str(
            row['order_datetime'])
        tmp_dict['order_status'] = row['order_status']
        expected.append(tmp_dict)

    items = context.stats_data['items']
    actual = []
    for item in items:
        tmp_dict = {}
        products = item['products']
        product_names = ''
        for product in products:
            product_names += product['name'] + ','
        tmp_dict['product_name'] = product_names.rstrip(',')
        tmp_dict['order_id'] = item['order_id']
        tmp_dict['discount_amount'] = float(item['save_money'])
        tmp_dict['freight'] = float(item['postage'])
        tmp_dict['paid_amount'] = float(item['pay_money'])
        tmp_dict['payment_method'] = item['pay_interface_type']
        tmp_dict['consumer'] = item['buyer_name']
        created_at = item['created_at'].split(' ')[0].replace('/', '-')
        tmp_dict['order_datetime'] = created_at
        tmp_dict['order_status'] = item['order_status']
        actual.append(tmp_dict)

    bdd_util.assert_list(expected, actual)
Ejemplo n.º 21
0
def step_impl(context, webapp_user_name):
    result_data = context.record_info

    expected_data = json.loads(context.text)
    expected_data['end_date'] = bdd_util.get_date_str(expected_data['end_date'])

    actual_data = {
        "total_participanted_count": 0,
        "total_voted_count": 0,
        "total_visits": 0,
        "end_date": ""
    }

    for k, v in result_data.items():
        if k == "total_parted":
            actual_data["total_participanted_count"] = v
        if k == "total_counts":
            actual_data["total_voted_count"] = v
        if k == "total_visits":
            actual_data["total_visits"] = v
        if k == "end_date":
            actual_data["end_date"] = v

    bdd_util.assert_dict(expected_data,actual_data)
Ejemplo n.º 22
0
def step_impl(context, user, scratch_name):
    expect = json.loads(context.text)[0]

    title = expect.get("name", "")

    cr_start_date = expect.get('start_date', u'今天')
    start_date = bdd_util.get_date_str(cr_start_date)
    start_time = "{} 00:00".format(bdd_util.get_date_str(cr_start_date))

    cr_end_date = expect.get('end_date', u'1天后')
    end_date = bdd_util.get_date_str(cr_end_date)
    end_time = "{} 00:00".format(bdd_util.get_date_str(cr_end_date))

    valid_time = "%s~%s" % (start_time, end_time)

    desc = expect.get('desc', '')  #描述
    reduce_integral = expect.get('reduce_integral', 0)  #消耗积分
    send_integral = expect.get('send_integral', 0)  #参与送积分
    send_integral_rules = expect.get('send_integral_rules', "")  #送积分规则
    scratch_limit = __name2limit(expect.get('lottery_limit', u'一人一次'))  #抽奖限制
    win_rate = expect.get('win_rate', '0%').split('%')[0]  #中奖率
    is_repeat_win = __name2Bool(expect.get('is_repeat_win', "true"))  #重复中奖
    expect_prize_settings_list = expect.get('prize_settings', [])
    page_prize_settings, scratch_prize_settings = __prize_settings_process(
        expect_prize_settings_list)

    obj = scratch_models.Scratch.objects.get(name=scratch_name)  #纯数字
    lottory_record = ScratchRecord.objects.filter(belong_to=str(obj.id))
    related_page_id = obj.related_page_id
    pagestore = pagestore_manager.get_pagestore('mongo')
    page = pagestore.get_page(related_page_id, 1)
    page_component = page['component']['components'][0]['components']

    prize_dic = {}
    for record in lottory_record:
        if not prize_dic.has_key(record.prize_title):
            prize_dic[record.prize_title] = 1
        else:
            prize_dic[record.prize_title] += 1

    expect_scratch_dic = {
        "name": title,
        "start_time": start_time,
        "end_time": end_time,
        "expend": reduce_integral,  #消耗积分
        "delivery": send_integral,  #参与送积分
        "delivery_setting": __delivery2Bool(send_integral_rules),  #送积分规则
        "limitation": scratch_limit,  #抽奖限制
        "chance": win_rate,  #中奖率
        "allow_repeat": is_repeat_win,  #重复中奖
        "prize_settings": page_prize_settings,
    }

    actual_prize_list = []
    for comp in page_component:
        actual_prize_dic = {}
        actual_prize_dic['title'] = comp['model']['title']
        actual_prize_dic['prize_count'] = comp['model']['prize_count']
        actual_prize_dic['leftCount'] = (
            comp['model']['prize_count'] -
            prize_dic.get(comp['model']['title'], 0)
        ) if expect_prize_settings_list[page_component.index(comp)].has_key(
            'rest') else ""
        actual_prize_dic['prize'] = {
            "type": comp['model']['prize']['type'],
            "data": comp['model']['prize']['data']
        }
        actual_prize_list.append(actual_prize_dic)

    actual_scratch_dic = {
        "name": obj.name,
        "start_time": __datetime2str(obj.start_time),
        "end_time": __datetime2str(obj.end_time),
        "expend": obj.expend,  #消耗积分
        "delivery": obj.delivery,  #参与送积分
        "delivery_setting": obj.delivery_setting,  #送积分规则
        "limitation": obj.limitation,  #抽奖限制
        "chance": obj.chance,  #中奖率
        "allow_repeat": obj.allow_repeat,  #重复中奖
        "prize_settings": actual_prize_list,
    }

    bdd_util.assert_dict(expect_scratch_dic, actual_scratch_dic)
Ejemplo n.º 23
0
def step_impl(context, user, powerme_name):
    expect = json.loads(context.text)[0]

    title = expect.get("name", "")
    cr_start_date = expect.get('start_date', u'今天')
    start_date = bdd_util.get_date_str(cr_start_date)
    start_time = "{} 00:00".format(bdd_util.get_date_str(cr_start_date))

    cr_end_date = expect.get('end_date', u'1天后')
    end_date = bdd_util.get_date_str(cr_end_date)
    end_time = "{} 00:00".format(bdd_util.get_date_str(cr_end_date))

    # valid_time = "%s~%s"%(start_time,end_time)
    timing_status = expect.get("is_show_countdown", "")
    # timing_value_day = __date_delta(start_date,end_date)
    description = expect.get("desc", "")
    reply_content = expect.get("reply")
    material_image = expect.get("share_pic", "")
    background_image = expect.get("background_pic", "")

    qrcode_name = expect.get("qr_code", "")
    if qrcode_name:
        qrcode = __get_qrcode(context, qrcode_name)
    else:
        qrcode = ""

    color = expect.get("background_color", "冬日暖阳")
    rules = expect.get("rules", "")

    obj = powerme_models.PowerMe.objects.get(name=powerme_name)  #纯数字
    related_page_id = obj.related_page_id
    pagestore = pagestore_manager.get_pagestore('mongo')
    page = pagestore.get_page(related_page_id, 1)
    page_component = page['component']['components'][0]['model']

    fe_powerme_dic = {
        "name": title,
        "start_time": start_time,
        "end_time": end_time,
        "is_show_countdown": timing_status,
        "desc": description,
        "reply": reply_content,
        "qr_code": qrcode,
        "share_pic": material_image,
        "background_pic": background_image,
        "background_color": color,
        "rules": rules
    }

    db_powerme_dic = {
        "name": obj.name,
        "start_time": __datetime2str(obj.start_time),
        "end_time": __datetime2str(obj.end_time),
        "is_show_countdown": page_component['timing']['timing']['select'],
        "desc": page_component['description'],
        "reply": obj.reply_content,
        "qr_code": obj.qrcode,
        "share_pic": page_component['material_image'],
        "background_pic": page_component['background_image'],
        "background_color": __color2name(page_component['color']),
        "rules": page_component['rules'],
    }

    bdd_util.assert_dict(db_powerme_dic, fe_powerme_dic)
Ejemplo n.º 24
0
def __Update_PowerMe(context, text, page_id, powerme_id):
    """
	模拟用户登录页面
	编辑微助力项目
	写入mongo表:
		1.powerme_powerme表
		2.page表
	"""

    design_mode = 0
    version = 1
    project_id = "new_app:powerme:" + page_id

    title = text.get("name", "")
    cr_start_date = text.get('start_date', u'今天')
    start_date = bdd_util.get_date_str(cr_start_date)
    start_time = "{} 00:00".format(bdd_util.get_date_str(cr_start_date))

    cr_end_date = text.get('end_date', u'1天后')
    end_date = bdd_util.get_date_str(cr_end_date)
    end_time = "{} 00:00".format(bdd_util.get_date_str(cr_end_date))

    valid_time = "%s~%s" % (start_time, end_time)

    timing_status = text.get("is_show_countdown", "")

    timing_value_day = __date_delta(start_date, end_date)

    description = text.get("desc", "")
    reply_content = text.get("reply")
    material_image = text.get("share_pic", "")
    background_image = text.get("background_pic", "")

    qrcode_name = text.get("qr_code", "")
    if qrcode_name:
        qrcode = __get_qrcode(context, qrcode_name)
    else:
        qrcode = ""

    zhcolor = text.get("background_color", "冬日暖阳")
    color = __name2color(zhcolor)

    rules = text.get("rules", "")

    page_args = {
        "title": title,
        "start_time": start_time,
        "end_time": end_time,
        "valid_time": valid_time,
        "timing_status": timing_status,
        "timing_value_day": timing_value_day,
        "description": description,
        "reply_content": reply_content,
        "qrcode": qrcode,
        "material_image": material_image,
        "background_image": background_image,
        "color": color,
        "rules": rules
    }

    page_json = __get_powermePageJson(page_args)

    update_page_args = {
        "field": "page_content",
        "id": project_id,
        "page_id": "1",
        "page_json": page_json
    }

    update_powerme_args = {
        "name": title,
        "start_time": start_time,
        "end_time": end_time,
        "timing": timing_status,
        "reply_content": reply_content,
        "material_image": material_image,
        "qrcode": json.dumps(qrcode),
        "id": powerme_id  #updated的差别
    }

    #page 更新Page
    update_page_url = "/termite2/api/project/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    update_page_response = context.client.post(update_page_url,
                                               update_page_args)

    #step4:更新Powerme
    update_powerme_url = "/apps/powerme/api/powerme/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    update_powerme_response = context.client.post(update_powerme_url,
                                                  update_powerme_args)
Ejemplo n.º 25
0
def __Create_PowerMe(context, text, user):
    """
	模拟用户登录页面
	创建微助力项目
	写入mongo表:
		1.powerme_powerme表
		2.page表
	"""

    design_mode = 0
    version = 1
    text = text

    title = text.get("name", "")

    cr_start_date = text.get('start_date', u'今天')
    start_date = bdd_util.get_date_str(cr_start_date)
    start_time = "{} 00:00".format(bdd_util.get_date_str(cr_start_date))

    cr_end_date = text.get('end_date', u'1天后')
    end_date = bdd_util.get_date_str(cr_end_date)
    end_time = "{} 00:00".format(bdd_util.get_date_str(cr_end_date))

    valid_time = "%s~%s" % (start_time, end_time)

    timing_status = text.get("is_show_countdown", "")

    timing_value_day = __date_delta(start_date, end_date)

    description = text.get("desc", "")
    reply_content = text.get("reply")
    material_image = text.get("share_pic", "")
    background_image = text.get("background_pic", "")

    qrcode_name = text.get("qr_code", "")
    if qrcode_name:
        qrcode_id = ChannelQrcodeSettings.objects.get(
            owner_id=context.webapp_owner_id, name=qrcode_name).id
        qrcode_i_url = '/new_weixin/qrcode/?setting_id=%s' % str(qrcode_id)
        qrcode_response = context.client.get(qrcode_i_url)
        qrcode_info = qrcode_response.context['qrcode']
        qrcode_ticket_url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={}".format(
            qrcode_info.ticket)
        qrcode = {"ticket": qrcode_ticket_url, "name": qrcode_info.name}
    else:
        qrcode = {"ticket": "", "name": ""}

    zhcolor = text.get("background_color", "冬日暖阳")
    color = __name2color(zhcolor)

    rules = text.get("rules", "")

    page_args = {
        "title": title,
        "start_time": start_time,
        "end_time": end_time,
        "valid_time": valid_time,
        "timing_status": timing_status,
        "timing_value_day": timing_value_day,
        "description": description,
        "reply_content": reply_content,
        "qrcode": qrcode,
        "material_image": material_image,
        "background_image": background_image,
        "color": color,
        "rules": rules
    }

    #step1:登录页面,获得分配的project_id
    get_pw_response = context.client.get("/apps/powerme/powerme/")
    pw_args_response = get_pw_response.context
    project_id = pw_args_response['project_id']  #(str){new_app:powerme:0}

    #step2: 编辑页面获得右边的page_json
    dynamic_url = "/apps/api/dynamic_pages/get/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    dynamic_response = context.client.get(dynamic_url)
    dynamic_data = dynamic_response.context  #resp.context=> data ; resp.content => Http Text

    #step3:发送Page
    page_json = __get_powermePageJson(page_args)

    termite_post_args = {
        "field": "page_content",
        "id": project_id,
        "page_id": "1",
        "page_json": page_json
    }
    termite_url = "/termite2/api/project/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    post_termite_response = context.client.post(termite_url, termite_post_args)
    related_page_id = json.loads(post_termite_response.content).get(
        "data", {})['project_id']

    #step4:发送powerme_args
    post_powerme_args = {
        "name": title,
        "start_time": start_time,
        "end_time": end_time,
        "timing": timing_status,
        "reply_content": reply_content,
        "material_image": material_image,
        "qrcode": json.dumps(qrcode),
        "related_page_id": related_page_id
    }
    powerme_url = "/apps/powerme/api/powerme/?design_mode={}&project_id={}&version={}&_method=put".format(
        design_mode, project_id, version)
    post_powerme_response = context.client.post(powerme_url, post_powerme_args)
Ejemplo n.º 26
0
def __Create_scratch(context, text, user):
    """
	模拟用户登录页面
	创建刮刮卡项目
	写入mongo表:
		1.scratch_scratch表
		2.page表
	"""

    design_mode = 0
    version = 1
    text = text

    title = text.get("name", "")

    cr_start_date = text.get('start_date', u'今天')
    start_date = bdd_util.get_date_str(cr_start_date)
    start_time = "{} 00:00".format(bdd_util.get_date_str(cr_start_date))

    cr_end_date = text.get('end_date', u'1天后')
    end_date = bdd_util.get_date_str(cr_end_date)
    end_time = "{} 00:00".format(bdd_util.get_date_str(cr_end_date))

    valid_time = "%s~%s" % (start_time, end_time)

    desc = text.get('desc', '')  #描述
    reduce_integral = text.get('reduce_integral', 0)  #消耗积分
    send_integral = text.get('send_integral', 0)  #参与送积分
    send_integral_rules = text.get('send_integral_rules', "")  #送积分规则
    scratch_limit = __name2limit(text.get('lottery_limit', u'一人一次'))  #抽奖限制
    win_rate = text.get('win_rate', '0%').split('%')[0]  #中奖率
    is_repeat_win = __name2Bool(text.get('is_repeat_win', "true"))  #重复中奖
    lottory_color = text.get('lottory_color', '')
    lottory_pic = text.get('lottory_pic', '')

    expect_prize_settings_list = text.get('prize_settings', [])
    page_prize_settings, scratch_prize_settings = __prize_settings_process(
        expect_prize_settings_list)

    page_args = {
        "title": title,
        "start_time": start_time,
        "end_time": end_time,
        "valid_time": valid_time,
        "description": desc,  #描述
        "expend": reduce_integral,  #消耗积分
        "delivery": send_integral,  #参与送积分
        "delivery_setting": __delivery2Bool(send_integral_rules),  #送积分规则
        "limitation": scratch_limit,  #抽奖限制
        "chance": win_rate,  #中奖率
        "allow_repeat": is_repeat_win,  #重复中奖
        "prize_settings": page_prize_settings,
        "background_color": lottory_color,
        "scratch_bg_image": lottory_pic
    }
    #step1:登录页面,获得分配的project_id
    get_scratch_response = context.client.get("/apps/scratch/scratch/")
    scratch_args_response = get_scratch_response.context
    project_id = scratch_args_response['project_id']  #(str){new_app:scratch:0}

    #step2: 编辑页面获得右边的page_json
    dynamic_url = "/apps/api/dynamic_pages/get/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    dynamic_response = context.client.get(dynamic_url)
    dynamic_data = dynamic_response.context  #resp.context=> data ; resp.content => Http Text

    #step3:发送Page
    page_json = __get_scratchPageJson(page_args)

    termite_post_args = {
        "field": "page_content",
        "id": project_id,
        "page_id": "1",
        "page_json": page_json
    }
    termite_url = "/termite2/api/project/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    post_termite_response = context.client.post(termite_url, termite_post_args)
    related_page_id = json.loads(post_termite_response.content).get(
        "data", {})['project_id']

    #step4:发送scratch_args
    post_scratch_args = {
        "name": title,
        "start_time": start_time,
        "end_time": end_time,
        "expend": reduce_integral,  #消耗积分
        "delivery": send_integral,  #参与送积分
        "delivery_setting": __delivery2Bool(send_integral_rules),  #送积分规则
        "limitation": scratch_limit,  #抽奖限制
        "chance": win_rate,  #中奖率
        "allow_repeat": is_repeat_win,  #重复中奖
        "prize": json.dumps(scratch_prize_settings),
        "related_page_id": related_page_id
    }
    scratch_url = "/apps/scratch/api/scratch/?design_mode={}&project_id={}&version={}&_method=put".format(
        design_mode, project_id, version)
    post_scratch_response = context.client.post(scratch_url, post_scratch_args)

    #跳转,更新状态位
    design_mode = 0
    count_per_page = 1000
    version = 1
    page = 1
    enable_paginate = 1

    rec_scratch_url = "/apps/scratch/api/lotteries/?design_mode={}&version={}&count_per_page={}&page={}&enable_paginate={}".format(
        design_mode, version, count_per_page, page, enable_paginate)
    rec_scratch_response = context.client.get(rec_scratch_url)
Ejemplo n.º 27
0
def __Update_Scratch(context, text, page_id, scratch_id):
    """
	模拟用户登录页面
	编辑抽奖项目
	写入mongo表:
		1.scratch_scratch表
		2.page表
	"""

    design_mode = 0
    version = 1
    project_id = "new_app:scratch:" + page_id

    title = text.get("name", "")

    cr_start_date = text.get('start_date', u'今天')
    start_date = bdd_util.get_date_str(cr_start_date)
    start_time = "{} 00:00".format(bdd_util.get_date_str(cr_start_date))

    cr_end_date = text.get('end_date', u'1天后')
    end_date = bdd_util.get_date_str(cr_end_date)
    end_time = "{} 00:00".format(bdd_util.get_date_str(cr_end_date))

    valid_time = "%s~%s" % (start_time, end_time)

    desc = text.get('desc', '')  #描述
    reduce_integral = text.get('reduce_integral', 0)  #消耗积分
    send_integral = text.get('send_integral', 0)  #参与送积分
    send_integral_rules = text.get('send_integral_rules', "")  #送积分规则
    scratch_limit = __name2limit(text.get('lottery_limit', u'一人一次'))  #抽奖限制
    win_rate = text.get('win_rate', '0%').split('%')[0]  #中奖率
    is_repeat_win = __name2Bool(text.get('is_repeat_win', "true"))  #重复中奖
    lottory_color = text.get('lottory_color', '')
    lottory_pic = text.get('lottory_pic', '')
    expect_prize_settings_list = text.get('prize_settings', [])
    page_prize_settings, scratch_prize_settings = __prize_settings_process(
        expect_prize_settings_list)

    page_args = {
        "title": title,
        "start_time": start_time,
        "end_time": end_time,
        "valid_time": valid_time,
        "description": desc,  #描述
        "expend": reduce_integral,  #消耗积分
        "delivery": send_integral,  #参与送积分
        "delivery_setting": __delivery2Bool(send_integral_rules),  #送积分规则
        "limitation": scratch_limit,  #抽奖限制
        "chance": win_rate,  #中奖率
        "allow_repeat": is_repeat_win,  #重复中奖
        "prize_settings": page_prize_settings,
        "scratch_bg_image": lottory_pic,
        "background_color": lottory_color
    }

    page_json = __get_scratchPageJson(page_args)

    update_page_args = {
        "field": "page_content",
        "id": project_id,
        "page_id": "1",
        "page_json": page_json
    }

    update_scratch_args = {
        "name": title,
        "start_time": start_time,
        "end_time": end_time,
        "expend": reduce_integral,  #消耗积分
        "delivery": send_integral,  #参与送积分
        "delivery_setting": __delivery2Bool(send_integral_rules),  #送积分规则
        "limitation": scratch_limit,  #抽奖限制
        "chance": win_rate,  #中奖率
        "allow_repeat": is_repeat_win,  #重复中奖
        "prize": json.dumps(scratch_prize_settings),
        "id": scratch_id  #updated的差别
    }

    #page 更新Page
    update_page_url = "/termite2/api/project/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    update_page_response = context.client.post(update_page_url,
                                               update_page_args)

    #step4:更新scratch
    update_scratch_url = "/apps/scratch/api/scratch/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    update_scratch_response = context.client.post(update_scratch_url,
                                                  update_scratch_args)

    #跳转,更新状态位
    design_mode = 0
    count_per_page = 1000
    version = 1
    page = 1
    enable_paginate = 1

    rec_scratch_url = "/apps/scratch/api/scratches/?design_mode={}&version={}&count_per_page={}&page={}&enable_paginate={}".format(
        design_mode, version, count_per_page, page, enable_paginate)
    rec_scratch_response = context.client.get(rec_scratch_url)
Ejemplo n.º 28
0
def __Update_Exlottery(context, text, page_id, lottery_id):
    """
	模拟用户登录页面
	编辑抽奖项目
	写入mongo表:
		1.lottery_lottery表
		2.page表
	"""

    design_mode = 0
    version = 1
    project_id = "new_app:lottery:" + page_id

    title = text.get("name", "")

    cr_start_date = text.get('start_date', u'今天')
    start_date = bdd_util.get_date_str(cr_start_date)
    start_time = "{} 00:00".format(bdd_util.get_date_str(cr_start_date))

    cr_end_date = text.get('end_date', u'1天后')
    end_date = bdd_util.get_date_str(cr_end_date)
    end_time = "{} 00:00".format(bdd_util.get_date_str(cr_end_date))

    valid_time = "%s~%s" % (start_time, end_time)

    desc = text.get('desc', '')  #活动规则
    share_intro = text.get('share_intro', '')  #分享时的描述
    # reduce_integral = text.get('reduce_integral',0)#消耗积分
    # send_integral = text.get('send_integral',0)#参与送积分
    reply = text.get('reply', "")  #送积分规则
    reply_link = text.get('link_reply', "")
    lottery_code_count = text.get('lottory_code_num', u'0')  #抽奖码个数

    home_page_pic = text.get('home_page_pic', '')
    lottory_pic = text.get('lottory_pic', '')
    lottory_color = text.get('lottory_color', '')

    win_rate = text.get('win_rate', '0%').split('%')[0]  #中奖率
    is_repeat_win = __name2Bool(text.get('is_repeat_win', "true"))  #重复中奖
    expect_prize_settings_list = text.get('prize_settings', [])
    page_prize_settings, exlottery_prize_settings = __prize_settings_process(
        expect_prize_settings_list)

    page_args = {
        "title": title,
        "start_time": start_time,
        "end_time": end_time,
        "valid_time": valid_time,
        "description": desc,  #描述
        "share_description": share_intro,  #分享简介
        # "expend":reduce_integral,#消耗积分
        # "delivery":send_integral,#参与送积分
        "chance": win_rate,  #中奖率
        "allow_repeat": is_repeat_win,  #重复中奖
        "prize_settings": page_prize_settings,
        "lottery_code_count": lottery_code_count,
        "homepage_image": home_page_pic,
        "exlottery_bg_image": lottory_pic,
        "background_color": lottory_color
    }

    page_json = __get_exlotteryPageJson(page_args)

    update_page_args = {
        "field": "page_content",
        "id": project_id,
        "page_id": "1",
        "page_json": page_json
    }

    update_exlottery_args = {
        "name": title,
        "share_description": share_intro,  # 分享简介
        "start_time": start_time,
        "end_time": end_time,
        "homepage_image": home_page_pic,
        # "expend":reduce_integral,#消耗积分
        # "delivery":send_integral,#参与送积分
        "chance": win_rate,  #中奖率
        "allow_repeat": is_repeat_win,  #重复中奖
        "prize": json.dumps(exlottery_prize_settings),
        "id": lottery_id,  #updated的差别
        "lottery_code_count": lottery_code_count,
    }

    #page 更新Page
    update_page_url = "/termite2/api/project/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    context.client.post(update_page_url, update_page_args)

    #step4:更新lottery
    update_exlottery_url = "/apps/exlottery/api/exlottery/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    context.client.post(update_exlottery_url, update_exlottery_args)

    #跳转,更新状态位
    design_mode = 0
    count_per_page = 1000
    version = 1
    page = 1
    enable_paginate = 1

    rec_exlottery_url = "/apps/exlottery/api/exlotteries/?design_mode={}&version={}&count_per_page={}&page={}&enable_paginate={}".format(
        design_mode, version, count_per_page, page, enable_paginate)
    context.client.get(rec_exlottery_url)
Ejemplo n.º 29
0
def __Create_Exlottery(context, text, user):
    """
	模拟用户登录页面
	创建专项抽奖项目
	写入mongo表:
		1.exlottery_exlottery表
		2.page表
	"""

    design_mode = 0
    version = 1
    text = text

    title = text.get("name", "")

    cr_start_date = text.get('start_date', u'今天')
    start_time = "{} 00:00".format(bdd_util.get_date_str(cr_start_date))

    cr_end_date = text.get('end_date', u'1天后')
    end_time = "{} 00:00".format(bdd_util.get_date_str(cr_end_date))

    valid_time = "%s~%s" % (start_time, end_time)

    desc = text.get('desc', '')  #活动规则
    share_intro = text.get('share_intro', '')  #分享时的描述
    # reduce_integral = text.get('reduce_integral',0)#消耗积分
    # send_integral = text.get('send_integral',0)#参与送积分
    win_rate = text.get('win_rate', '0%').split('%')[0]  #中奖率
    is_repeat_win = __name2Bool(text.get('is_repeat_win', "true"))  #重复中奖

    lottery_code_count = text.get('lottory_code_num', 0)
    home_page_pic = text.get('home_page_pic', '')
    lottory_pic = text.get('lottory_pic', '')
    lottory_color = text.get('lottory_color', '')

    expect_prize_settings_list = text.get('prize_settings', [])
    page_prize_settings, exlottery_prize_settings = __prize_settings_process(
        expect_prize_settings_list)

    page_args = {
        "title": title,
        "start_time": start_time,
        "end_time": end_time,
        "valid_time": valid_time,
        "description": desc,  #描述
        "share_description": share_intro,  #分享简介
        # "expend":reduce_integral,#消耗积分
        # "delivery":send_integral,#参与送积分
        "chance": win_rate,  #中奖率
        "allow_repeat": is_repeat_win,  #重复中奖
        "prize_settings": page_prize_settings,
        "lottery_code_count": lottery_code_count,
        "homepage_image": home_page_pic,
        "exlottery_bg_image": lottory_pic,
        "background_color": lottory_color
    }
    #step1:登录页面,获得分配的project_id
    get_exlottery_response = context.client.get("/apps/exlottery/exlottery/")
    exlottery_args_response = get_exlottery_response.context
    project_id = exlottery_args_response[
        'project_id']  #(str){new_app:lottery:0}

    #step2: 编辑页面获得右边的page_json
    dynamic_url = "/apps/api/dynamic_pages/get/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    dynamic_response = context.client.get(dynamic_url)
    dynamic_data = dynamic_response.context  #resp.context=> data ; resp.content => Http Text

    #step3:发送Page
    page_json = __get_exlotteryPageJson(page_args)

    termite_post_args = {
        "field": "page_content",
        "id": project_id,
        "page_id": "1",
        "page_json": page_json
    }
    termite_url = "/termite2/api/project/?design_mode={}&project_id={}&version={}".format(
        design_mode, project_id, version)
    post_termite_response = context.client.post(termite_url, termite_post_args)
    related_page_id = json.loads(post_termite_response.content).get(
        "data", {})['project_id']

    #step4:发送lottery_args
    post_exlottery_args = {
        "name": title,
        "share_description": share_intro,  #分享简介
        "start_time": start_time,
        "end_time": end_time,
        "homepage_image": home_page_pic,
        # "expend":reduce_integral,#消耗积分
        # "delivery":send_integral,#参与送积分
        "chance": win_rate,  #中奖率
        "allow_repeat": is_repeat_win,  #重复中奖
        "prize": json.dumps(exlottery_prize_settings),
        "related_page_id": related_page_id,
        "lottery_code_count": lottery_code_count,
    }

    exlottery_url = "/apps/exlottery/api/exlottery/?design_mode={}&project_id={}&version={}&_method=put".format(
        design_mode, project_id, version)
    post_exlottery_response = context.client.post(exlottery_url,
                                                  post_exlottery_args)

    #跳转,更新状态位
    design_mode = 0
    count_per_page = 1000
    version = 1
    page = 1
    enable_paginate = 1

    rec_exlottery_url = "/apps/exlottery/api/exlotteries/?design_mode={}&version={}&count_per_page={}&page={}&enable_paginate={}".format(
        design_mode, version, count_per_page, page, enable_paginate)
    rec_exlottery_response = context.client.get(rec_exlottery_url)
Ejemplo n.º 30
0
def step_impl(context, user, lottery_name):
    expect = json.loads(context.text)[0]

    title = expect.get("name", "")

    cr_start_date = expect.get('start_date', u'今天')
    start_date = bdd_util.get_date_str(cr_start_date)
    start_time = "{} 00:00".format(bdd_util.get_date_str(cr_start_date))

    cr_end_date = expect.get('end_date', u'1天后')
    end_date = bdd_util.get_date_str(cr_end_date)
    end_time = "{} 00:00".format(bdd_util.get_date_str(cr_end_date))

    valid_time = "%s~%s" % (start_time, end_time)

    desc = expect.get('desc', '')  #描述
    # reduce_integral = expect.get('reduce_integral',0)#消耗积分
    # send_integral = expect.get('send_integral',0)#参与送积分
    lottery_code_count = expect.get('lottory_code_num', u'0')  #抽奖码个数
    win_rate = expect.get('win_rate', '0%').split('%')[0]  #中奖率
    is_repeat_win = __name2Bool(expect.get('is_repeat_win', "true"))  #重复中奖

    share_intro = expect.get('share_intro', '')  #分享简介
    home_page_pic = expect.get('home_page_pic', '')  #首页背景图

    expect_prize_settings_list = expect.get('prize_settings', [])
    page_prize_settings, exlottery_prize_settings = __prize_settings_process(
        expect_prize_settings_list)

    obj = exlottery_models.Exlottery.objects.get(name=lottery_name)  #纯数字
    lottory_record = exlottery_models.ExlottoryRecord.objects.filter(
        belong_to=str(obj.id))
    related_page_id = obj.related_page_id
    pagestore = pagestore_manager.get_pagestore('mongo')
    page = pagestore.get_page(related_page_id, 1)
    page_component = page['component']['components'][0]['components']

    prize_dic = {}
    for record in lottory_record:
        if not prize_dic.has_key(record.prize_title):
            prize_dic[record.prize_title] = 1
        else:
            prize_dic[record.prize_title] += 1

    expect_lottery_dic = {
        "name": title,
        "start_time": start_time,
        "end_time": end_time,
        # "expend":reduce_integral,#消耗积分
        # "delivery":send_integral,#参与送积分
        "chance": win_rate,  #中奖率
        "allow_repeat": is_repeat_win,  #重复中奖
        "prize_settings": page_prize_settings,
        "lottery_code_count": lottery_code_count,
        "share_intro": share_intro,
        "home_page_pic": home_page_pic
    }

    actual_prize_list = []
    for comp in page_component:
        actual_prize_dic = {}
        actual_prize_dic['title'] = comp['model']['title']
        actual_prize_dic['prize_count'] = comp['model']['prize_count']
        actual_prize_dic['leftCount'] = (
            comp['model']['prize_count'] -
            prize_dic.get(comp['model']['title'], 0)
        ) if expect_prize_settings_list[page_component.index(comp)].has_key(
            'rest') else ""
        actual_prize_dic['image'] = comp['model']['image']
        actual_prize_dic['prize'] = {
            "type": comp['model']['prize']['type'],
            "data": comp['model']['prize']['data']
        }
        actual_prize_list.append(actual_prize_dic)

    actual_lottery_dic = {
        "name": obj.name,
        "start_time": __datetime2str(obj.start_time),
        "end_time": __datetime2str(obj.end_time),
        # "expend":obj.expend,#消耗积分
        # "delivery":obj.delivery,#参与送积分
        "chance": obj.chance,  #中奖率
        "allow_repeat": obj.allow_repeat,  #重复中奖
        "prize_settings": actual_prize_list,
        "lottery_code_count": obj.lottery_code_count,
        "share_intro": obj.share_description,
        "home_page_pic": obj.homepage_image
    }

    bdd_util.assert_dict(expect_lottery_dic, actual_lottery_dic)