Exemple #1
0
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()
Exemple #2
0
 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}
Exemple #3
0
    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)
Exemple #4
0
 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
Exemple #5
0
 def _delete_new(self, company_id):
     comp = Company.load(company_id)
     self.assertNotEqual(comp, None)
     comp.delete()
     self.commit()