diff --git a/gramps/webapp/databases/__init__.py b/gramps/webapp/databases/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/gramps/webapp/databases/database1/__init__.py b/gramps/webapp/databases/database1/__init__.py new file mode 100644 index 000000000..015757638 --- /dev/null +++ b/gramps/webapp/databases/database1/__init__.py @@ -0,0 +1,34 @@ +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2012 Douglas S. Blank +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# + +from django.conf import settings +from . import default_settings +try: + settings.configure(default_settings) +except RuntimeError: + # already configured; ignore + pass + +from gramps.webapp.dbdjango import DbDjango +database = DbDjango() + +# For Django 1.6: +import django +django.setup() + diff --git a/gramps/webapp/databases/database1/default_settings.py b/gramps/webapp/databases/database1/default_settings.py new file mode 100644 index 000000000..fae3ffd06 --- /dev/null +++ b/gramps/webapp/databases/database1/default_settings.py @@ -0,0 +1,150 @@ +import os +from gramps.gen.const import DATA_DIR + +WEB_DIR = os.path.dirname(os.path.realpath(__file__)) + +DEBUG = True +TEMPLATE_DEBUG = DEBUG + +INTERNAL_IPS = ('127.0.0.1',) + +ADMINS = ( + ('admin', 'your_email@domain.com'), +) + +MANAGERS = ADMINS +DATABASE_ROUTERS = [] +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(WEB_DIR, 'sqlite.db'), + } +} +DATABASE_ENGINE = 'sqlite3' +DATABASE_NAME = os.path.join(WEB_DIR, 'sqlite.db') +DATABASE_USER = '' +DATABASE_PASSWORD = '' +DATABASE_HOST = '' +DATABASE_PORT = '' +TIME_ZONE = 'America/New_York' +LANGUAGE_CODE = 'en-us' +SITE_ID = 1 +USE_I18N = True +MEDIA_ROOT = '' +MEDIA_URL = '' +ADMIN_MEDIA_PREFIX = '/gramps-media/' +SECRET_KEY = 'zd@%vslj5sqhx94_8)0hsx*rk9tj3^ly$x+^*tq4bggr&uh$ac' + +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.Loader', # 1.4 + 'django.template.loaders.app_directories.Loader', # 1.4 + #'django.template.loaders.filesystem.load_template_source', + #'django.template.loaders.app_directories.load_template_source', +) + +MIDDLEWARE_CLASSES = ( + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', +# 'debug_toolbar.middleware.DebugToolbarMiddleware', +) + +ROOT_URLCONF = 'gramps.webapp.urls' +STATIC_URL = '/static/' # 1.4 + +TEMPLATE_DIRS = ( + # Use absolute paths, not relative paths. + os.path.join(DATA_DIR, "templates"), +) + +TEMPLATE_CONTEXT_PROCESSORS = ( + "django.contrib.auth.context_processors.auth", # 1.4 + "django.contrib.messages.context_processors.messages", # 1.4 +# "django.core.context_processors.auth", +# "django.core.context_processors.debug", + "django.core.context_processors.i18n", + "django.core.context_processors.media", + "gramps.webapp.grampsdb.views.context_processor", + "gramps.webapp.context.messages", +) + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.staticfiles', + 'django.contrib.messages', # 1.4 + 'django.contrib.sites', + 'django.contrib.admin', + 'gramps.webapp.grampsdb', +# 'django_extensions', +# 'debug_toolbar', +) + +DEBUG_TOOLBAR_PANELS = ( + 'debug_toolbar.panels.version.VersionDebugPanel', + 'debug_toolbar.panels.timer.TimerDebugPanel', + 'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel', + 'debug_toolbar.panels.headers.HeaderDebugPanel', + 'debug_toolbar.panels.request_vars.RequestVarsDebugPanel', + 'debug_toolbar.panels.template.TemplateDebugPanel', + 'debug_toolbar.panels.sql.SQLDebugPanel', + 'debug_toolbar.panels.signals.SignalDebugPanel', + 'debug_toolbar.panels.logger.LoggingPanel', + ) + +def custom_show_toolbar(request): + return True # Always show toolbar, for example purposes only. + +DEBUG_TOOLBAR_CONFIG = { + 'INTERCEPT_REDIRECTS': False, +# 'SHOW_TOOLBAR_CALLBACK': custom_show_toolbar, +# 'EXTRA_SIGNALS': ['myproject.signals.MySignal'], + 'HIDE_DJANGO_SQL': False, + } + +AUTH_PROFILE_MODULE = "grampsdb.Profile" + +# Had to add these to use settings.configure(): +DATABASE_OPTIONS = '' +URL_VALIDATOR_USER_AGENT = '' +DEFAULT_INDEX_TABLESPACE = '' +DEFAULT_TABLESPACE = '' +CACHE_BACKEND = 'locmem://' +TRANSACTIONS_MANAGED = False +LOCALE_PATHS = tuple() + +# Changes for Django 1.3: +USE_L10N = True +FORMAT_MODULE_PATH = "" +## End Changes for Django 1.3 + +# Changes for Django 1.4: +USE_TZ = False +## End Changes for Django 1.4 + +# Changes for Django 1.5: +CACHES = { + 'default': { + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', + } + } +DEFAULT_CHARSET = "utf-8" +## End Changes for Django 1.5 + +## Changes for Django 1.5.4: +LOGGING_CONFIG = None +AUTH_USER_MODEL = 'auth.User' +## End Changes for Django 1.5.4 + +LOGIN_URL = "/login/" +LOGOUT_URL = "/logout" +LOGIN_REDIRECT_URL = "/" + +## Changes for Django 1.6: +LOGGING = None + +## Changes for Django 1.7.1: +ABSOLUTE_URL_OVERRIDES = {} diff --git a/gramps/webapp/databases/database1/sqlite.db b/gramps/webapp/databases/database1/sqlite.db new file mode 100644 index 000000000..84fc95bea Binary files /dev/null and b/gramps/webapp/databases/database1/sqlite.db differ diff --git a/gramps/webapp/databases/database2/__init__.py b/gramps/webapp/databases/database2/__init__.py new file mode 100644 index 000000000..015757638 --- /dev/null +++ b/gramps/webapp/databases/database2/__init__.py @@ -0,0 +1,34 @@ +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2012 Douglas S. Blank +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# + +from django.conf import settings +from . import default_settings +try: + settings.configure(default_settings) +except RuntimeError: + # already configured; ignore + pass + +from gramps.webapp.dbdjango import DbDjango +database = DbDjango() + +# For Django 1.6: +import django +django.setup() + diff --git a/gramps/webapp/databases/database2/default_settings.py b/gramps/webapp/databases/database2/default_settings.py new file mode 100644 index 000000000..fae3ffd06 --- /dev/null +++ b/gramps/webapp/databases/database2/default_settings.py @@ -0,0 +1,150 @@ +import os +from gramps.gen.const import DATA_DIR + +WEB_DIR = os.path.dirname(os.path.realpath(__file__)) + +DEBUG = True +TEMPLATE_DEBUG = DEBUG + +INTERNAL_IPS = ('127.0.0.1',) + +ADMINS = ( + ('admin', 'your_email@domain.com'), +) + +MANAGERS = ADMINS +DATABASE_ROUTERS = [] +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(WEB_DIR, 'sqlite.db'), + } +} +DATABASE_ENGINE = 'sqlite3' +DATABASE_NAME = os.path.join(WEB_DIR, 'sqlite.db') +DATABASE_USER = '' +DATABASE_PASSWORD = '' +DATABASE_HOST = '' +DATABASE_PORT = '' +TIME_ZONE = 'America/New_York' +LANGUAGE_CODE = 'en-us' +SITE_ID = 1 +USE_I18N = True +MEDIA_ROOT = '' +MEDIA_URL = '' +ADMIN_MEDIA_PREFIX = '/gramps-media/' +SECRET_KEY = 'zd@%vslj5sqhx94_8)0hsx*rk9tj3^ly$x+^*tq4bggr&uh$ac' + +TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.Loader', # 1.4 + 'django.template.loaders.app_directories.Loader', # 1.4 + #'django.template.loaders.filesystem.load_template_source', + #'django.template.loaders.app_directories.load_template_source', +) + +MIDDLEWARE_CLASSES = ( + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', +# 'debug_toolbar.middleware.DebugToolbarMiddleware', +) + +ROOT_URLCONF = 'gramps.webapp.urls' +STATIC_URL = '/static/' # 1.4 + +TEMPLATE_DIRS = ( + # Use absolute paths, not relative paths. + os.path.join(DATA_DIR, "templates"), +) + +TEMPLATE_CONTEXT_PROCESSORS = ( + "django.contrib.auth.context_processors.auth", # 1.4 + "django.contrib.messages.context_processors.messages", # 1.4 +# "django.core.context_processors.auth", +# "django.core.context_processors.debug", + "django.core.context_processors.i18n", + "django.core.context_processors.media", + "gramps.webapp.grampsdb.views.context_processor", + "gramps.webapp.context.messages", +) + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.staticfiles', + 'django.contrib.messages', # 1.4 + 'django.contrib.sites', + 'django.contrib.admin', + 'gramps.webapp.grampsdb', +# 'django_extensions', +# 'debug_toolbar', +) + +DEBUG_TOOLBAR_PANELS = ( + 'debug_toolbar.panels.version.VersionDebugPanel', + 'debug_toolbar.panels.timer.TimerDebugPanel', + 'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel', + 'debug_toolbar.panels.headers.HeaderDebugPanel', + 'debug_toolbar.panels.request_vars.RequestVarsDebugPanel', + 'debug_toolbar.panels.template.TemplateDebugPanel', + 'debug_toolbar.panels.sql.SQLDebugPanel', + 'debug_toolbar.panels.signals.SignalDebugPanel', + 'debug_toolbar.panels.logger.LoggingPanel', + ) + +def custom_show_toolbar(request): + return True # Always show toolbar, for example purposes only. + +DEBUG_TOOLBAR_CONFIG = { + 'INTERCEPT_REDIRECTS': False, +# 'SHOW_TOOLBAR_CALLBACK': custom_show_toolbar, +# 'EXTRA_SIGNALS': ['myproject.signals.MySignal'], + 'HIDE_DJANGO_SQL': False, + } + +AUTH_PROFILE_MODULE = "grampsdb.Profile" + +# Had to add these to use settings.configure(): +DATABASE_OPTIONS = '' +URL_VALIDATOR_USER_AGENT = '' +DEFAULT_INDEX_TABLESPACE = '' +DEFAULT_TABLESPACE = '' +CACHE_BACKEND = 'locmem://' +TRANSACTIONS_MANAGED = False +LOCALE_PATHS = tuple() + +# Changes for Django 1.3: +USE_L10N = True +FORMAT_MODULE_PATH = "" +## End Changes for Django 1.3 + +# Changes for Django 1.4: +USE_TZ = False +## End Changes for Django 1.4 + +# Changes for Django 1.5: +CACHES = { + 'default': { + 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', + } + } +DEFAULT_CHARSET = "utf-8" +## End Changes for Django 1.5 + +## Changes for Django 1.5.4: +LOGGING_CONFIG = None +AUTH_USER_MODEL = 'auth.User' +## End Changes for Django 1.5.4 + +LOGIN_URL = "/login/" +LOGOUT_URL = "/logout" +LOGIN_REDIRECT_URL = "/" + +## Changes for Django 1.6: +LOGGING = None + +## Changes for Django 1.7.1: +ABSOLUTE_URL_OVERRIDES = {} diff --git a/gramps/webapp/databases/database2/sqlite.db b/gramps/webapp/databases/database2/sqlite.db new file mode 100644 index 000000000..84fc95bea Binary files /dev/null and b/gramps/webapp/databases/database2/sqlite.db differ diff --git a/gramps/webapp/dbdjango.py b/gramps/webapp/dbdjango.py index 41251963f..9ec183e4d 100644 --- a/gramps/webapp/dbdjango.py +++ b/gramps/webapp/dbdjango.py @@ -21,12 +21,20 @@ #------------------------------------------------------------------------ # -# Gramps Modules +# Python Modules # #------------------------------------------------------------------------ import sys import time import re +import base64 +import pickle + +#------------------------------------------------------------------------ +# +# Gramps Modules +# +#------------------------------------------------------------------------ import gramps from gramps.gen.lib import (Person, Family, Event, Place, Repository, Citation, Source, Note, MediaObject, Tag, @@ -424,6 +432,16 @@ class DbDjango(DbWriteBase, DbReadBase): def request_rebuild(self): # caches are ok, but let's compute public's self.dji.update_publics() + self.emit('person-rebuild') + self.emit('family-rebuild') + self.emit('place-rebuild') + self.emit('source-rebuild') + self.emit('citation-rebuild') + self.emit('media-rebuild') + self.emit('event-rebuild') + self.emit('repository-rebuild') + self.emit('note-rebuild') + self.emit('tag-rebuild') def get_undodb(self): return None @@ -1318,7 +1336,7 @@ class DbDjango(DbWriteBase, DbReadBase): if not person.gramps_id and set_gid: person.gramps_id = self.find_next_person_gramps_id() self.commit_person(person, trans) - self.signal("person-add", [person.handle]) + self.emit("person-add", [person.handle]) return person.handle def add_family(self, family, trans, set_gid=True): @@ -1327,7 +1345,7 @@ class DbDjango(DbWriteBase, DbReadBase): if not family.gramps_id and set_gid: family.gramps_id = self.find_next_family_gramps_id() self.commit_family(family, trans) - self.signal("family-add", [family.handle]) + self.emit("family-add", [family.handle]) return family.handle def add_citation(self, citation, trans, set_gid=True): @@ -1336,7 +1354,7 @@ class DbDjango(DbWriteBase, DbReadBase): if not citation.gramps_id and set_gid: citation.gramps_id = self.find_next_citation_gramps_id() self.commit_citation(citation, trans) - self.signal("citation-add", [citation.handle]) + self.emit("citation-add", [citation.handle]) return citation.handle def add_source(self, source, trans, set_gid=True): @@ -1345,7 +1363,7 @@ class DbDjango(DbWriteBase, DbReadBase): if not source.gramps_id and set_gid: source.gramps_id = self.find_next_source_gramps_id() self.commit_source(source, trans) - self.signal("source-add", [source.handle]) + self.emit("source-add", [source.handle]) return source.handle def add_repository(self, repository, trans, set_gid=True): @@ -1354,7 +1372,7 @@ class DbDjango(DbWriteBase, DbReadBase): if not repository.gramps_id and set_gid: repository.gramps_id = self.find_next_repository_gramps_id() self.commit_repository(repository, trans) - self.signal("repository-add", [repository.handle]) + self.emit("repository-add", [repository.handle]) return repository.handle def add_note(self, note, trans, set_gid=True): @@ -1363,7 +1381,7 @@ class DbDjango(DbWriteBase, DbReadBase): if not note.gramps_id and set_gid: note.gramps_id = self.find_next_note_gramps_id() self.commit_note(note, trans) - self.signal("note-add", [note.handle]) + self.emit("note-add", [note.handle]) return note.handle def add_place(self, place, trans, set_gid=True): @@ -1407,63 +1425,117 @@ class DbDjango(DbWriteBase, DbReadBase): self.import_cache[person.handle] = person else: print("WARNING: haven't written logic to update") - self.signal("person-update", [person.handle]) + raw = person.serialize() + dj_person = self.dji.Person.filter(handle=person.handle)[0] + dj_person.cache = str(base64.encodebytes(pickle.dumps(raw)), "utf-8") + dj_person.save(save_cache=False) # don't generate the cache from Django objects + # FIXME: propagate changes to rest of Django object from cache + # How? Maybe delete and re-add? + self.emit("person-update", [person.handle]) def commit_family(self, family, trans, change_time=None): if self.use_import_cache: self.import_cache[family.handle] = family else: print("WARNING: haven't written logic to update") - self.signal("family-update", [family.handle]) + raw = family.serialize() + dj_obj = self.dji.Family.filter(handle=family.handle)[0] + dj_obj.cache = str(base64.encodebytes(pickle.dumps(raw)), "utf-8") + dj_obj.save(save_cache=False) # don't generate the cache from Django objects + # FIXME: propagate changes to rest of Django object from cache + # How? Maybe delete and re-add? + self.emit("family-update", [family.handle]) def commit_citation(self, citation, trans, change_time=None): if self.use_import_cache: self.import_cache[citation.handle] = citation else: print("WARNING: haven't written logic to update") - self.signal("citation-update", [citation.handle]) + raw = citation.serialize() + dj_obj = self.dji.Citation.filter(handle=citation.handle)[0] + dj_obj.cache = str(base64.encodebytes(pickle.dumps(raw)), "utf-8") + dj_obj.save(save_cache=False) # don't generate the cache from Django objects + # FIXME: propagate changes to rest of Django object from cache + # How? Maybe delete and re-add? + self.emit("citation-update", [citation.handle]) def commit_source(self, source, trans, change_time=None): if self.use_import_cache: self.import_cache[source.handle] = source else: print("WARNING: haven't written logic to update") - self.signal("source-update", [source.handle]) + raw = source.serialize() + dj_obj = self.dji.Source.filter(handle=source.handle)[0] + dj_obj.cache = str(base64.encodebytes(pickle.dumps(raw)), "utf-8") + dj_obj.save(save_cache=False) # don't generate the cache from Django objects + # FIXME: propagate changes to rest of Django object from cache + # How? Maybe delete and re-add? + self.emit("source-update", [source.handle]) def commit_repository(self, repository, trans, change_time=None): if self.use_import_cache: self.import_cache[repository.handle] = repository else: print("WARNING: haven't written logic to update") - self.signal("repository-update", [repository.handle]) + raw = repository.serialize() + dj_obj = self.dji.Repository.filter(handle=repository.handle)[0] + dj_obj.cache = str(base64.encodebytes(pickle.dumps(raw)), "utf-8") + dj_obj.save(save_cache=False) # don't generate the cache from Django objects + # FIXME: propagate changes to rest of Django object from cache + # How? Maybe delete and re-add? + self.emit("repository-update", [repository.handle]) def commit_note(self, note, trans, change_time=None): if self.use_import_cache: self.import_cache[note.handle] = note else: print("WARNING: haven't written logic to update") - self.signal("note-update", [note.handle]) + raw = note.serialize() + dj_obj = self.dji.Note.filter(handle=note.handle)[0] + dj_obj.cache = str(base64.encodebytes(pickle.dumps(raw)), "utf-8") + dj_obj.save(save_cache=False) # don't generate the cache from Django objects + # FIXME: propagate changes to rest of Django object from cache + # How? Maybe delete and re-add? + self.emit("note-update", [note.handle]) def commit_place(self, place, trans, change_time=None): if self.use_import_cache: self.import_cache[place.handle] = place else: print("WARNING: haven't written logic to update") - self.signal("place-update", [place.handle]) + raw = place.serialize() + dj_obj = self.dji.Place.filter(handle=place.handle)[0] + dj_obj.cache = str(base64.encodebytes(pickle.dumps(raw)), "utf-8") + dj_obj.save(save_cache=False) # don't generate the cache from Django objects + # FIXME: propagate changes to rest of Django object from cache + # How? Maybe delete and re-add? + self.emit("place-update", [place.handle]) def commit_event(self, event, trans, change_time=None): if self.use_import_cache: self.import_cache[event.handle] = event else: print("WARNING: haven't written logic to update") - self.signal("event-update", [event.handle]) + raw = event.serialize() + dj_obj = self.dji.Event.filter(handle=event.handle)[0] + dj_obj.cache = str(base64.encodebytes(pickle.dumps(raw)), "utf-8") + dj_obj.save(save_cache=False) # don't generate the cache from Django objects + # FIXME: propagate changes to rest of Django object from cache + # How? Maybe delete and re-add? + self.emit("event-update", [event.handle]) def commit_tag(self, tag, trans, change_time=None): if self.use_import_cache: self.import_cache[tag.handle] = tag else: print("WARNING: haven't written logic to update") - self.signal("tag-update", [tag.handle]) + raw = tag.serialize() + dj_obj = self.dji.Tag.filter(handle=tag.handle)[0] + dj_obj.cache = str(base64.encodebytes(pickle.dumps(raw)), "utf-8") + dj_obj.save(save_cache=False) # don't generate the cache from Django objects + # FIXME: propagate changes to rest of Django object from cache + # How? Maybe delete and re-add? + self.emit("tag-update", [tag.handle]) def commit_media_object(self, obj, transaction, change_time=None): """ @@ -1474,7 +1546,13 @@ class DbDjango(DbWriteBase, DbReadBase): self.import_cache[obj.handle] = obj else: print("WARNING: haven't written logic to update") - self.signal("media-update", [obj.handle]) + raw = obj.serialize() + dj_obj = self.dji.Media.filter(handle=obj.handle)[0] + dj_obj.cache = str(base64.encodebytes(pickle.dumps(raw)), "utf-8") + dj_obj.save(save_cache=False) # don't generate the cache from Django objects + # FIXME: propagate changes to rest of Django object from cache + # How? Maybe delete and re-add? + self.emit("media-update", [obj.handle]) def get_gramps_ids(self, obj_key): key2table = { @@ -1603,10 +1681,6 @@ class DbDjango(DbWriteBase, DbReadBase): return False def connect(self, signal, callback): - ## citation-add - ## citation-delete - ## citation-rebuild - ## citation-update #print("Adding signal: ", signal) if signal in self._signals: self._signals[signal].append(callback) @@ -1618,12 +1692,15 @@ class DbDjango(DbWriteBase, DbReadBase): if signal in self._signals: del self._signals[signal] - def signal(self, sig, items): + def emit(self, sig, items=None): #print("Firing signal: ", sig, items) if self._signals_enabled: if sig in self._signals: for callback in self._signals[sig]: - callback(items) + if items: + callback(items) + else: + callback() else: print("WARNING: no such signal: ", sig) @@ -1808,43 +1885,43 @@ class DbDjango(DbWriteBase, DbReadBase): # Removals: def remove_person(self, handle, txn): self.dji.Person.filter(handle=handle)[0].delete() - self.signal("person-delete", [handle]) + self.emit("person-delete", [handle]) def remove_source(self, handle, transaction): self.dji.Source.filter(handle=handle)[0].delete() - self.signal("source-delete", [handle]) + self.emit("source-delete", [handle]) def remove_citation(self, handle, transaction): self.dji.Citation.filter(handle=handle)[0].delete() - self.signal("citation-delete", [handle]) + self.emit("citation-delete", [handle]) def remove_event(self, handle, transaction): self.dji.Event.filter(handle=handle)[0].delete() - self.signal("event-delete", [handle]) + self.emit("event-delete", [handle]) def remove_object(self, handle, transaction): self.dji.Media.filter(handle=handle)[0].delete() - self.signal("media-delete", [handle]) + self.emit("media-delete", [handle]) def remove_place(self, handle, transaction): self.dji.Place.filter(handle=handle)[0].delete() - self.signal("place-delete", [handle]) + self.emit("place-delete", [handle]) def remove_family(self, handle, transaction): self.dji.Family.filter(handle=handle)[0].delete() - self.signal("family-delete", [handle]) + self.emit("family-delete", [handle]) def remove_repository(self, handle, transaction): self.dji.Repository.filter(handle=handle)[0].delete() - self.signal("repository-delete", [handle]) + self.emit("repository-delete", [handle]) def remove_note(self, handle, transaction): self.dji.Note.filter(handle=handle)[0].delete() - self.signal("note-delete", [handle]) + self.emit("note-delete", [handle]) def remove_tag(self, handle, transaction): self.dji.Tag.filter(handle=handle)[0].delete() - self.signal("tag-delete", [handle]) + self.emit("tag-delete", [handle]) def remove_from_surname_list(self, person): ## FIXME diff --git a/gramps/webapp/grampsdb/models.py b/gramps/webapp/grampsdb/models.py index 7dd668068..273aacb11 100644 --- a/gramps/webapp/grampsdb/models.py +++ b/gramps/webapp/grampsdb/models.py @@ -455,9 +455,7 @@ class Tag(models.Model): if "save_cache" in kwargs: save_cache = kwargs["save_cache"] del kwargs["save_cache"] - if not save_cache: - self.cache = "" - else: + if save_cache: self.cache = self.make_cache() models.Model.save(self, *args, **kwargs) # save to db @@ -545,9 +543,7 @@ class PrimaryObject(models.Model): if "save_cache" in kwargs: save_cache = kwargs["save_cache"] del kwargs["save_cache"] - if not save_cache: - self.cache = "" - else: + if save_cache: self.cache = self.make_cache() models.Model.save(self, *args, **kwargs) # save to db