Webapp: added databases directory; changed semantics of save_cache;
working signals, for the most part
This commit is contained in:
parent
03b78a0884
commit
89e20b90b7
0
gramps/webapp/databases/__init__.py
Normal file
0
gramps/webapp/databases/__init__.py
Normal file
34
gramps/webapp/databases/database1/__init__.py
Normal file
34
gramps/webapp/databases/database1/__init__.py
Normal file
@ -0,0 +1,34 @@
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2012 Douglas S. Blank <doug.blank@gmail.com>
|
||||
#
|
||||
# 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()
|
||||
|
150
gramps/webapp/databases/database1/default_settings.py
Normal file
150
gramps/webapp/databases/database1/default_settings.py
Normal file
@ -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 = {}
|
BIN
gramps/webapp/databases/database1/sqlite.db
Normal file
BIN
gramps/webapp/databases/database1/sqlite.db
Normal file
Binary file not shown.
34
gramps/webapp/databases/database2/__init__.py
Normal file
34
gramps/webapp/databases/database2/__init__.py
Normal file
@ -0,0 +1,34 @@
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2012 Douglas S. Blank <doug.blank@gmail.com>
|
||||
#
|
||||
# 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()
|
||||
|
150
gramps/webapp/databases/database2/default_settings.py
Normal file
150
gramps/webapp/databases/database2/default_settings.py
Normal file
@ -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 = {}
|
BIN
gramps/webapp/databases/database2/sqlite.db
Normal file
BIN
gramps/webapp/databases/database2/sqlite.db
Normal file
Binary file not shown.
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user