def validate(self, value): super(ValidateSKUUniqueness, self).validate(value) if getattr(self.context, 'sku', u'') != value: adapter = IAdapter(self.context) brains = adapter.get_brains(IArticle, path=adapter.portal_path(), sku=value) if brains: raise Invalid(_(u'The SKU is already in use.'))
def upgrade_14_to_15(context, logger=None): """Set article attribute: vat_rate""" if logger is None: logger = logging.getLogger(__name__) from collective.base.interfaces import IAdapter from collective.cart.shopping.interfaces import IArticle from zope.lifecycleevent import modified adapter = IAdapter(context) for brain in adapter.get_brains(IArticle, path=adapter.portal_path()): obj = brain.getObject() setattr(obj, 'vat_rate', obj.vat) modified(obj) from collective.cart.shipping.interfaces import IShippingMethod for brain in adapter.get_brains(IShippingMethod, path=adapter.portal_path()): obj = brain.getObject() setattr(obj, 'vat', obj.vat) obj.reindexObject(idxs=['vat'])
def test__folder_and_document(self): from Products.ATContentTypes.interfaces.document import IATDocument from Products.ATContentTypes.interfaces.folder import IATFolder base = IAdapter(self.portal) folder1 = self.portal[self.portal.invokeFactory('Folder', 'folder1')] folder1.reindexObject() doc1 = self.portal[self.portal.invokeFactory('Document', 'doc1')] doc1.reindexObject() self.assertEqual(len(base.get_brains(IATDocument)), 1) self.assertEqual(len(base.get_objects(IATDocument)), 1) self.assertEqual(len(base.get_content_listing(IATDocument)), 1) self.assertEqual(base.get_brain(IATDocument).id, 'doc1') self.assertEqual(base.get_object(IATDocument).id, 'doc1') self.assertEqual(len(base.get_brains([IATDocument, IATFolder])), 2) self.assertEqual(len(base.get_objects([IATDocument, IATFolder])), 2) self.assertEqual(len(base.get_content_listing([IATDocument, IATFolder])), 2) self.assertEqual(len(base.get_brains([IATDocument], object_provides=IATFolder.__identifier__)), 2) self.assertEqual(len(base.get_objects([IATDocument], object_provides=IATFolder.__identifier__)), 2) self.assertEqual(len(base.get_content_listing([IATDocument], object_provides=IATFolder.__identifier__)), 2)
def test__one_folder(self): """Add folder under portal.""" from Products.ATContentTypes.interfaces.folder import IATFolder base = IAdapter(self.portal) folder1 = self.portal[self.portal.invokeFactory('Folder', 'folder1')] folder1.reindexObject() query = {} self.assertEqual(len(base.get_brains(**query)), 1) self.assertEqual(len(base.get_objects(**query)), 1) self.assertEqual(len(base.get_content_listing(**query)), 1) self.assertEqual(base.get_brain(**query).id, 'folder1') self.assertEqual(base.get_object(**query).id, 'folder1') self.assertEqual(len(base.get_brains(interfaces=IATFolder, **query)), 1) self.assertEqual(len(base.get_objects(interfaces=IATFolder, **query)), 1) self.assertEqual(len(base.get_content_listing(interfaces=IATFolder, **query)), 1) self.assertEqual(base.get_brain(interfaces=IATFolder, **query).id, 'folder1') self.assertEqual(base.get_object(interfaces=IATFolder, **query).id, 'folder1') query = {'path': '/'.join(folder1.getPhysicalPath())} self.assertEqual(len(base.get_brains(**query)), 1) self.assertEqual(len(base.get_objects(**query)), 1) self.assertEqual(len(base.get_content_listing(**query)), 1) self.assertEqual(base.get_brain(**query).id, 'folder1') self.assertEqual(base.get_object(**query).id, 'folder1') self.assertEqual(len(base.get_brains(interfaces=IATFolder, **query)), 1) self.assertEqual(len(base.get_objects(interfaces=IATFolder, **query)), 1) self.assertEqual(len(base.get_content_listing(interfaces=IATFolder, **query)), 1) self.assertEqual(base.get_brain(interfaces=IATFolder, **query).id, 'folder1') self.assertEqual(base.get_object(interfaces=IATFolder, **query).id, 'folder1') query['depth'] = 0 self.assertEqual(len(base.get_brains(**query)), 1) self.assertEqual(len(base.get_objects(**query)), 1) self.assertEqual(len(base.get_content_listing(**query)), 1) self.assertEqual(base.get_brain(**query).id, 'folder1') self.assertEqual(base.get_object(**query).id, 'folder1') self.assertEqual(len(base.get_brains(interfaces=IATFolder, **query)), 1) self.assertEqual(len(base.get_objects(interfaces=IATFolder, **query)), 1) self.assertEqual(len(base.get_content_listing(interfaces=IATFolder, **query)), 1) self.assertEqual(base.get_brain(interfaces=IATFolder, **query).id, 'folder1') self.assertEqual(base.get_object(interfaces=IATFolder, **query).id, 'folder1') query['depth'] = 1 self.assertEqual(len(base.get_brains(**query)), 0) self.assertEqual(len(base.get_objects(**query)), 0) self.assertEqual(len(base.get_content_listing(**query)), 0) self.assertIsNone(base.get_brain(**query)) self.assertIsNone(base.get_object(**query)) self.assertEqual(len(base.get_brains(interfaces=IATFolder, **query)), 0) self.assertEqual(len(base.get_objects(interfaces=IATFolder, **query)), 0) self.assertEqual(len(base.get_content_listing(interfaces=IATFolder, **query)), 0) self.assertIsNone(base.get_brain(interfaces=IATFolder, **query)) self.assertIsNone(base.get_object(interfaces=IATFolder, **query)) query['depth'] = 0 self.assertEqual(len(base.get_brains(**query)), 1) self.assertEqual(len(base.get_objects(**query)), 1) self.assertEqual(len(base.get_content_listing(**query)), 1) self.assertEqual(base.get_brain(**query).id, 'folder1') self.assertEqual(base.get_object(**query).id, 'folder1') setRoles(self.portal, TEST_USER_ID, ['Member']) from plone.app.testing.helpers import logout logout() base = IAdapter(self.portal) self.assertEqual(len(base.get_brains(**query)), 0) query['unrestricted'] = True self.assertEqual(len(base.get_brains(**query)), 1)