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,26 +892,12 @@ 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
|
|
||||||
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
|
return tagname
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue