Esempio n. 1
0
    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())
Esempio n. 2
0
 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.'))
Esempio n. 3
0
    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())
Esempio n. 4
0
 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.'))
Esempio n. 5
0
 def has_data(self):
     return bool(LocalGroup.find().count())
Esempio n. 6
0
 def has_data(self):
     return bool(LocalGroup.find().count())