def save(self): discount = Discount.load(self.request.POST.get('discount_id')) if not discount: discount = Discount() discount.enterprise_id = self.enterprise_id else: self.forbid_if(discount.enterprise_id != self.enterprise_id) discount.bind(self.request.POST, True) discount.save() discount.flush() included_products = {} for k in self.request.POST.keys(): if k.startswith('product_incl'): product_id = self.request.POST.get(k) included_products[product_id] = 1 for current_prod in discount.get_products(): if current_prod.product_id not in included_products.keys(): discount.clear_product(current_prod.product_id) for new_included_product_id in included_products.keys(): discount.add_product(new_included_product_id) discount.invalidate_caches() self.request.session.flash('Successfully saved %s.' % discount.name) return HTTPFound('/crm/discount/edit/%s' % discount.discount_id)
def _edit_impl(self): discount_id = self.request.matchdict.get('discount_id') discount = None if discount_id: discount = Discount.load(discount_id) self.forbid_if(not discount or discount.enterprise_id != self.enterprise_id) else: discount = Discount() included_products = discount.get_products() not_included_products = [] for prod in Product.find_all(self.enterprise_id): found = False for incl in included_products: if incl.product_id == prod.product_id: found = True break if found == False: not_included_products.append(prod) return { 'discount': discount, 'included_products' : included_products, 'not_included_products' : not_included_products, 'excluded' : Product.find_all(self.enterprise_id), 'tomorrow' : util.today_date() + datetime.timedelta(days=1), 'plus14' : util.today_date() + datetime.timedelta(days=14) }