Esempio n. 1
0
def __create_supplier(username):
    owner_id = bdd_util.get_user_id_for(username)
    supplier = mall_models.Supplier.create(
        owner=bdd_util.get_user_id_for(username),
        name=username,
        responsible_person=username,
        supplier_tel='10086',
        supplier_address=u'火星',
        remark='aaaaaa')
    return supplier
def __view_classification_list(context, user, father_id=0):

    data = {'corp_id': bdd_util.get_user_id_for(user), 'father_id': father_id}

    response = context.client.get('/mall/product_classifications/', data)
    data_list = response.data['product_classifications']
    use_data_list = []

    for one in data_list:
        use_data = dict()
        use_data['classfication_name'] = one['name']

        operation_list = [u'修改', u'删除']
        if father_id != 0:
            operation_list.append(u'配置特殊资质')

        if one['has_label']:
            operation_list.append(u'已配置标签')
        else:
            operation_list.append(u'配置标签')
        use_data['operation'] = operation_list
        use_data['product_count'] = one['product_count']
        use_data_list.append(use_data)

    return use_data_list
def step_impl(context, user, classification_name):
    datas = json.loads(context.text)
    #获得该商品分类的所有资质
    classification_id = __classification_name2id(classification_name)
    weizoom_corp = CorporationFactory.get_weizoom_corporation()
    classification = weizoom_corp.product_classification_repository.get_product_classification(
        classification_id)
    all_qualifications = classification.get_qualifications()
    #去除将要删除的资质
    for data in datas:
        name = data['qualification_name']
        for qualification in all_qualifications:
            if qualification.name == name:
                all_qualifications.remove(qualification)

    response = context.client.put(
        '/mall/product_classification_qualification/', {
            'corp_id':
            bdd_util.get_user_id_for(user),
            'classification_id':
            classification_id,
            'qualification_infos':
            json.dumps([{
                'id': q.id,
                'name': q.name
            } for q in all_qualifications])
        })

    bdd_util.assert_api_call_success(response)
Esempio n. 4
0
def __add_product_label_group(context, user, label_group_name):
    response = context.client.put(
        '/mall/product_label_group/', {
            'corp_id': bdd_util.get_user_id_for(user),
            'label_group_name': label_group_name
        })
    bdd_util.assert_api_call_success(response)
Esempio n. 5
0
def __del_product_label(context, user, label_name):
    label_id = label_name2id(label_name)
    response = context.client.delete('/mall/product_label/', {
        'corp_id': bdd_util.get_user_id_for(user),
        'label_id': label_id,
    })
    bdd_util.assert_api_call_success(response)
def step_impl(context, user, classification_name):
    datas = json.loads(context.text)
    qualifications = []
    for data in datas:
        qualifications.append({'name': data['qualification_name']})

    response = context.client.put(
        '/mall/product_classification_qualification/', {
            'corp_id': bdd_util.get_user_id_for(user),
            'classification_id': __classification_name2id(classification_name),
            'qualification_infos': json.dumps(qualifications)
        })
    bdd_util.assert_api_call_success(response)
Esempio n. 7
0
def step_impl(context, user):

    products = json.loads(context.text)
    for product in products:

        product_model = mall_models.Product.select().dj_where(
            name=product.get('name')).first()
        data = {
            'corp_id': bdd_util.get_user_id_for(user),
            'id': product_model.id,
            'position': product.get('position')
        }
        context.client.post('/product/product_position/', data)
def step_impl(context, user, classification_name):
    datas = json.loads(context.text)
    selected_labels = []
    classification_id = __classification_name2id(classification_name)
    for data in datas:
        selected_labels += map(lambda x: label_name2id(x), data['labels'])

    response = context.client.put(
        '/mall/product_classification_label/', {
            'corp_id': bdd_util.get_user_id_for(user),
            'classification_id': classification_id,
            'selected_labels': json.dumps(selected_labels)
        })
    bdd_util.assert_api_call_success(response)
Esempio n. 9
0
def step_impl(context, user):
    expected = bdd_util.table2list(context)
    response = context.client.get('/mall/product_label_groups/',
                                  {'corp_id': bdd_util.get_user_id_for(user)})
    actual = response.data['product_label_groups']
    for data in expected:
        tmp_list = []
        if data['labels'] == '':
            data['labels'] = tmp_list
        else:
            for label in data['labels'].split(','):
                tmp_list.append({'label_name': label})
            data['labels'] = tmp_list
    bdd_util.assert_list(expected, actual)
def step_impl(context, user, classification_name):
    table = context.table
    response = context.client.get(
        '/mall/product_classifications/', {
            'corp_id': bdd_util.get_user_id_for(user),
            'father_id': __classification_name2father_id(classification_name)
        })
    datas = response.data['product_classifications']
    actual = []
    expected = []
    for data in datas:
        if data['name'] == classification_name:
            actual = data['qualification_infos']

    for row in table:
        expected.append({'name': row['qualification_name']})

    bdd_util.assert_list(expected, actual)
def step_impl(context, user, classification_name):
    expected = json.loads(context.text)
    classification_id = __classification_name2id(classification_name)
    response = context.client.get(
        '/mall/product_classification_label/', {
            'corp_id': bdd_util.get_user_id_for(user),
            'classification_id': classification_id
        })
    resp_datas = response.data['relations']
    actual = []
    for data in resp_datas:
        label_group_name = label_group_id2name(data['label_group_id'])
        data['label_ids'].sort()
        label_ids = map(lambda x: label_id2name(x), data['label_ids'])
        actual.append({
            'label_group_name': label_group_name,
            'labels': label_ids
        })

    bdd_util.assert_list(expected, actual)
Esempio n. 12
0
def step_impl(context, user, corp_name):
	data = json.loads(context.text)
	req_data = __format_request_data(data)
	req_data['corp_id'] = bdd_util.get_user_id_for(corp_name)
	response = context.client.post('/account/corp/', req_data)
	bdd_util.assert_api_call_success(response)
def step_impl(context, user, classification_name):
    data = {
        'corp_id': bdd_util.get_user_id_for(user),
        'classification_id': __classification_name2id(classification_name)
    }
    response = context.client.delete('/mall/product_classification/', data)
Esempio n. 14
0
def __get_products(context, corp_name, type_name=u'在售'):
    TYPE2URL = {
        u'待售':
        '/product/offshelf_products/?corp_id=%d' % context.corp.id,
        u'在售':
        '/product/onshelf_products/?corp_id=%d' % context.corp.id,
        u'same_corp_tmpl':
        '/product/unshelf_pooled_products/?corp_id=%d',
        u'different_corp_tmpl':
        '/product/pooled_products/?corp_id=%d',
        u'待销':
        '/product/unshelf_consignment_products/?corp_id=%d' % context.corp.id,
    }

    if u'商品池' in type_name:
        other_corp_name = type_name[:-3]
        other_corp_id = bdd_util.get_user_id_for(other_corp_name)
        if corp_name == other_corp_name:
            url = TYPE2URL['same_corp_tmpl'] % other_corp_id
        else:
            url = TYPE2URL['different_corp_tmpl'] % other_corp_id
    else:
        url = TYPE2URL[type_name]

    response = context.client.get(url)
    bdd_util.assert_api_call_success(response)

    # if hasattr(context, 'query_param'):
    #     for key in context.query_param.keys():
    #         url += '&%s=%s' % (key, context.query_param[key])

    products = []
    for product in response.data["products"]:
        data = {}
        data['name'] = product['name']
        data['create_type'] = product['create_type']
        data['bar_code'] = product['bar_code']

        #分类
        if 'categories' in product:
            data['categories'] = ','.join(
                [category['name'] for category in product['categories']])

        # #规格
        # if 'models_info' in product:
        #     models_info = product['models_info']
        #     if not models_info['is_use_custom_model']:
        #         model = models_info['standard_model']
        #         data['price'] = model['price']
        #         data['stocks'] = u'无限' if model['stock_type'] == 'unlimit' else model['stocks']
        #         data['gross_profit'] = model['price'] - model['purchase_price']
        #     else:
        #         price_items = []
        #         gross_profit_items = []
        #         for model in models_info['custom_models']:
        #             price_items.append(model['price'])
        #             gross_profit_items.append(model['price'] - model['purchase_price'])
        #
        #         price_items.sort()
        #         gross_profit_items.sort()
        #         data['price'] = '%.2f~%.2f' % (price_items[0], price_items[-1])
        #         data['gross_profit'] = '%.2f~%.2f' % (gross_profit_items[0], gross_profit_items[-1])
        #         data['stocks'] = ""

        # 处理规格信息
        product['model'] = {'models': {}}
        resp_models_info = product['models_info']
        product['is_use_custom_model'] = u'是' if resp_models_info[
            'is_use_custom_model'] else u'否'
        if resp_models_info['is_use_custom_model']:
            print(resp_models_info['custom_models'])

            for model in resp_models_info['custom_models']:
                model_name_items = []
                for property_value in model['property_values']:
                    model_name_items.append(property_value['name'])
                model_name = ' '.join(model_name_items)
                product['model']['models'][model_name] = {
                    "price": model['price'],
                    "purchase_price": model['purchase_price'],
                    "weight": model['weight'],
                    "stock_type":
                    u'无限' if model['stock_type'] == 'unlimit' else u'有限',
                    "stocks": model['stocks']
                }
        else:
            model = resp_models_info['standard_model']
            model_name = model['name']
            product['model']['models'][model_name] = {
                "price": model['price'],
                "purchase_price": model['purchase_price'],
                "weight": model['weight'],
                "stock_type":
                u'无限' if model['stock_type'] == 'unlimit' else u'有限',
                "stocks": model['stocks']
            }

        data['model'] = product['model']

        data['image'] = product['image']
        data['sales'] = product.get('sales', 0)
        data['display_index'] = product['display_index']

        #供应商
        data['supplier'] = ""
        data['supplier_type'] = ""
        if product['supplier']:
            data["supplier"] = product['supplier']['name']
            supplier_type = product['supplier']['type']
            if supplier_type == 'fixed':
                data['supplier_type'] = u'固定低价'
            elif supplier_type == 'divide':
                divide_info = product['supplier']['divide_type_info']
                data['supplier_type'] = u'首月55分成(%s%%)' % divide_info[
                    'basic_rebate']
            elif supplier_type == 'retail':
                data['supplier_type'] = u'零售返点'

        #商品分类信息
        if len(product['classifications']) == 0:
            data['classification'] = ''
        else:
            items = []
            for classification in product['classifications']:
                items.append(classification['name'])
            data['classification'] = '-'.join(items)

        products.append(data)

    return products