@classmethod def _get_choice_specs(cls): revs = flaskg.storage.search(cls._query, **cls._query_args) label_getter = cls.properties['label_getter'] choices = [(rev.meta[ITEMID], label_getter(rev)) for rev in revs] if cls.optional: choices.append(('', cls.properties['empty_label'])) return choices def __init__(self, value=Unspecified, **kw): super(Reference, self).__init__(value, **kw) # NOTE There is a slight chance of two instances of the same Reference # subclass having different set of choices when the storage changes # between their initialization. choice_specs = self._get_choice_specs() self.properties['choice_specs'] = choice_specs self.valid_values = [id_ for id_, name in choice_specs] class BackReference(ReadonlyItemLinkList): """ Back references built from Whoosh query. """ def set(self, query, **query_args): revs = flaskg.storage.search(query, **query_args) super(BackReference, self).set([rev.meta[NAME] for rev in revs]) MultiSelect = Array.with_properties(widget=WIDGET_MULTI_SELECT)
return cls @classmethod def _get_choice_specs(cls): revs = flaskg.storage.search(cls._query, **cls._query_args) choices = [(rev.meta[ITEMID], rev.meta[NAME][0]) for rev in revs] if cls.optional: choices.append((u'', cls.properties['empty_label'])) return choices def __init__(self, value=Unspecified, **kw): super(Reference, self).__init__(value, **kw) # NOTE There is a slight chance of two instances of the same Reference # subclass having different set of choices when the storage changes # between their initialization. choice_specs = self._get_choice_specs() self.properties['choice_specs'] = choice_specs self.valid_values = [id_ for id_, name in choice_specs] class BackReference(ReadonlyItemLinkList): """ Back references built from Whoosh query. """ def set(self, query, **query_args): revs = flaskg.storage.search(query, **query_args) super(BackReference, self).set([rev.meta[NAME] for rev in revs]) MultiSelect = Array.with_properties(widget=WIDGET_MULTI_SELECT)