def import_product_list(company_id, filename='/tmp/products/products.csv'): company = Company.load(company_id) default_campaign = company.default_campaign products = [] with open(filename) as f: products = f.readlines() products = [p.rstrip() for p in products[1:]] product_categories = {} for pline in products: log(pline) (product_name, category_id, pic) = pline.split(',') pic = pic.strip() key = '%s%s' % (product_name.strip(), category_id.strip()) cat = ProductCategory.load(category_id.strip(), False) prod = None if key in product_categories: prod = Product.load(product_categories[key][0], False) else: prod = Product() prod.company = company prod.name = product_name.strip() prod.type = 'Parent or Child' prod.save() prod.flush() product_categories[key] = [str(prod.product_id), str(cat.category_id)] ass = Asset() ass.fk_type = 'Product' ass.fk_id = prod.product_id ass.enterprise_id = company.enterprise_id ass.name = os.path.basename(pic) ass.extension = os.path.splitext(pic)[1] ass.save() ass.flush() storage_root = Asset.get_storage_root() if not storage_root: storage_root = '/apps/pvs/storage' fs_real_dir = "{root}/{reldir}".format(root=storage_root, reldir=ass.relative_dir) util.mkdir_p(fs_real_dir) fs_real_path = "{fs_real_dir}/{assid}{ext}".format(fs_real_dir=fs_real_dir, assid=ass.id, ext=ass.extension) shutil.copyfile(pic, fs_real_path) for pc in product_categories: pcat = product_categories[pc] cat = ProductCategory.load(pcat[1], False) cat.add_product(pcat[0]) db.commit()
def _edit_impl(self): company_id = self.request.matchdict.get('company_id') comms = [] campaigns = util.select_list(Campaign.find_all(self.enterprise_id), 'campaign_id', 'name') company = None if company_id: company = Company.load(company_id) comms = util.select_list(Communication.find_all_by_company(company), 'comm_id', 'name') else: company = Company() return {'comms': comms, 'company': company, 'campaigns': campaigns}
def save(self): comp = Company.load(self.request.POST.get('company_id')) if not comp: comp = Company() comp.bind(self.request.POST) comp.save() comp.flush() #if not os.path.isdir(comp.web_full_directory): # comp.create_dir_structure() comp.clear_attributes() for i in range(10): attr_name = self.request.POST.get('attr_name[%d]' % i) attr_value = self.request.POST.get('attr_value[%d]' % i) if attr_name and attr_value: comp.set_attr(attr_name, attr_value) self.request.session.flash('Successfully saved %s.' % comp.name) return HTTPFound('/crm/company/edit/%s' % comp.company_id)
def invalidate_caches(self, **kwargs): if self.company_id: company = Company.load(self.company_id) if company: invalidate(self, 'Campaign.find_all', str(company.enterprise_id)) #pylint: disable-msg=E1101
def _delete_new(self, company_id): comp = Company.load(company_id) self.assertNotEqual(comp, None) comp.delete() self.commit()