5690: Can create multiple events with same Gramps-ID

This commit is contained in:
Paul Franklin 2014-05-11 10:34:45 -07:00
parent 788ff005cb
commit cb1b04ac3c
6 changed files with 59 additions and 7 deletions

View File

@ -28,14 +28,14 @@
# Python modules
#
#-------------------------------------------------------------------------
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
#-------------------------------------------------------------------------
#
# gramps modules
#
#-------------------------------------------------------------------------
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
from gramps.gen.lib import EventType, NoteType
from gramps.gen.db import DbTxn
from ..glade import Glade
@ -245,6 +245,9 @@ class EditEventRef(EditReference):
def ok_clicked(self, obj):
if self.check_for_duplicate_id('Event'):
return
if self.source.handle:
with DbTxn(_("Modify Event"), self.db) as trans:
self.commit_event(self.source,trans)

View File

@ -29,8 +29,6 @@
# Standard python modules
#
#-------------------------------------------------------------------------
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.sgettext
#-------------------------------------------------------------------------
#
@ -634,6 +632,10 @@ class EditMediaRef(EditReference):
self._setup_notebook_tabs(notebook_ref)
def save(self,*obj):
if self.check_for_duplicate_id('Media'):
return
#first save primary object
if self.source.handle:
with DbTxn(_("Edit Media Object (%s)") %

View File

@ -3,6 +3,7 @@
#
# Copyright (C) 2000-2006 Donald N. Allingham
# 2009 Gary Burton
# Copyright (C) 2014 Paul Franklin
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -33,6 +34,9 @@ from gi.repository import Gtk
# gramps modules
#
#-------------------------------------------------------------------------
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
from ..dialog import ErrorDialog
from ..managedwindow import ManagedWindow
from .displaytabs import GrampsTab
from gramps.gen.config import config
@ -255,3 +259,43 @@ class EditReference(ManagedWindow, DbGUIElement):
of the main interface, not of the displaytabs.
"""
pass
def check_for_duplicate_id(self, type):
"""
check to see if the gramps ID (if any) already exists
type : the gramps primary object type, a string
returns : True if the gramps ID already exists, else False
N.B. the various strings, string variables, and titles existed already
"""
new_id = self.source.get_gramps_id()
if new_id:
old_primary = self.db.get_from_name_and_gramps_id(type, new_id)
if old_primary:
if type == 'Event':
msg1 = _("Cannot save event. ID already exists.")
description = old_primary.get_description()
elif type == 'Media':
msg1 = _("Cannot save media object. ID already exists.")
description = old_primary.get_description()
elif type == 'Repository':
msg1 = _("Cannot save repository. ID already exists.")
description = old_primary.get_name()
if description:
msg2 = _("You have attempted to use the existing Gramps "
"ID with value %(id)s. This value is already "
"used by '%(prim_object)s'. Please enter a "
"different ID or leave blank to get the next "
"available ID value.") % {
'id' : new_id, 'prim_object' : description }
else:
msg2 = _("You have attempted to use the existing Gramps "
"ID with value %(id)s. This value is already "
"used. Please enter a "
"different ID or leave blank to get the next "
"available ID value.") % {
'id' : new_id}
ErrorDialog(msg1, msg2)
return True
return False

View File

@ -26,14 +26,14 @@
# Python modules
#
#-------------------------------------------------------------------------
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
#-------------------------------------------------------------------------
#
# gramps modules
#
#-------------------------------------------------------------------------
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
from gramps.gen.lib import NoteType
from gramps.gen.db import DbTxn
@ -191,6 +191,9 @@ class EditRepoRef(EditReference):
def ok_clicked(self, obj):
if self.check_for_duplicate_id('Repository'):
return
if self.source.handle:
with DbTxn(_("Modify Repository"), self.db) as trans:
self.db.commit_repository(self.source,trans)

View File

@ -375,6 +375,7 @@ gramps/gui/editors/editperson.py
gramps/gui/editors/editpersonref.py
gramps/gui/editors/editplace.py
gramps/gui/editors/editprimary.py
gramps/gui/editors/editreference.py
gramps/gui/editors/editreporef.py
gramps/gui/editors/editrepository.py
gramps/gui/editors/editsource.py

View File

@ -281,7 +281,6 @@ gramps/gui/glade/catalog/grampswidgets.py
# gui/editors - the GUI editors package
#
gramps/gui/editors/__init__.py
gramps/gui/editors/editreference.py
gramps/gui/editors/editsecondary.py
#
# gui/editors/displaytabs - the GUI display tabs package