def wireAddPermissions(): """Creates a list of add permissions for all types in this project Must be called **after** all types are registered! """ global permissions atct_types = listTypes(PROJECTNAME) for atct in atct_types: if IATTopic.isImplementedByInstancesOf(atct['klass']): permission = AddTopics elif IATTopicCriterion.isImplementedByInstancesOf(atct['klass']): permission = "%s Topic: Add %s" % (PROJECTNAME, atct['portal_type']) setDefaultRoles(permission, CRITERION_ROLES) else: permission = "%s: Add %s" % (PROJECTNAME, atct['portal_type']) setDefaultRoles(permission, TYPE_ROLES) permissions[atct['portal_type']] = permission return permissions
def register(self, criterion, indices): if type(indices) is StringType: indices = (indices,) indices = tuple(indices) if indices == (): indices = ALL_INDICES assert IATTopicCriterion.isImplementedByInstancesOf(criterion) registerType(criterion, PROJECTNAME) crit_id = criterion.meta_type self[crit_id] = criterion self.portaltypes[criterion.portal_type] = criterion self.criterion2index[crit_id] = indices for index in indices: value = self.index2criterion.get(index, ()) self.index2criterion[index] = value + (crit_id,)
def getContentTypesVocabulary(self): tt = getToolByName(self, 'portal_types') types_list = [] from Products.Archetypes.public import listTypes cachefu_types = [t['portal_type'] for t in listTypes(PROJECT_NAME)] atct_criteria = [] try: from Products.ATContentTypes.config import PROJECTNAME as ATCTNAME from Products.ATContentTypes.interfaces import IATTopicCriterion for t in listTypes(ATCTNAME): if IATTopicCriterion.isImplementedByInstancesOf(t['klass']): atct_criteria.append(t['portal_type']) except: pass for t in tt.listTypeInfo(): # filter out a few types id = t.getId() if id == 'TempFolder': continue if id in cachefu_types: continue if id in atct_criteria: continue title = t.getProperty('title') if not title: title = id else: if title != id: title = '%s (%s)' % (title, id) types_list.append((id, title)) types_list.sort(lambda x, y: cmp(x[1], y[1])) return DisplayList(tuple(types_list))