Improved rules for multiple surnmames
svn: r9954
This commit is contained in:
parent
9d11c72ca2
commit
ebf01966b1
@ -51,6 +51,21 @@ import ManagedWindow
|
|||||||
from QuestionDialog import OkDialog
|
from QuestionDialog import OkDialog
|
||||||
from PluginUtils import Tool, register_tool
|
from PluginUtils import Tool, register_tool
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# constants
|
||||||
|
#
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
|
prefix_list = [
|
||||||
|
"de", "van", "von", "di", "le", "du", "dela", "della",
|
||||||
|
"des", "vande", "ten", "da", "af", "den", "das", "dello",
|
||||||
|
"del", "en", "ein", "el" "et", "les", "lo", "los", "un",
|
||||||
|
"um", "una", "uno",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# ChangeNames
|
# ChangeNames
|
||||||
@ -75,8 +90,50 @@ class ChangeNames(Tool.BatchTool, ManagedWindow.ManagedWindow):
|
|||||||
self.name_list = []
|
self.name_list = []
|
||||||
|
|
||||||
for name in self.db.get_surname_list():
|
for name in self.db.get_surname_list():
|
||||||
if name != name.capitalize():
|
name.strip()
|
||||||
self.name_list.append(name)
|
namesplitSP= name.split()
|
||||||
|
lSP = len(namesplitSP)
|
||||||
|
namesplitHY= name.split('-')
|
||||||
|
lHY = len(namesplitHY)
|
||||||
|
if lSP == 1 and lHY == 1:
|
||||||
|
if name != name.capitalize():
|
||||||
|
# Single surname without hyphen(s)
|
||||||
|
self.name_list.append(name)
|
||||||
|
#if lSP == 1 and lHY > 1:
|
||||||
|
#print "LSP==1",name,name.capitalize()
|
||||||
|
#if name != name.capitalize():
|
||||||
|
# Single surname with hyphen(s)
|
||||||
|
#self.name_list.append(name)
|
||||||
|
if lSP>1 and lHY == 1:
|
||||||
|
# more than one string in surname but no hyphen
|
||||||
|
# check if first string is in prefix_list, if so test for cap in rest
|
||||||
|
s1 = 0
|
||||||
|
if namesplitSP[0].lower() in prefix_list:
|
||||||
|
s1 = 1
|
||||||
|
for x in range(len(namesplitSP)-s1):
|
||||||
|
# check if any subsurname is not cap
|
||||||
|
notcap = False
|
||||||
|
if namesplitSP[s1+x] != namesplitSP[s1+x].capitalize():
|
||||||
|
notcap = True
|
||||||
|
break
|
||||||
|
if notcap:
|
||||||
|
# Multiple surnames possibly after prefix
|
||||||
|
self.name_list.append(name)
|
||||||
|
if lHY > 1:
|
||||||
|
# more than one string in surname but hyphen(s) exists
|
||||||
|
# check if first string is in prefix_list, if so test for cap
|
||||||
|
if namesplitSP[0].lower() in prefix_list:
|
||||||
|
namesplitHY[0] = namesplitHY[0].replace(namesplitSP[0],'').strip()
|
||||||
|
for x in range(len(namesplitHY)):
|
||||||
|
# check if any subsurname is not cap
|
||||||
|
notcap = False
|
||||||
|
if namesplitHY[x] != namesplitHY[x].capitalize():
|
||||||
|
notcap = True
|
||||||
|
break
|
||||||
|
if notcap:
|
||||||
|
# Multiple surnames possibly after frefix
|
||||||
|
self.name_list.append(name)
|
||||||
|
|
||||||
if uistate:
|
if uistate:
|
||||||
self.progress.step()
|
self.progress.step()
|
||||||
|
|
||||||
@ -88,6 +145,34 @@ class ChangeNames(Tool.BatchTool, ManagedWindow.ManagedWindow):
|
|||||||
OkDialog(_('No modifications made'),
|
OkDialog(_('No modifications made'),
|
||||||
_("No capitalization changes were detected."))
|
_("No capitalization changes were detected."))
|
||||||
|
|
||||||
|
def name_cap(self,name):
|
||||||
|
name.strip()
|
||||||
|
namesplitSP = name.split()
|
||||||
|
lSP = len(namesplitSP)
|
||||||
|
lHY = len(name.split('-'))
|
||||||
|
namesep = ' '
|
||||||
|
if lHY > 1:
|
||||||
|
namesep = '-'
|
||||||
|
namesplitSP = name.replace(namesep,' ').split()
|
||||||
|
lSP= len(namesplitSP)
|
||||||
|
if lSP == 1 and lHY == 1:
|
||||||
|
#if name != name.capitalize():
|
||||||
|
# Single surname without space(s) or hyphen(s), normal case
|
||||||
|
return name.capitalize()
|
||||||
|
else:
|
||||||
|
# more than one string in surname but no hyphen
|
||||||
|
# check if first string is in prefix_list, if so CAP the rest
|
||||||
|
# Names like (von) Kohl(-)Brandt
|
||||||
|
result = ""
|
||||||
|
s1 = 0
|
||||||
|
if namesplitSP[0].lower() in prefix_list:
|
||||||
|
s1 = 1
|
||||||
|
result = namesplitSP[0].lower()+ ' '
|
||||||
|
for x in range(lSP-s1):
|
||||||
|
# CAP all subsurnames
|
||||||
|
result = result + namesplitSP[s1+x].capitalize() + namesep
|
||||||
|
return result[:-1]
|
||||||
|
|
||||||
def display(self):
|
def display(self):
|
||||||
|
|
||||||
base = os.path.dirname(__file__)
|
base = os.path.dirname(__file__)
|
||||||
@ -128,7 +213,8 @@ class ChangeNames(Tool.BatchTool, ManagedWindow.ManagedWindow):
|
|||||||
handle = self.model.append()
|
handle = self.model.append()
|
||||||
self.model.set_value(handle,0,True)
|
self.model.set_value(handle,0,True)
|
||||||
self.model.set_value(handle,1,name)
|
self.model.set_value(handle,1,name)
|
||||||
self.model.set_value(handle,2,name.capitalize())
|
namecap = self.name_cap(name)
|
||||||
|
self.model.set_value(handle,2,namecap)
|
||||||
self.iter_list.append(handle)
|
self.iter_list.append(handle)
|
||||||
self.progress.step()
|
self.progress.step()
|
||||||
self.progress.close()
|
self.progress.close()
|
||||||
@ -161,7 +247,8 @@ class ChangeNames(Tool.BatchTool, ManagedWindow.ManagedWindow):
|
|||||||
sname = name.get_surname()
|
sname = name.get_surname()
|
||||||
if sname in changelist:
|
if sname in changelist:
|
||||||
change = True
|
change = True
|
||||||
name.set_surname(sname.capitalize())
|
sname = self.name_cap(sname)
|
||||||
|
name.set_surname(sname)
|
||||||
if change:
|
if change:
|
||||||
self.db.commit_person(person,self.trans)
|
self.db.commit_person(person,self.trans)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user