5690: Can create multiple events with same Gramps-ID
This commit is contained in:
parent
14eb354a4b
commit
ce9753fe99
@ -118,6 +118,7 @@ src/gui/editors/editperson.py
|
||||
src/gui/editors/editpersonref.py
|
||||
src/gui/editors/editplace.py
|
||||
src/gui/editors/editprimary.py
|
||||
src/gui/editors/editreference.py
|
||||
src/gui/editors/editreporef.py
|
||||
src/gui/editors/editrepository.py
|
||||
src/gui/editors/editsource.py
|
||||
|
@ -220,7 +220,6 @@ src/gui/user.py
|
||||
|
||||
# gui/editors - the GUI editors package
|
||||
src/gui/editors/__init__.py
|
||||
src/gui/editors/editreference.py
|
||||
src/gui/editors/editsecondary.py
|
||||
|
||||
# gui/editors/displaytabs - the GUI display tabs package
|
||||
|
@ -244,6 +244,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)
|
||||
|
@ -655,6 +655,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,8 @@ import gtk
|
||||
# gramps modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gen.ggettext import gettext as _
|
||||
from QuestionDialog import ErrorDialog
|
||||
import ManagedWindow
|
||||
from displaytabs import GrampsTab
|
||||
import config
|
||||
@ -255,3 +258,43 @@ class EditReference(ManagedWindow.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
|
||||
|
@ -190,6 +190,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)
|
||||
|
Loading…
Reference in New Issue
Block a user