def getAvailableSelfCertificationCriteriaAsDisplayList(self): """Get self-certification criteria in DisplayList form.""" try: return DisplayList([ (item, item) for item in self.getAvailableSelfCertificationCriteria() ]) except: return DisplayList([('no', 'criteria')])
def sortedEventsBySlots(self, events): """Sorted events by slot""" mp = getToolByName(self, 'portal_properties') special_event_types_pro = mp.monet_calendar_event_properties.special_event_types special_event_types = DisplayList() for etype in special_event_types_pro: special_event_types.add(etype, _(etype)) sorted_events = { 'morning': [], 'afternoon': [], 'night': [], 'allday': [], 'sequence_slots': ['morning', 'afternoon', 'night', 'allday'] } sorted_events_keys = sorted_events.keys() for event in events: inter = list( set(event.getEventType).intersection(set(special_event_types))) if inter: if not inter[0] in sorted_events['sequence_slots']: sorted_events['sequence_slots'].append(inter[0]) sorted_events[inter[0]] = [] sorted_events[inter[0]].append(event) continue for key in sorted_events_keys: if event.getSlots == key: sorted_events[key].append(event) return sorted_events
def listItemEvents(self): config = self.config() allEvents = config.listItemEvents() selectedEvents = config.getMailItemEvents() # From the list of all events that are selectable in the config # (=configItemEvents), the user may only (de)activate events # that are selected in the config (=selectedEvents). Among # selectedEvents, the user may only (de)activate events that make sense # (ie, if the user is not an adviser, it has no sense to propose him to # (de)activate events sent to an adviser). res = [] # We must know if the user is a MeetingManager, an item creator or # adviser tool = config.getParentNode() isMeetingManager = tool.isManager(config) isCreator = tool.userIsAmong(['creators']) isAdviser = tool.userIsAmong(['advisers']) for event in selectedEvents: keepIt = False if (event in ('lateItem', 'annexAdded', 'askDiscussItem')) and \ isMeetingManager: keepIt = True elif event in ('itemPresented', 'itemUnpresented', 'itemDelayed', 'itemClonedToThisMC') and isCreator: keepIt = True elif event in ('adviceToGive', 'adviceInvalidated') and isAdviser: keepIt = True elif event == 'adviceEdited': keepIt = True # This event requires permission "View". if keepIt: res.append((event, allEvents.getValue(event))) return DisplayList(tuple(res))
def getEventTypeVocab(self): mp = getToolByName(self, 'portal_properties') items = mp.monet_calendar_event_properties.event_types vocab = DisplayList() for item in items: vocab.add(item, _(item)) return vocab
def listMetaDataFields(self, exclude=True): """Return a list of metadata fields from catalog. """ #tool = getToolByName(self, ATCT_TOOLNAME) #original_list = tool.getMetadataDisplay(exclude) return DisplayList(( ('getAnalysisCategory', _p('Analysis Category')), ('getAnalysisService', _p('Analysis Service')), ('getAnalysts', _('Analyst')), ('getClientOrderNumber', _('Client Order')), ('getClientReference', _('Client Reference')), ('getClientSampleID', _('Client Sample ID')), ('getClientTitle', _('Client')), ('getContactTitle', _('Contact')), ('Creator', _p('Creator')), ('created', _('Date Created')), ('getDatePublished', _('Date Published')), ('getDateReceived', _('Date Received')), ('getDateSampled', _('Date Sampled')), ('getProfileTitle', _('Analysis Profile')), ('getRequestID', _('Request ID')), ('getSampleID', _('Sample ID')), ('getSamplePointTitle', _('Sample Point')), ('getSampleTypeTitle', _('Sample Type')), ('review_state', _p('Review state')), ))
def listMetaDataFields(self, exclude=True): """Return a list of metadata fields from catalog """ return DisplayList(( ('getRequestID', _('Request ID')), ('getClientTitle', _('Client Name')), ('getContactTitle', _('Contact Name')), ('getProfileTitle', _('Analysis Profile')), ('getClientOrderNumber', _('Client Order')), ('getInvoiced', _('Invoiced')), ('review_state', _p('Review state')), ('getAnalysisCategory', _p('Analysis Category')), ('getAnalysisService', _p('Analysis Service')), ('getAnalyst', _('Analyst')), ('getClientReference', _('Client Reference')), ('getClientSampleID', _('Client Sample ID')), ('getSampleTypeTitle', _('Sample Type')), ('getSamplePointTitle', _('Sample Point')), ('getDateSampled', _('Date Sampled')), ('created', _('Date Created')), ('getDateReceived', _('Date Received')), ('getDatePublished', _('Date Published')), ('Creator', _p('Creator')), ))
def testGetAsDisplayListWithCustomColumns(self): lst = DisplayList() lst.add('c', 'a') lst.add('f', 'd') self.assertEqual( self.field.getAsDisplayList(self.demo, 'The third', 'column1'), lst)
def getInstrumentTypes(self): bsc = getToolByName(self, 'bika_setup_catalog') items = [(c.UID, c.Title) for c in bsc(portal_type='InstrumentType', inactive_state='active')] items.sort(lambda x, y: cmp(x[1], y[1])) return DisplayList(items)
def getManagersVocab(self, strict=False): """ Get the managers available as a DisplayList. The first item is 'None', with a key of '(UNASSIGNED)'. Note, we now also allow Technicians here, unless we are called with 'strict' is True. """ tracker = self.getTracker() vocab = DisplayList() vocab.add('(UNASSIGNED)', _(u'None')) mtool = getToolByName(self, 'portal_membership') for item in tracker.getManagers(): user = mtool.getMemberById(item) if user: fullname = user.getProperty('fullname', item) or item else: fullname = item vocab.add(item, fullname) if not strict: for item in tracker.getTechnicians(): user = mtool.getMemberById(item) if user: fullname = user.getProperty('fullname', item) or item else: fullname = item vocab.add(item, fullname) return vocab
def getSuppliers(self): bsc = getToolByName(self, 'bika_setup_catalog') items = [(c.UID, c.getName) for c in bsc(portal_type='Supplier', inactive_state='active')] items.sort(lambda x, y: cmp(x[1], y[1])) return DisplayList(items)
def _ct_vocabularyPossibleTypes(self): """Get a DisplayList of types which may be added (id -> title) """ typelist = [(fti.title_or_id(), fti.getId()) for fti in self.getDefaultAddableTypes()] typelist.sort() return DisplayList([(id, title) for title, id in typelist])
def getTagsAndTagsCount(results): from Products.Archetypes.atapi import Vocabulary, DisplayList from Products.Archetypes.utils import unique coll = {} for o in results: lstSubject = [] try: lstSubject = o.Subject except AttributeError: from p4a.plonecalendar.eventprovider import BrainEvent if isinstance(o,BrainEvent): lstSubject = o.context.Subject else: lstSubject = [] for eSub in lstSubject: if coll.get(eSub,None) is None: coll[eSub] = {'name':eSub,'count':1} else: coll[eSub]['count'] = coll.get(eSub)['count'] + 1 dl = DisplayList() collkeys = coll.keys() collkeys.sort(lambda x,y: cmp(x.lower(),y.lower()),reverse=False) for obj in collkeys: dl.add(coll[obj]['name'],coll[obj]['count']) return Vocabulary(dl,None,None)
def to_display_list(pairs, sort_by="key", allow_empty=True): """Create a Plone DisplayList from list items :param pairs: list of key, value pairs :param sort_by: Sort the items either by key or value :param allow_empty: Allow to select an empty value :returns: Plone DisplayList """ dl = DisplayList() if isinstance(pairs, basestring): pairs = [pairs, pairs] for pair in pairs: # pairs is a list of lists -> add each pair if isinstance(pair, (tuple, list)): dl.add(*pair) # pairs is just a single pair -> add it and stop if isinstance(pair, basestring): dl.add(*pairs) break # add the empty option if allow_empty: dl.add("", "") # sort by key/value if sort_by == "key": dl = dl.sortedByKey() elif sort_by == "value": dl = dl.sortedByValue() return dl
def test_referenceFieldVocab(self): dummy = makeContent(self.folder, portal_type="Refnode", id="dummy") test123 = makeContent(self.folder, portal_type="Refnode", id="Test123") test124 = makeContent(self.folder, portal_type="Refnode", id="Test124") test125 = makeContent(self.folder, portal_type="Refnode", id="Test125") field = dummy.Schema()['adds'] expected = DisplayList([ (test123.UID(), test123.getId()), (test124.UID(), test124.getId()), (test125.UID(), test125.getId()), (dummy.UID(), dummy.getId()), ]) got = field.Vocabulary(dummy) self.assertEqual(got, expected) # We should have the option of nothing field = field.copy() field.required = 0 field.multiValued = 0 expected = DisplayList([ (test123.UID(), test123.getId()), (test124.UID(), test124.getId()), (test125.UID(), test125.getId()), (dummy.UID(), dummy.getId()), ('', u'label_no_reference'), ]) self.assertEqual(field.Vocabulary(dummy), expected) field = field.copy() field.vocabulary_display_path_bound = 1 expected = DisplayList([ (test123.UID(), test123.getId()), (test124.UID(), test124.getId()), (test125.UID(), test125.getId()), (dummy.UID(), dummy.getId()), ('', u'label_no_reference'), ]) self.assertNotEqual(field.Vocabulary(dummy), expected) field.vocabulary_display_path_bound = -1 self.assertEqual(field.Vocabulary(dummy), expected)
def makeVocab(self, list): """Takes in a list (of keywords) and returns a Vocabulary without a translation domain. """ dl = DisplayList() for i in list: dl.add(i, i) return Vocabulary(dl, None, None)
def getSlotsVocab(self): vocab = DisplayList() vocab.add('', _(u'-- Unspecified --')) vocab.add('morning', _(u'Morning')) vocab.add('afternoon', _(u'Afternoon')) vocab.add('night', _(u'Evening')) vocab.add('allday', _(u'All day long')) return vocab
def getInstrumentLocations(self): bsc = getToolByName(self, 'bika_setup_catalog') items = [(c.UID, c.Title) for c in bsc(portal_type='InstrumentLocation', is_active=True) ] items.sort(lambda x, y: cmp(x[1], y[1])) items.insert(0, ('', t(_('None')))) return DisplayList(items)
def getReleasesVocab(self): """Get the releases available to the tracker as a DisplayList.""" catalog = getToolByName(self, 'portal_catalog') releases = catalog.searchResults( portal_type='PSCRelease', path='/'.join(self.getPhysicalPath()[:-1]), ) return DisplayList([(r.UID, r.getId) for r in releases])
def __init__(self, values): """ @values - simple list of values """ if isinstance(values, (StringType, UnicodeType)): # fallback for DGF <1.7 - this is not really working, just don't # fail if user does not use DGF < 1.7 values = [values] self._values = values self._values_dl = DisplayList(([(key, key) for key in values]))
def getEventTypeName(self, key): mp = getToolByName(self, 'portal_properties') event_types_pro = mp.monet_calendar_event_properties.event_types event_types = DisplayList() for etype in event_types_pro: event_types.add(etype, _(etype)) return event_types.getValue(key)
def listReflectoCacheRules(self): if not HAS_CACHESETUP: return [] pcs=getToolByName(self, CACHE_TOOL_ID, None) if pcs is None: return [] rules=[(rule.getId(), rule.Title()) for rule in pcs.getRules().objectValues("ContentCacheRule") if "ReflectoFile" in rule.getContentTypes()] rules.sort(key=lambda x: x[1]) vocab=DisplayList() vocab.add("", "Default browser caching") vocab+=DisplayList(rules) return vocab
def listMeetingEvents(self): config = self.config() allEvents = config.listMeetingEvents() # On an archive site, there may be no transition defined on a meeting. if not allEvents.keys(): return DisplayList() selectedEvents = config.getMailMeetingEvents() res = [] # Here, I could only keep transitions for which the user has the # permission to View the meeting at its end state. But in most cases, # meeting-related events can be seen by everyone. for event in selectedEvents: eventValue = allEvents.getValue(event) if not eventValue: continue res.append((event, eventValue)) return DisplayList(tuple(res))
def test_factory_vocabulary(self): dummy = self.makeDummy() field = dummy.Schema().fields()[0] # Default self.assertEqual(field.Vocabulary(dummy), DisplayList()) expected = DisplayList([('value1', 'title1'), ('v2', 't2')]) # # Vocabulary factory field.vocabulary = () field.vocabulary_factory = 'archetypes.tests.dummyvocab' getSiteManager().registerUtility(component=DummyVocabFactory, name='archetypes.tests.dummyvocab') self.assertEqual(field.Vocabulary(dummy), expected) getSiteManager().unregisterUtility(component=DummyVocabFactory, name='archetypes.tests.dummyvocab')
def getDisplayList(self, instance): """getDisplayList """ voc_fact = queryUtility(IVocabularyFactory, OrganisationsVocabulary) items = [(t.value, t.title or t.token) for t in voc_fact(instance)] items.insert(0, ('', '')) vocabulary = DisplayList(items) return vocabulary
def available_assignees(self): """Get the tracker assignees. """ # get vocab from issue context = aq_inner(self.context) if not self.memship.checkPermission(permissions.ModifyIssueAssignment, context): return DisplayList() return possibleAssignees(context)
def test_translate_empty(self): vocab = DisplayList((('one', 'One'), ('two', 'Two'), )) utilsView = getMultiAdapter((self.portal, self.portal.REQUEST), name='at_utils') self.assertEqual(utilsView.translate(vocab, value=''), u'') self.assertEqual(utilsView.translate(vocab, value=None), u'') self.assertEqual(utilsView.translate(vocab, value=[]), u'') self.assertEqual(utilsView.translate(vocab, value=()), u'') self.assertEqual(utilsView.translate(vocab, value=set()), u'')
def getLabContacts(self): bsc = getToolByName(self, 'bika_setup_catalog') # fallback - all Lab Contacts pairs = [] for contact in bsc(portal_type='LabContact', inactive_state='active', sort_on='sortable_title'): pairs.append((contact.UID, contact.Title)) return DisplayList(pairs)
def available_managers(self): """Get the tracker managers. """ # get vocab from issue context = aq_inner(self.context) if not self.memship.checkPermission( permissions.ModifyIssueAssignment, context): return DisplayList() return context.getManagersVocab()
def available_releases(self): """Get the releases from the project. """ # get vocab from issue context = aq_inner(self.context) if not self.memship.checkPermission( permissions.ModifyIssueTargetRelease, context): return DisplayList() return possibleTargetReleases(context)
def getMetadataDisplay(self, enabled=True): """ Return DisplayList of Metadata and their friendly names """ if enabled: meta_names = self.getAllMetadata(True) else: meta_names = self.getAllMetadata() meta_dict = self.topic_metadata meta = [meta_dict[i] for i in meta_names] field_list = [(f.index, f.friendlyName or f.index) for f in meta] return DisplayList(field_list)