ajouter le type de recherche all
This commit is contained in:
parent
be0ec1c3ab
commit
38fdb21f91
3
TODO.md
3
TODO.md
|
@ -39,4 +39,7 @@
|
|||
* pldef2 est un attribut global à tous les liens du groupe #1 dans le profil PROFILE
|
||||
* lvar est spécifique au lien MyModule --> dh
|
||||
|
||||
* faire des outils d'interrogation base de données pour pouvoir commencer à
|
||||
exploiter le code
|
||||
|
||||
-*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary
|
|
@ -302,6 +302,8 @@ class GenericLink(object):
|
|||
for value in values:
|
||||
self.modify_attr(name, value, method)
|
||||
|
||||
def invalid_match(self, match):
|
||||
return ValueError("%s: invalid match type")
|
||||
def match_profiles(self, profiles):
|
||||
"""Tester si ce lien est dans l'un des profils spécifiés
|
||||
|
||||
|
@ -322,31 +324,60 @@ class GenericLink(object):
|
|||
for profile in profiles:
|
||||
if profile == self._profile: return True
|
||||
return False
|
||||
def match_fos(self, fos, match='any'):
|
||||
def match_fos(self, fos, match='any', reverse=False):
|
||||
"""Tester si ce lien a l'un des objets spécifiés dans ses objets de départ (avec
|
||||
match=='any' qui est la valeur par défaut)
|
||||
"""
|
||||
if not isseq(fos): fos = [fos]
|
||||
for fo in fos:
|
||||
if fo in self._fos: return True
|
||||
return False
|
||||
def match_tos(self, tos, match='any'):
|
||||
if reverse: Yes, No = False, True
|
||||
else: Yes, No = True, False
|
||||
if match == 'any':
|
||||
for fo in fos:
|
||||
if fo in self._fos: return Yes
|
||||
return No
|
||||
elif match == 'all':
|
||||
for fo in fos:
|
||||
if fo not in self._fos: return No
|
||||
return Yes
|
||||
else:
|
||||
raise self.invalid_match(match)
|
||||
def match_tos(self, tos, match='any', reverse=False):
|
||||
"""Tester si ce lien a l'un des objets spécifiés dans ses objets d'arrivée (avec
|
||||
match=='any' qui est la valeur par défaut)
|
||||
"""
|
||||
if not isseq(tos): tos = [tos]
|
||||
for to in tos:
|
||||
if to in self._tos: return True
|
||||
return False
|
||||
def match_attrs(self, attrs, match='any'):
|
||||
if reverse: Yes, No = False, True
|
||||
else: Yes, No = True, False
|
||||
if match == 'any':
|
||||
for to in tos:
|
||||
if to in self._tos: return Yes
|
||||
return No
|
||||
elif match == 'all':
|
||||
for to in tos:
|
||||
if to not in self._tos: return No
|
||||
return Yes
|
||||
else:
|
||||
raise self.invalid_match(match)
|
||||
def match_attrs(self, attrs, match='any', reverse=False):
|
||||
"""Tester si ce lien a un des attributs correspondant aux valeurs spécifiées
|
||||
(avec match=='any' qui est la valeur par défaut)
|
||||
"""
|
||||
for name, value in attrs.items():
|
||||
values = self._attrs.get(name, None)
|
||||
if values is not None:
|
||||
if value in values: return True
|
||||
return False
|
||||
if reverse: Yes, No = False, True
|
||||
else: Yes, No = True, False
|
||||
if match == 'any':
|
||||
for name, value in attrs.items():
|
||||
values = self._attrs.get(name, None)
|
||||
if values is None: continue
|
||||
if value in values: return Yes
|
||||
return No
|
||||
elif match == 'all':
|
||||
for name, value in attrs.items():
|
||||
values = self._attrs.get(name, None)
|
||||
if values is None: return No
|
||||
if value not in values: return No
|
||||
return Yes
|
||||
else:
|
||||
raise self.invalid_match(match)
|
||||
|
||||
def _dump_profile(self, indent):
|
||||
profile = self.profile or 'ALL'
|
||||
|
|
Loading…
Reference in New Issue