5690: Can create multiple events with same Gramps-ID
This commit is contained in:
		| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user