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
|
* pldef2 est un attribut global à tous les liens du groupe #1 dans le profil PROFILE
|
||||||
* lvar est spécifique au lien MyModule --> dh
|
* 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
|
-*- 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:
|
for value in values:
|
||||||
self.modify_attr(name, value, method)
|
self.modify_attr(name, value, method)
|
||||||
|
|
||||||
|
def invalid_match(self, match):
|
||||||
|
return ValueError("%s: invalid match type")
|
||||||
def match_profiles(self, profiles):
|
def match_profiles(self, profiles):
|
||||||
"""Tester si ce lien est dans l'un des profils spécifiés
|
"""Tester si ce lien est dans l'un des profils spécifiés
|
||||||
|
|
||||||
|
@ -322,31 +324,60 @@ class GenericLink(object):
|
||||||
for profile in profiles:
|
for profile in profiles:
|
||||||
if profile == self._profile: return True
|
if profile == self._profile: return True
|
||||||
return False
|
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
|
"""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)
|
match=='any' qui est la valeur par défaut)
|
||||||
"""
|
"""
|
||||||
if not isseq(fos): fos = [fos]
|
if not isseq(fos): fos = [fos]
|
||||||
for fo in fos:
|
if reverse: Yes, No = False, True
|
||||||
if fo in self._fos: return True
|
else: Yes, No = True, False
|
||||||
return False
|
if match == 'any':
|
||||||
def match_tos(self, tos, 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
|
"""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)
|
match=='any' qui est la valeur par défaut)
|
||||||
"""
|
"""
|
||||||
if not isseq(tos): tos = [tos]
|
if not isseq(tos): tos = [tos]
|
||||||
for to in tos:
|
if reverse: Yes, No = False, True
|
||||||
if to in self._tos: return True
|
else: Yes, No = True, False
|
||||||
return False
|
if match == 'any':
|
||||||
def match_attrs(self, attrs, 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
|
"""Tester si ce lien a un des attributs correspondant aux valeurs spécifiées
|
||||||
(avec match=='any' qui est la valeur par défaut)
|
(avec match=='any' qui est la valeur par défaut)
|
||||||
"""
|
"""
|
||||||
for name, value in attrs.items():
|
if reverse: Yes, No = False, True
|
||||||
values = self._attrs.get(name, None)
|
else: Yes, No = True, False
|
||||||
if values is not None:
|
if match == 'any':
|
||||||
if value in values: return True
|
for name, value in attrs.items():
|
||||||
return False
|
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):
|
def _dump_profile(self, indent):
|
||||||
profile = self.profile or 'ALL'
|
profile = self.profile or 'ALL'
|
||||||
|
|
Loading…
Reference in New Issue