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)
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)
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)
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)
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)
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)
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