Exemple #1
0
    def _create_new_attribute(self, parent_product_id):
        ent = Enterprise.find_by_name('Healthy U Store')
        comp = Company.find_all(ent.enterprise_id)[0]
        R = self.get('/crm/product/new?is_attribute&parent_id=%s' % parent_product_id)
        assert R.status_int == 200
        R.mustcontain('Edit Attribute for')
        f = R.forms['frm_product']
        self.assertEqual(f['product_id'].value, '')
        f.set('parent_id', parent_product_id)
        f.set('is_attribute', 'True')
        f.set('type', 'Attr')
        f.set('name', 'Test Product')
        f.set('unit_cost', '10.00')
        f.set('sku', 'TEST-SKU-123')
        f.set('manufacturer', 'Test Manufacturer')
        f.set('attr_name[0]', 'attr0key')
        f.set('attr_value[0]', 'attr0val')
        f.set('attr_name[1]', 'attr1key')
        f.set('attr_value[1]', 'attr1val')

        for camp in Campaign.find_by_company(comp):
            f.set('campaign_price[%s]' % camp.campaign_id, 20.0)
            f.set('campaign_discount[%s]' % camp.campaign_id, 10.0)

        R = f.submit('submit')
        self.assertEqual(R.status_int, 302)
        R = R.follow()
        assert R.status_int == 200
        f = R.forms['frm_product']
        R.mustcontain('Edit Attribute for')
        product_id = f['product_id'].value
        self.assertNotEqual(f['product_id'].value, '')
        return product_id
Exemple #2
0
    def _show_prep(self, report_id):
        report = Report.load(report_id)
        campaigns = products = companies = users = vendors = None
        if report.show_campaign_id:
            campaigns = util.select_list(Campaign.find_all(self.enterprise_id), 'campaign_id', 'name', True)

        if report.show_vendor_id:
            vendors = util.select_list(Vendor.find_all(self.enterprise_id), 'vendor_id', 'name', True)

        if report.show_company_id:
            companies = util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name', True)

        if report.show_user_id:
            users = util.select_list(Users.find_all(self.enterprise_id), 'user_id', 'user_id', True)

        if report.show_product_id:
            products = util.select_list(Product.find_all(self.enterprise_id), 'product_id', 'name', True)

        return {
            'today' : util.today_date(),
            'tomorrow' : util.tomorrow(),
            'thirty_ago' : util.today_date() - datetime.timedelta(days=30),
            'rpt_end_dt' : self.request.GET.get('rpt_end_dt'),
            'rpt_start_dt' : self.request.GET.get('rpt_start_dt'),
            'enterprise_id' : self.enterprise_id,
            'report' : report,
            'campaigns' : campaigns,
            'products' : products,
            'companies' : companies,
            'users' : users,
            'vendors' : vendors
            }
Exemple #3
0
 def test_send_with_attachment(self):
     ent = Enterprise.find_all()[0]
     comp = Company.find_all(ent.enterprise_id)[0]
     mail = UserMail(comp.default_campaign)
     rand_subj = random.random()
     mail.send('*****@*****.**', 'test %s' % rand_subj,
               'This is generated by pvscore/tests/functional/test_mail:test_send_with_attachment',
               'README.md')
Exemple #4
0
 def search(self):
     name = self.request.POST.get('name')
     company_id = self.request.POST.get('company_id')
     return {
         'companies' : util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name'),
         'name' : name,
         'company_id' : company_id,
         'campaigns' : Campaign.search(self.enterprise_id, name, company_id)
     }
Exemple #5
0
 def _edit_impl(self):
     purchase_order_id = self.request.matchdict.get('purchase_order_id')
     purchase = PurchaseOrder.load(purchase_order_id) if purchase_order_id else PurchaseOrder()
     return {
         'companies' : util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name'),
         'vendors' : util.select_list(Vendor.find_all(self.enterprise_id), 'vendor_id', 'name', True),
         'products' : Product.find_all(self.enterprise_id),
         'purchase' : purchase,
         'events' : util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, purchase), 'event_id', 'display_name') if purchase.purchase_order_id else []
         }
Exemple #6
0
 def _prep(self):
     charts = []
     # basic included snapshot reports.
     if self.request.ctx.user.priv.view_report:
         charts.append(PeriodOrderSummary(self.request))
         charts.append(MTDSalesByVendor(self.request))
         #charts.append(PeriodCustomerCountSummary(self.request))
     return {
         'companies': Company.find_all(self.request.ctx.enterprise.enterprise_id),
         'charts' : charts,
         'appointments' : Appointment.find_future_by_user(self.request.ctx.user)[:10]
         }
Exemple #7
0
 def test_send_with_bad_attachment(self):
     ent = Enterprise.find_all()[0]
     comp = Company.find_all(ent.enterprise_id)[0]
     mail = UserMail(comp.default_campaign)
     rand_subj = random.random()
     excepted = False
     try:
         mail.send('*****@*****.**', 'test %s' % rand_subj,
                   'this should never make it.  bogus attachment.',
                   'BOGUS.txt')
     except IOError as ioe:
         excepted = True
     assert excepted
Exemple #8
0
    def _edit_impl(self):
        category_id = self.request.matchdict.get('category_id')
        companies = util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name')
        if category_id:
            category = ProductCategory.load(category_id)
            self.forbid_if(not category or category.company.enterprise_id != self.enterprise_id)
        else:
            category = ProductCategory()

        all_products = Product.find_all(self.enterprise_id)
        return {'companies' : companies,
                'category' : category,
                'all_products' : all_products}
Exemple #9
0
 def _edit_impl(self):
     site_id = self.request.matchdict.get('site_id')
     self.session['last_site_id'] = site_id
     if site_id:
         site = Site.load(site_id)
         self.forbid_if(not site or str(site.company.enterprise_id) != str(self.enterprise_id))
     else:
         site = Site()
     return {
         'site' : site,
         'shipping_methods' : Site.get_shipping_methods(),
         'tax_methods' : Site.get_tax_methods(),
         'companies' : util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name'),
         'campaigns' : util.select_list(Campaign.find_all(self.enterprise_id), 'campaign_id', 'name')
         }
Exemple #10
0
    def _edit_impl(self):
        campaign_id = self.request.matchdict.get('campaign_id')
        comms = []
        companies = util.select_list(Company.find_all(self.enterprise_id),
                                       'company_id', 'name')
        campaign = None
        if campaign_id:
            campaign = Campaign.load(campaign_id)
            self.forbid_if(not campaign or campaign.company.enterprise_id != self.enterprise_id)
            comms = util.select_list(Communication.find_all_by_company(campaign.company), 'comm_id', 'name', True)
        else:
            campaign = Campaign()

        return {'comms': comms,
                'campaign': campaign,
                'companies': companies}
Exemple #11
0
 def test_misc(self):
     ent = Enterprise.find_by_name('Healthy U Store')
     comps = Company.find_all(ent.enterprise_id)
     assert len(comps) > 0
     comp = comps[0]
     comp_ = Company.find_by_name(ent.enterprise_id, comp.name)
     assert comp_ is not None
     assert comp.company_id == comp_.company_id
     assert str(ent.enterprise_id) in str(ent) 
     assert ent.get_email_info() is not None
     assert comp.get_email_info() is not None
     assert Enterprise.find_by_name(ent.name).name == ent.name
     camps = Campaign.find_by_company(comp)
     assert len(camps) > 1
     ids = sorted([camp.campaign_id for camp in camps])
     ids2 = sorted([camp.campaign_id for camp in Campaign.load_ids(ids)])
     assert ids == ids2
Exemple #12
0
 def _edit_impl(self):
     site_id = self.request.matchdict.get('site_id')
     site = Site.load(site_id)
     self.forbid_if(not site or str(site.company.enterprise_id) != str(self.enterprise_id))
     content_id = self.request.matchdict.get('content_id')
     if content_id:
         content = Content.load(content_id)
         self.forbid_if(not content
                        or str(content.site.company.enterprise_id) != str(self.enterprise_id)
                        or str(content.site_id) != str(site_id))
     else:
         content = Content()
         content.site_id = site_id
     return {
         'site' : site,
         'content' : content,
         'companies' : util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name'),
         'campaigns' : util.select_list(Campaign.find_all(self.enterprise_id), 'campaign_id', 'name')
         }
Exemple #13
0
    def _edit_impl(self):
        product_id = self.request.matchdict.get('product_id')
        campaigns = Campaign.find_all(self.enterprise_id)
        companies = util.select_list(Company.find_all(self.enterprise_id), 'company_id', 'name')
        product_types = Product.get_types()
        vendors = util.select_list(Vendor.find_all(self.enterprise_id), 'vendor_id', 'name', True)
        categories = util.select_list(ProductCategory.find_all(self.enterprise_id), 'category_id', 'name', True)
        if product_id:
            product = Product.load(product_id)
            self.forbid_if(not product or product.company.enterprise_id != self.enterprise_id)
            product_categories = ProductCategory.find_by_product(product)
        else:
            product = Product()
            product_categories = []
        self.forbid_if(self.request.ctx.user.is_vendor_user() and product.product_id and not self.request.ctx.user.vendor_id == product.vendor_id)
        children = product.get_children()
        other_products = product.find_eligible_children()
        non_children = []
        for prod in other_products:
            found = False
            for kid in children:
                if kid.child_id == prod.product_id:
                    found = True
                    break
            if found == False:
                non_children.append(prod)

        return  {
            'product' : product,
            'campaigns' : campaigns,
            'companies' : companies,
            'product_types' : product_types,
            'vendors' : vendors,
            'categories' : categories,
            'product_categories' : product_categories,
            'children' : children,
            'non_children': non_children,
            'other_products' : other_products,
            'events' : util.select_list(StatusEvent.find_all_applicable(self.enterprise_id, product), 'event_id', 'display_name'),
            'is_attribute' : self.request.GET.get('is_attribute') == 'True', 
            'parent_product' : Product.load(self.request.GET.get('parent_id')) if 'parent_id' in self.request.GET else None
            }
Exemple #14
0
 def list(self):
     return {'companies' : Company.find_all(self.enterprise_id)}