Various fixes for GEP21 and locality

* narweb and webcal works again
* proxy filters work
* locality upgrade in repository
* fix progress on upgrade



svn: r16074
This commit is contained in:
Benny Malengier 2010-10-28 19:56:46 +00:00
parent 60d95d6be7
commit 5084294a1e
10 changed files with 51 additions and 51 deletions

View File

@ -343,7 +343,7 @@ class DbReadBase(object):
"""
raise NotImplementedError
def get_name_group_mapping(self, name):
def get_name_group_mapping(self, surname):
"""
Return the default grouping name for a surname.
"""

View File

@ -745,11 +745,11 @@ class DbBsddbRead(DbReadBase, Callback):
return self.__get_obj_from_gramps_id(val, self.tag_trans, Tag,
self.tag_map)
def get_name_group_mapping(self, name):
def get_name_group_mapping(self, surname):
"""
Return the default grouping name for a surname.
"""
return unicode(self.name_group.get(str(name), name))
return unicode(self.name_group.get(str(surname), surname))
def get_name_group_keys(self):
"""

View File

@ -111,7 +111,7 @@ def gramps_upgrade_15(self):
with BSDDBTxn(self.env, self.person_map) as txn:
txn.put(str(handle), new_person)
self.update(length)
self.update()
#surname is now different, remove secondary index with names
_db = db.DB(self.env)
try:
@ -183,7 +183,7 @@ def gramps_upgrade_15(self):
# ---------------------------------
# Modify Place
# ---------------------------------
# Remove the old marker field.
# Remove the old marker field, set new locality.
for handle in self.place_map.keys():
place = self.place_map[handle]
new_place = list(place)
@ -211,11 +211,12 @@ def gramps_upgrade_15(self):
# ---------------------------------
# Modify Repository
# ---------------------------------
# Remove the old marker field.
# Remove the old marker field, set new locality.
for handle in self.repository_map.keys():
repository = self.repository_map[handle]
new_repository = list(repository)
new_repository = new_repository[:7] + new_repository[8:]
new_repository[5] = [convert_address(addr) for addr in new_repository[5]]
new_repository = tuple(new_repository)
with BSDDBTxn(self.env, self.repository_map) as txn:
txn.put(str(handle), new_repository)

View File

@ -147,6 +147,13 @@ def _raw_primary_surname(raw_surn_data_list):
return ' '.join(result.split())
return ''
def _raw_primary_surname_only(raw_surn_data_list):
"""method for the 'm' symbol: primary surname"""
for raw_surn_data in raw_surn_data_list:
if raw_surn_data[_PRIMARY_IN_LIST]:
return raw_surn_data[_SURNAME_IN_LIST]
return ''
def _raw_patro_surname(raw_surn_data_list):
"""method for the 'y' symbol: patronymic surname"""
for raw_surn_data in raw_surn_data_list:
@ -763,28 +770,27 @@ def fn(%s):
return pn.group_as
sv = pn.sort_as
if sv == Name.DEF:
return db.get_name_group_mapping(pn.get_primary_surname())
return db.get_name_group_mapping(pn.get_primary_surname().get_surname())
elif sv == Name.LNFN:
return db.get_name_group_mapping(pn.get_surname())
return pn.get_surname()
elif sv == Name.FN:
return db.get_name_group_mapping(pn.first_name)
return pn.first_name
else:
return db.get_name_group_mapping(pn.get_primary_surname())
return db.get_name_group_mapping(pn.get_primary_surname().get_surname())
def name_grouping_data(self, db, pn):
if pn[_GROUP]:
return pn[_GROUP]
sv = pn[_SORT]
if sv == Name.DEF:
return db.get_name_group_mapping(_raw_primary_surname(
return db.get_name_group_mapping(_raw_primary_surname_only(
pn[_SURNAME_LIST]))
elif sv == Name.LNFN:
return db.get_name_group_mapping(_raw_full_surname(
pn[_SURNAME_LIST]))
return _raw_full_surname(pn[_SURNAME_LIST])
elif sv == Name.FN:
return db.get_name_group_mapping(pn[_FIRSTNAME])
return pn[_FIRSTNAME]
else:
return db.get_name_group_mapping(_raw_primary_surname(
return db.get_name_group_mapping(_raw_primary_surname_only(
pn[_SURNAME_LIST]))
displayer = NameDisplay()

View File

@ -37,7 +37,7 @@ from itertools import ifilter
#
#-------------------------------------------------------------------------
from proxybase import ProxyDbBase
from gen.lib import Date, Person, Name
from gen.lib import Date, Person, Name, Surname
from Utils import probably_alive
import config
@ -261,7 +261,6 @@ class LivingProxyDb(ProxyDbBase):
new_name.set_group_as(old_name.get_group_as())
new_name.set_sort_as(old_name.get_sort_as())
new_name.set_display_as(old_name.get_display_as())
new_name.set_surname_prefix(old_name.get_surname_prefix())
new_name.set_type(old_name.get_type())
if self.mode == self.MODE_INCLUDE_LAST_NAME_ONLY:
new_name.set_first_name(config.get('preferences.private-given-text'))
@ -269,8 +268,10 @@ class LivingProxyDb(ProxyDbBase):
new_name.set_first_name(old_name.get_first_name())
new_name.set_suffix(old_name.get_suffix())
new_name.set_title(old_name.get_title())
new_name.set_patronymic(old_name.get_patronymic())
new_name.set_surname(old_name.get_surname())
surnlst = []
for surn in name.get_surname_list():
surnlst.append(Surname(source=surn))
new_name.set_surname_list(surnlst)
new_name.set_privacy(old_name.get_privacy())
new_person.set_primary_name(new_name)

View File

@ -39,7 +39,7 @@ from gen.ggettext import gettext as _
#-------------------------------------------------------------------------
from gen.lib import (MediaRef, SourceRef, Attribute, Address, EventRef,
Person, Name, Source, RepoRef, MediaObject, Place, Event,
Family, ChildRef, Repository, LdsOrd)
Family, ChildRef, Repository, LdsOrd, Surname)
from proxybase import ProxyDbBase
class PrivateProxyDb(ProxyDbBase):
@ -644,14 +644,14 @@ def sanitize_name(db, name):
new_name.set_sort_as(name.get_sort_as())
new_name.set_display_as(name.get_display_as())
new_name.set_call_name(name.get_call_name())
new_name.set_surname_prefix(name.get_surname_prefix())
new_name.set_nick_name(name.get_nick_name())
new_name.set_family_nick_name(name.get_family_nick_name())
new_name.set_type(name.get_type())
new_name.set_first_name(name.get_first_name())
new_name.set_patronymic(name.get_patronymic())
new_name.set_surname(name.get_surname())
new_name.set_suffix(name.get_suffix())
new_name.set_title(name.get_title())
new_name.set_date_object(name.get_date_object())
new_name.set_surname_list(name.get_surname_list())
copy_source_ref_list(db, name, new_name)
copy_notes(db, name, new_name)
@ -756,7 +756,10 @@ def sanitize_person(db, person):
if (name and name.get_privacy()) or (person and person.get_privacy()):
# Do this so a person always has a primary name of some sort.
name = Name()
name.set_surname(_('Private'))
surn = Surname()
surn.set_surname(_('Private'))
name.set_surname_list([surn])
name.set_primary_surname()
else:
name = sanitize_name(db, name)
new_person.set_primary_name(name)

View File

@ -502,11 +502,11 @@ class ProxyDbBase(DbReadBase):
return self.gfilter(self.include_tag,
self.db.get_tag_from_name(val))
def get_name_group_mapping(self, name):
def get_name_group_mapping(self, surname):
"""
Return the default grouping name for a surname
"""
return self.db.get_name_group_mapping(name)
return self.db.get_name_group_mapping(surname)
def has_name_group_key(self, name):
"""

View File

@ -128,7 +128,7 @@ class EditName(EditSecondary):
self.original_group_as = self.obj.get_group_as()
self.original_group_set = not (self.original_group_as == '')
srn = self.obj.get_surname()
srn = self.obj.get_primary_surname().get_surname()
self._get_global_grouping(srn)
self.group_over = self.top.get_object('group_over')
@ -176,7 +176,7 @@ class EditName(EditSecondary):
if self.global_group_set :
self.group_as.force_value(self.global_group_as)
else :
self.group_as.force_value(self.obj.get_surname())
self.group_as.force_value(self.obj.get_primary_surname().get_surname())
format_list = [(name, number) for (number, name,fmt_str,act)
in name_displayer.get_name_format(also_default=True)]
@ -305,7 +305,7 @@ class EditName(EditSecondary):
"""Callback if surname changes on GUI
If overwrite is not set, we change the group name too
"""
name = self.obj.get_surname()
name = self.obj.get_primary_surname().get_surname()
if not self.group_over.get_active():
self.group_as.force_value(name)
#new surname, so perhaps now a different grouping?
@ -338,7 +338,7 @@ class EditName(EditSecondary):
if self.global_group_set:
self.group_as.set_text(self.global_group_as)
else:
surname = self.obj.get_surname()
surname = self.obj.get_primary_surname().get_surname()
self.group_as.set_text(surname)
def save(self, *obj):
@ -354,7 +354,7 @@ class EditName(EditSecondary):
6/ local set, global set --> set (set to global if possible)
"""
closeit = True
surname = self.obj.get_surname()
surname = self.obj.get_primary_surname().get_surname()
group_as= self.obj.get_group_as()
grouping_active = self.group_over.get_active()

View File

@ -6799,7 +6799,8 @@ def sort_people(db, handle_list):
if primary_name.group_as:
surname = primary_name.group_as
else:
surname = db.get_name_group_mapping(primary_name.surname)
surname = db.get_name_group_mapping(
primary_name.get_primary_surname().get_surname())
sortnames[person_handle] = _nd.sort_string(primary_name)
sname_sub[surname].append(person_handle)
@ -6844,18 +6845,11 @@ def sort_event_types(db, event_types, event_handle_list):
# Modified _get_regular_surname from WebCal.py to get prefix, first name, and suffix
def _get_short_name(gender, name):
""" Will get prefix and suffix for all people passed through it """
""" Will get suffix for all people passed through it """
short_name = name.get_first_name()
prefix = name.get_surname_prefix()
if prefix:
short_name = prefix + " " + short_name
if gender == gen.lib.Person.FEMALE:
return short_name
else:
suffix = name.get_suffix()
if suffix:
short_name = short_name + ", " + suffix
suffix = name.get_suffix()
if suffix:
short_name = short_name + ", " + suffix
return short_name
def __get_person_keyname(db, handle):

View File

@ -1616,15 +1616,10 @@ def _get_regular_surname(sex, name):
"""
Returns a name string built from the components of the Name instance.
"""
surname = name.get_surname()
prefix = name.get_surname_prefix()
if prefix:
surname = prefix + " " + surname
if sex is not gen.lib.Person.FEMALE:
suffix = name.get_suffix()
if suffix:
surname = surname + ", " + suffix
suffix = name.get_suffix()
if suffix:
surname = surname + ", " + suffix
return surname
# Simple utility list to convert Gramps day-of-week numbering