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 |         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): |     def _uncache(self): | ||||||
|         self.photodb.caches['tag'].remove(self.id) |         self.photodb.caches['tag'].remove(self.id) | ||||||
|         self._cached_qualified_name = None |         self._cached_qualified_name = None | ||||||
|  |  | ||||||
|  | @ -892,27 +892,13 @@ class PDBTagMixin: | ||||||
|         return tag |         return tag | ||||||
| 
 | 
 | ||||||
|     def normalize_tagname(self, tagname): |     def normalize_tagname(self, tagname): | ||||||
|         ''' |         tagname = objects.Tag.normalize_name( | ||||||
|         Tag names can only consist of characters defined in the config. |             tagname, | ||||||
|         The given tagname is lowercased, gets its spaces and hyphens |             valid_chars=self.config['tag']['valid_chars'], | ||||||
|         replaced by underscores, and is stripped of any not-whitelisted |             min_length=self.config['tag']['min_length'], | ||||||
|         characters. |             max_length=self.config['tag']['max_length'], | ||||||
|         ''' |         ) | ||||||
|         original_tagname = tagname |         return 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 |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class PDBUserMixin: | class PDBUserMixin: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue