3183: Make Reorder GRAMPS ID plugin fix IDs not following specified formats
svn: r13119
This commit is contained in:
parent
442eaf9923
commit
def01f8e4f
@ -46,6 +46,9 @@ from gen.plug import PluginManager
|
||||
|
||||
_findint = re.compile('^[^\d]*(\d+)[^\d]*')
|
||||
|
||||
# gets the number specified in a format string, example: %04d returns '04'
|
||||
_parseformat = re.compile('.*%(\d+)[^\d]+')
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Actual tool
|
||||
@ -163,6 +166,8 @@ class ReorderIds(Tool.BatchTool):
|
||||
dups = []
|
||||
newids = {}
|
||||
|
||||
formatmatch = _parseformat.match(prefix)
|
||||
|
||||
for handle in table.keys():
|
||||
if self.uistate:
|
||||
self.progress.step()
|
||||
@ -183,7 +188,16 @@ class ReorderIds(Tool.BatchTool):
|
||||
|
||||
try:
|
||||
index = match.groups()[0]
|
||||
newgramps_id = prefix % int(index)
|
||||
|
||||
if formatmatch:
|
||||
if int(index) > int("9" * int(formatmatch.groups()[0])):
|
||||
newgramps_id = find_next_id()
|
||||
else:
|
||||
newgramps_id = prefix % int(index)
|
||||
else:
|
||||
# the prefix does not contain a number after %, eg I%d
|
||||
newgramps_id = prefix % int(index)
|
||||
|
||||
if newgramps_id == gramps_id:
|
||||
newids[newgramps_id] = gramps_id
|
||||
elif find_from_id(newgramps_id) is not None:
|
||||
|
Loading…
Reference in New Issue
Block a user