5690: Can create multiple events with same Gramps-ID
This commit is contained in:
parent
788ff005cb
commit
cb1b04ac3c
@ -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)
|
||||
|
@ -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)") %
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user