def product(self, product, category='', **kwargs): cr, uid, context, pool = request.cr, request.uid, request.context, request.registry category_obj = pool['product.public.category'] template_obj = pool['product.template'] context.update(active_id=product.id) if category: category = category_obj.browse(cr, uid, int(category), context=context) attrib_list = request.httprequest.args.getlist('attrib') attrib_values = [map(int,v.split("-")) for v in attrib_list if v] attrib_set = set([v[1] for v in attrib_values]) keep = QueryURL('/shop/wx/lunch', category=category and category.id, attrib=attrib_list) category_ids = category_obj.search(cr, uid, [], context=context) category_list = category_obj.name_get(cr, uid, category_ids, context=context) category_list = sorted(category_list, key=lambda category: category[1]) pricelist = get_pricelist() from_currency = pool.get('product.price.type')._get_field_currency(cr, uid, 'list_price', context) to_currency = pricelist.currency_id compute_currency = lambda price: pool['res.currency']._compute(cr, uid, from_currency, to_currency, price, context=context) if not context.get('pricelist'): context['pricelist'] = int(get_pricelist()) product = template_obj.browse(cr, 1, int(product), context=context) # 获取该产品是否已加入到了购物车 key_name = {} all_car_num = 0 car_obj = pool.get('qdodoo.wxsite.car') car_ids = car_obj.search(cr, SUPERUSER_ID, [('user_id','=',uid)]) for key_line in car_obj.browse(cr, SUPERUSER_ID, car_ids): key_name[key_line.name.id] = u'已添加' all_car_num += key_line.number # 获取当前公司的名称(根据用户模型获取数据) users_obj = pool.get('res.users') company_name = users_obj.browse(cr, SUPERUSER_ID, uid).company_id.name values = { 'category': category, 'pricelist': pricelist, 'attrib_values': attrib_values, 'compute_currency': compute_currency, 'attrib_set': attrib_set, 'keep': keep, 'category_list': category_list, 'main_object': product, 'product': product, 'company_name':company_name, 'all_car_num':all_car_num, 'key_name':key_name, } return request.website.render("wxsite.product", values)
def event_register(self, event, **post): pricelist_id = int(get_pricelist()) values = { 'event': event.with_context(pricelist=pricelist_id), 'main_object': event.with_context(pricelist=pricelist_id), 'range': range, } return request.website.render("website_event.event_description_full", values)
def best_deal_booking(self, best_deal, **post): pricelist_id = int(get_pricelist()) values = { 'best_deal': best_deal.with_context(pricelist=pricelist_id), 'main_object': best_deal.with_context(pricelist=pricelist_id), 'range': range, } return request.website.render( "website_best_deal.best_deal_description_full", values)
def get_search_values(self, kw=None): def dedictify(value): # Order is not guaranteed in a dict. Make it a list of tuples instead if type(value) == dict: value = [(key, dedictify(value[key])) for key in sorted(value.keys())] return value attrs = ['chosen_filter_qty', 'form_values', 'sort_order', 'sort_name', 'current_ingredient'] if kw: request.website.dn_shop_set_session('product.template', kw, '/webshop') return (' pricelist: %s ' % get_pricelist()) + ' '.join(['%s: %s' % (attr, dedictify(request.session.get(attr))) for attr in attrs]).replace('{', '{{').replace('}', '}}')
def gokart_event(self, event, **post): pricelist_id = int(get_pricelist()) if request.httprequest.method == 'POST': quantity = post.get('quantity', False) ticket = event.event_ticket_ids[0] order = request.website.sale_get_order(force_create=1) order.with_context(event_ticket_id=ticket.id)._cart_update(product_id=ticket.product_id.id, add_qty=quantity) order.write({ 'driver_name': post.get('driver_name'), 'birth_date': post.get('birth_date'), 'parent_name': post.get('parent_name'), 'length': post.get('length'), 'other_info': post.get('other_info') }) return request.redirect("/shop/checkout") else: values = { 'event': event.with_context(pricelist=pricelist_id), 'main_object': event.with_context(pricelist=pricelist_id), 'range': range, } return request.render('website_event.event_description_full', values)
def tracking_cart(self, category=None , **post): """ 站点首页 """ # 先校验是否登录 cr, uid, context, pool = request.cr, request.uid, request.context, request.registry # 3代表公开用户,也就是未登录状态 if uid == 3: return self.user_check() else: category_obj = pool.get('pos.category') # 组织数据查询时的条件 domain = [("sale_ok", "=", True),("available_in_pos","=",True)] if category: domain += [('pos_categ_id', 'child_of', int(category))] category = category_obj.browse(cr, SUPERUSER_ID, int(category), context=context) # 获取当前公司的名称(根据用户模型获取数据) users_obj = pool.get('res.users') company_name = users_obj.browse(cr, SUPERUSER_ID, uid).company_id.name # 获取所有的产品模板数据 template_obj = pool.get('product.template') product_ids = template_obj.search(cr, SUPERUSER_ID, domain) products = template_obj.browse(cr, SUPERUSER_ID, product_ids, context=context) # 获取该产品是否已加入到了购物车 key_name = {} all_car_num = 0 all_money = 0 car_obj = pool.get('qdodoo.wxsite.car') car_ids = car_obj.search(cr, SUPERUSER_ID, [('user_id','=',uid),('name','in',product_ids)]) for key_line in car_obj.browse(cr, SUPERUSER_ID, car_ids): key_name[key_line.name.id] = key_line.number all_car_num += key_line.number all_money += key_line.number * key_line.name.lst_price #获取总金额 category_ids = category_obj.search(cr, SUPERUSER_ID, [('parent_id', '=', False)], context=context) categs = category_obj.browse(cr, SUPERUSER_ID, category_ids, context=context) keep = QueryURL('/shop/wx/lunch', category=category and int(category)) if not context.get('pricelist'): pricelist = get_pricelist() context['pricelist'] = int(pricelist) else: pricelist = pool.get('product.pricelist').browse(cr, uid, context['pricelist'], context) from_currency = pool.get('product.price.type')._get_field_currency(cr, uid, 'list_price', context) to_currency = pricelist.currency_id compute_currency = lambda price: pool['res.currency']._compute(cr, uid, from_currency, to_currency, price, context=context) values={ 'company_name':company_name, 'products': products, 'category': category, 'categories': categs, 'keep': keep, 'compute_currency':compute_currency, 'pricelist': pricelist, 'key_name':key_name, 'all_car_num':all_car_num, 'all_money':all_money, } return request.website.render("wxsite.products",values)
def tracking_cart(self, category=None, **post): """ 站点首页 """ # 先校验是否登录 cr, uid, context, pool = request.cr, request.uid, request.context, request.registry config_obj = pool.get('pos.config') # 如果有桌号 # 3代表公开用户,也就是未登录状态 desk_id = post.get('desk_id') if desk_id: config_id = config_obj.browse(cr, SUPERUSER_ID, int(desk_id)) company_id = config_id.company_id.id return self.user_check(company_id) else: if uid == 3: values = { 'company_name':'', 'error_text':u'登录失败,请联系系统管理员!!', } return request.website.render("wxsite.error", values) category_obj = pool.get('pos.category') # 获取当前公司的名称(根据用户模型获取数据) users_obj = pool.get('res.users') company_obj = users_obj.browse(cr, SUPERUSER_ID, uid).company_id company_name = company_obj.name company_id = company_obj.id # 组织数据查询时的条件 domain = [("sale_ok", "=", True),("available_in_pos","=",True),('company_id','=',company_id)] # 获取产品的分类 template_obj = pool.get('product.template') product_ids_old = template_obj.search(cr, SUPERUSER_ID, domain) products_old = template_obj.browse(cr, SUPERUSER_ID, product_ids_old, context=context) product_category = [] for line in products_old: if line.pos_categ_id: product_category.append(line.pos_categ_id.id) if category: domain += [('pos_categ_id', 'child_of', int(category))] category = category_obj.browse(cr, SUPERUSER_ID, int(category), context=context) # 获取所有的产品模板数据 product_ids = template_obj.search(cr, SUPERUSER_ID, domain) products = template_obj.browse(cr, SUPERUSER_ID, product_ids, context=context) # 获取该产品是否已加入到了购物车 key_name = {} all_car_num = 0 all_money = 0 car_obj = pool.get('qdodoo.wxsite.car') car_ids = car_obj.search(cr, SUPERUSER_ID, [('user_id','=',uid),('name','in',product_ids)]) for key_line in car_obj.browse(cr, SUPERUSER_ID, car_ids): key_name[key_line.name.id] = key_line.number all_car_num += key_line.number all_money += key_line.number * key_line.name.lst_price #获取总金额 category_ids = category_obj.search(cr, SUPERUSER_ID, [('parent_id', '=', False),('id','in',product_category)], order="sequence",context=context) categs = category_obj.browse(cr, SUPERUSER_ID, category_ids, context=context) keep = QueryURL('/shop/wx/lunch', category=category and int(category)) if not context.get('pricelist'): pricelist = get_pricelist() context['pricelist'] = int(pricelist) else: pricelist = pool.get('product.pricelist').browse(cr, uid, context['pricelist'], context) from_currency = pool['res.users'].browse(cr, uid, uid, context=context).company_id.currency_id to_currency = pricelist.currency_id compute_currency = lambda price: pool['res.currency']._compute(cr, uid, from_currency, to_currency, price, context=context) values={ 'company_name':company_name, 'products': products, 'category': category, 'categories': categs, 'keep': keep, 'compute_currency':compute_currency, 'pricelist': pricelist, 'key_name':key_name, 'all_car_num':all_car_num, 'all_money':all_money, } return request.website.render("wxsite.products",values)
def get_pricelist(self): return get_pricelist()
def _format(self, inner, options, qwebcontext): product = qwebcontext.get('product') category = '' search = '' cr, uid, context, pool = qwebcontext.cr, SUPERUSER_ID, qwebcontext.context, self.pool category_obj = pool['product.public.category'] template_obj = pool['product.template'] context.update(active_id=product.id) if category: category = category_obj.browse(cr, uid, int(category), context=context) # attrib_list = request.httprequest.args.getlist('attrib') # attrib_values = [map(int,v.split("-")) for v in attrib_list if v] # attrib_set = set([v[1] for v in attrib_values]) keep = QueryURL('/shop', category=category and category.id, search=search, attrib=[]) #attrib_list category_ids = category_obj.search(cr, uid, [], context=context) category_list = category_obj.name_get(cr, uid, category_ids, context=context) category_list = sorted(category_list, key=lambda category: category[1]) pricelist = get_pricelist() from_currency = pool.get('product.price.type')._get_field_currency( cr, uid, 'list_price', context) to_currency = pricelist.currency_id compute_currency = lambda price: pool['res.currency']._compute( cr, uid, from_currency, to_currency, price, context=context) if not request.context.get('pricelist'): request.context['pricelist'] = int(get_pricelist()) product = template_obj.browse(cr, uid, int(product), context=context) values = { 'search': search, 'category': category, 'pricelist': pricelist, 'attrib_values': [], #attrib_values, 'compute_currency': compute_currency, 'attrib_set': set(), #attrib_set, 'keep': keep, 'category_list': category_list, 'main_object': product, 'product': product, 'get_attribute_value_ids': self.get_attribute_value_ids } qwebcontext.update(values) html = pool["ir.qweb"].render_node(inner, qwebcontext).decode('utf8') return HTMLSafe(html)