def search(cls, name, exact=False, providers=None): """Search for groups. :param name: The group name to search for. :param exact: If only exact matches should be found (much faster) :param providers: ``None`` to search in all providers and local groups. May be a set specifying providers to search in. For local groups, the ``'indico'`` provider name may be used. """ name = name.strip() if not name: return [] if exact: criterion = db.func.lower(LocalGroup.name) == name.lower() else: criterion = db.func.lower(LocalGroup.name).contains(name.lower()) result = set() if (providers is None or 'indico' in providers) and config.LOCAL_GROUPS: result |= {g.proxy for g in LocalGroup.find(criterion)} result |= { GroupProxy(g.name, g.provider.name, _group=g) for g in multipass.search_groups( name, providers=providers, exact=exact) } return sorted(result, key=lambda x: x.name.lower())
def validate_name(self, field): query = LocalGroup.find( db.func.lower(LocalGroup.name) == field.data.lower()) if self.group: query = query.filter(LocalGroup.id != self.group.id) if query.count(): raise ValidationError(_('A group with this name already exists.'))
def search(cls, name, exact=False, providers=None): """Searches for groups :param name: The group name to search for. :param exact: If only exact matches should be found (much faster) :param providers: ``None`` to search in all providers and local groups. May be a set specifying providers to search in. For local groups, the ``'indico'`` provider name may be used. """ name = name.strip() if not name: return [] if exact: criterion = db.func.lower(LocalGroup.name) == name.lower() else: criterion = db.func.lower(LocalGroup.name).contains(name.lower()) result = set() if providers is None or "indico" in providers: result |= {g.proxy for g in LocalGroup.find(criterion)} result |= { GroupProxy(g.name, g.provider.name, _group=g) for g in multipass.search_groups(name, providers=providers, exact=exact) } return sorted(result, key=lambda x: x.name.lower())
def validate_name(self, field): query = LocalGroup.find(db.func.lower(LocalGroup.name) == field.data.lower()) if self.group: query = query.filter(LocalGroup.id != self.group.id) if query.count(): raise ValidationError(_('A group with this name already exists.'))
def has_data(self): return bool(LocalGroup.find().count())