class StatusMapView(BrowserView): """ ZMI page for managing membrane type "active" status mappings. """ template = ZopeTwoPageTemplateFile('status_map.pt') def __init__(self, context, request): BrowserView.__init__(self, context, request) self.cat_map = ICategoryMapper(context) def __call__(self): types = self.request.get('types', []) for portal_type in types: states = self.request.get("%s_active_states" % portal_type, []) cat_set = generateCategorySetIdForType(portal_type) self.cat_map.replaceCategoryValues(cat_set, ACTIVE_STATUS_CATEGORY, states) return self.template() def allStatesForType(self, portal_type): return getAllWFStatesForType(self.context, portal_type) def activeStatesForType(self, portal_type): cat_set = generateCategorySetIdForType(portal_type) return self.cat_map.listCategoryValues(cat_set, ACTIVE_STATUS_CATEGORY)
def testMembraneActiveWorkflowMapping(self): states = { 'TrainingCenter' : ['active', 'inactive'], 'eduMember' : ['active', 'inactive'], } categoryMap = ICategoryMapper(self.portal.membrane_tool) for t, s in states.items(): categorySet = generateCategorySetIdForType(t) self.assertEquals(s, categoryMap.listCategoryValues(categorySet, ACTIVE_STATUS_CATEGORY))
def _extractMembraneTypes(self): cat_map = ICategoryMapper(self.context) fragment = self._doc.createDocumentFragment() for mtype in self.context.listMembraneTypes(): # extract the membrane types child = self._doc.createElement('membrane-type') child.setAttribute('name', mtype) # extract the "active" w/f states for the type cat_set = generateCategorySetIdForType(mtype) states = cat_map.listCategoryValues(cat_set, ACTIVE_STATUS_CATEGORY) for state in states: sub = self._doc.createElement('active-workflow-state') sub.setAttribute('name', state) child.appendChild(sub) fragment.appendChild(child) return fragment
def testActiveWFStates(self): cat_set = generateCategorySetIdForType(DEFAULT_MEMBER_TYPE) cat_map = ICategoryMapper(self.mbtool) states = cat_map.listCategoryValues(cat_set, ACTIVE_STATUS_CATEGORY) self.failUnless('private' in states and 'public' in states)
class TestCategoryMapper(ZopeTestCase.ZopeTestCase): layer = ZCMLLayer def afterSetUp(self): self.obj = Foo() self.cat_map = ICategoryMapper(self.obj) def testAddCategorySet(self): cat_set = 'category_set' self.cat_map.addCategorySet(cat_set) self.failUnless(self.cat_map.hasCategorySet(cat_set)) self.failUnless(cat_set in self.cat_map.listCategorySets()) def testDelCategorySet(self): cat_set = 'category_set' self.cat_map.addCategorySet(cat_set) self.failUnless(self.cat_map.hasCategorySet(cat_set)) self.cat_map.delCategorySet(cat_set) self.failIf(self.cat_map.hasCategorySet(cat_set)) self.failUnless(len(self.cat_map.listCategorySets()) == 0) def testAddCategory(self): cat_set1 = 'category_set1' cat_set2 = 'category_set2' cat = 'category' self.cat_map.addCategorySet(cat_set1) self.cat_map.addCategorySet(cat_set2) self.cat_map.addCategory(cat_set1, cat) self.failUnless(self.cat_map.hasCategory(cat_set1, cat)) self.failIf(self.cat_map.hasCategory(cat_set2, cat)) def testMissingCatSetRaisesError(self): self.assertRaises(KeyError, self.cat_map.addToCategory, self.cat_map, 'category_set', 'category') self.assertRaises(KeyError, self.cat_map.removeFromCategory, self.cat_map, 'category_set', 'category') def testMissingCategoryRaisesError(self): cat_set = 'category_set' self.cat_map.addCategorySet(cat_set) self.assertRaises(KeyError, self.cat_map.addToCategory, self.cat_map, cat_set, 'category') self.assertRaises(KeyError, self.cat_map.removeFromCategory, self.cat_map, cat_set, 'category') def testAddToCategory(self): cat_set = 'category_set' cat1 = 'category1' cat2 = 'category2' datum1 = 'datum1' datum2 = 'datum2' self.cat_map.addCategorySet(cat_set) self.cat_map.addCategory(cat_set, cat1) self.cat_map.addCategory(cat_set, cat2) self.cat_map.addToCategory(cat_set, cat1, datum1) self.failUnless(self.cat_map.isInCategory(cat_set, cat1, datum1)) self.failIf(self.cat_map.isInCategory(cat_set, cat1, datum2)) self.failIf(self.cat_map.isInCategory(cat_set, cat2, datum1)) self.cat_map.addToCategory(cat_set, cat1, datum2) self.failUnless(self.cat_map.isInCategory(cat_set, cat1, datum1)) self.failUnless(self.cat_map.isInCategory(cat_set, cat1, datum2)) self.failUnless(set([datum1, datum2]) == \ set(self.cat_map.listCategoryValues(cat_set, cat1))) def testRemoveFromCategory(self): cat_set = 'category_set' cat = 'category' datum1 = 'datum1' datum2 = 'datum2' self.cat_map.addCategorySet(cat_set) self.cat_map.addCategory(cat_set, cat) self.cat_map.addToCategory(cat_set, cat, datum1) self.cat_map.addToCategory(cat_set, cat, datum2) self.failUnless(set([datum1, datum2]) == \ set(self.cat_map.listCategoryValues(cat_set, cat))) self.cat_map.removeFromCategory(cat_set, cat, datum1) self.failIf(self.cat_map.isInCategory(cat_set, cat, datum1)) self.failUnless(self.cat_map.isInCategory(cat_set, cat, datum2)) self.failUnless(set([datum2]) == \ set(self.cat_map.listCategoryValues(cat_set, cat)))