Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(case_cache): make case cache optional
Browse files Browse the repository at this point in the history
philloooo committed Sep 15, 2017
1 parent e1ef2b2 commit 4e97374
Showing 2 changed files with 27 additions and 18 deletions.
39 changes: 21 additions & 18 deletions gdcdatamodel/models/__init__.py
Original file line number Diff line number Diff line change
@@ -46,6 +46,7 @@
from .caching import (
NOT_RELATED_CASES_CATEGORIES,
RELATED_CASES_LINK_NAME,
CACHE_CASES,
cache_related_cases_on_update,
cache_related_cases_on_insert,
cache_related_cases_on_delete,
@@ -340,15 +341,16 @@ def node_id(self, value):

# _related_cases_from_parents: get ids of related cases from this
# nodes's sysan
attributes['_related_cases_from_cache'] = property(
related_cases_from_cache
)
if CACHE_CASES:
attributes['_related_cases_from_cache'] = property(
related_cases_from_cache
)

# _related_cases_from_parents: get ids of related cases from this
# nodes parents
attributes['_related_cases_from_parents'] = property(
related_cases_from_parents
)
# _related_cases_from_parents: get ids of related cases from this
# nodes parents
attributes['_related_cases_from_parents'] = property(
related_cases_from_parents
)

# Create the Node subclass!
cls = type(name, (Node,), dict(
@@ -460,17 +462,18 @@ def EdgeFactory(name, label, src_label, dst_label, src_dst_assoc,
_assigned_association_proxies[dst_label].add(dst_src_assoc)
_assigned_association_proxies[src_label].add(src_dst_assoc)

hooks_before_insert = Edge._session_hooks_before_insert + [
cache_related_cases_on_insert,
]

hooks_before_update = Edge._session_hooks_before_update + [
cache_related_cases_on_update,
]
hooks_before_insert = Edge._session_hooks_before_insert

hooks_before_update = Edge._session_hooks_before_update

hooks_before_delete = Edge._session_hooks_before_delete

if CACHE_CASES:
hooks_before_insert.append(cache_related_cases_on_insert)
hooks_before_update.append(cache_related_cases_on_update)
hooks_before_delete.append(cache_related_cases_on_delete)

hooks_before_delete = Edge._session_hooks_before_delete + [
cache_related_cases_on_delete,
]

cls = type(name, (Edge,), {
'__label__': label,
@@ -569,7 +572,7 @@ def load_edges():
or src_cls.label in ['annotation']
)

if not cache_case:
if not cache_case or not CACHE_CASES:
continue

link = {
6 changes: 6 additions & 0 deletions gdcdatamodel/models/caching.py
Original file line number Diff line number Diff line change
@@ -17,9 +17,15 @@

from cdisutils.log import get_logger
from psqlgraph import Node, Edge
from gdcdictionary import gdcdictionary

logger = get_logger('gdcdatamodel')

CACHE_CASES = (
True if not hasattr(gdcdictionary, 'settings')
else gdcdictionary.settings.get('enable_case_cache', True)
)

#: This variable contains the link name for the case shortcut
#: association proxy
RELATED_CASES_LINK_NAME = '_related_cases'

0 comments on commit 4e97374

Please sign in to comment.