Add Tag.normalize_name to be called by PDB.normalize_tagname.
This commit is contained in:
		
							parent
							
								
									bdec6cf4a3
								
							
						
					
					
						commit
						fec5eaf21e
					
				
					 2 changed files with 27 additions and 21 deletions
				
			
		|  | @ -1207,6 +1207,26 @@ class Tag(ObjectBase, GroupableMixin): | |||
| 
 | ||||
|         return description | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def normalize_name(name, valid_chars=None, min_length=None, max_length=None): | ||||
|         original_name = name | ||||
|         if valid_chars is None: | ||||
|             valid_chars = constants.DEFAULT_CONFIG['tag']['valid_chars'] | ||||
| 
 | ||||
|         name = name.lower() | ||||
|         name = name.replace('-', '_') | ||||
|         name = name.replace(' ', '_') | ||||
|         name = (c for c in name if c in valid_chars) | ||||
|         name = ''.join(name) | ||||
| 
 | ||||
|         if min_length is not None and len(name) < min_length: | ||||
|             raise exceptions.TagTooShort(original_name) | ||||
| 
 | ||||
|         if max_length is not None and len(name) > max_length: | ||||
|             raise exceptions.TagTooLong(name) | ||||
| 
 | ||||
|         return name | ||||
| 
 | ||||
|     def _uncache(self): | ||||
|         self.photodb.caches['tag'].remove(self.id) | ||||
|         self._cached_qualified_name = None | ||||
|  |  | |||
|  | @ -892,27 +892,13 @@ class PDBTagMixin: | |||
|         return tag | ||||
| 
 | ||||
|     def normalize_tagname(self, tagname): | ||||
|         ''' | ||||
|         Tag names can only consist of characters defined in the config. | ||||
|         The given tagname is lowercased, gets its spaces and hyphens | ||||
|         replaced by underscores, and is stripped of any not-whitelisted | ||||
|         characters. | ||||
|         ''' | ||||
|         original_tagname = tagname | ||||
|         tagname = tagname.lower() | ||||
|         tagname = tagname.replace('-', '_') | ||||
|         tagname = tagname.replace(' ', '_') | ||||
|         tagname = (c for c in tagname if c in self.config['tag']['valid_chars']) | ||||
|         tagname = ''.join(tagname) | ||||
| 
 | ||||
|         if len(tagname) < self.config['tag']['min_length']: | ||||
|             raise exceptions.TagTooShort(original_tagname) | ||||
| 
 | ||||
|         elif len(tagname) > self.config['tag']['max_length']: | ||||
|             raise exceptions.TagTooLong(tagname) | ||||
| 
 | ||||
|         else: | ||||
|             return tagname | ||||
|         tagname = objects.Tag.normalize_name( | ||||
|             tagname, | ||||
|             valid_chars=self.config['tag']['valid_chars'], | ||||
|             min_length=self.config['tag']['min_length'], | ||||
|             max_length=self.config['tag']['max_length'], | ||||
|         ) | ||||
|         return tagname | ||||
| 
 | ||||
| 
 | ||||
| class PDBUserMixin: | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue