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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user