aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tagit/apps/desktop.py23
-rw-r--r--tagit/apps/port_data.py141
2 files changed, 21 insertions, 143 deletions
diff --git a/tagit/apps/desktop.py b/tagit/apps/desktop.py
index b64bf7e..913f922 100644
--- a/tagit/apps/desktop.py
+++ b/tagit/apps/desktop.py
@@ -27,6 +27,26 @@ __all__: typing.Sequence[str] = (
## code ##
+def load_data_hook(cfg, store):
+ """Data loading hook to circumvent non-persistent storage."""
+ import pickle
+ import os
+ # fetch data_hook config flags
+ schema_path = cfg('session', 'data_hook', 'schema')
+ triples_path = cfg('session', 'data_hook', 'triples')
+ # load data if present
+ if os.path.exists(schema_path) and os.path.exists(triples_path):
+ with open(schema_path, 'rb') as ifile:
+ store._backend._schema = pickle.load(ifile)
+ with open(triples_path, 'rb') as ifile:
+ for triple in pickle.load(ifile):
+ store._backend._graph.add(triple)
+ return store
+
+config.declare(('session', 'data_hook', 'schema'), config.String(), '')
+config.declare(('session', 'data_hook', 'triples'), config.String(), '')
+
+
class TagitApp(App):
"""The tagit main application."""
@@ -41,9 +61,8 @@ class TagitApp(App):
from tagit.config.loader import load_settings, TAGITRC
cfg = load_settings(TAGITRC, 0)
-
# open BSFS storage
- store = bsfs.Open(cfg('session', 'bsfs'))
+ store = load_data_hook(cfg, bsfs.Open(cfg('session', 'bsfs'))) # FIXME: mb/port: data hook
# check storage schema
with open(resource_find('required_schema.nt'), 'rt') as ifile:
required_schema = bsfs.schema.from_string(ifile.read())
diff --git a/tagit/apps/port_data.py b/tagit/apps/port_data.py
deleted file mode 100644
index 2e4161b..0000000
--- a/tagit/apps/port_data.py
+++ /dev/null
@@ -1,141 +0,0 @@
-
-# standard imports
-import os
-import pickle
-
-# tagit imports
-from tagit.utils import ns
-from tagit.utils.bsfs import URI
-
-# load data
-def add_port_data(store):
- with open(os.path.join(os.path.dirname(__file__), 'port-schema.pkl'), 'rb') as ifile:
- store._backend._schema = pickle.load(ifile)
- with open(os.path.join(os.path.dirname(__file__), 'port-data.pkl'), 'rb') as ifile:
- for triple in pickle.load(ifile):
- store._backend._graph.add(triple)
-
-
-def add_port_data2(store):
- # tags
- t_hello = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#hello')) \
- .set(ns.bst.label, 'hello')
- t_world = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#world')) \
- .set(ns.bst.label, 'world')
- t_foobar = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#foobar')) \
- .set(ns.bst.label, 'foobar')
-
- # entities
- n0 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#01')) \
- .set(ns.bse.filename, 'textfile.t') \
- .set(ns.bse.filesize, 100) \
- .set(ns.bse.tag, t_hello) \
- .set(ns.bse.tag, t_foobar) \
- .set(ns.bse.latitude, 47.374444) \
- .set(ns.bse.longitude, 8.541111)
- n1 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#02')) \
- .set(ns.bse.filename, 'document.pdf') \
- .set(ns.bse.filesize, 200) \
- .set(ns.bse.tag, t_world) \
- .set(ns.bse.tag, t_foobar)
- n2 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#03')) \
- .set(ns.bse.filename, 'document.odt') \
- .set(ns.bse.filesize, 300) \
- .set(ns.bse.tag, t_world)
- n3 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#04')) \
- .set(ns.bse.filename, 'image.jpg') \
- .set(ns.bse.comment, 'some image') \
- .set(ns.bse.tag, t_hello) \
- .set(ns.bse.tag, t_foobar)
- n4 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#05')) \
- .set(ns.bse.filename, 'image.png') \
- .set(ns.bse.comment, 'another image') \
- .set(ns.bse.tag, t_hello)
-
- # groups
- grp = store.node(ns.bsn.Group, URI('http://example.com/me/group#1234'))
- grp.set(ns.bsg.represented_by, n0)
- n0.set(ns.bse.group, grp)
- n1.set(ns.bse.group, grp)
- n3.set(ns.bse.group, grp)
-
- # previews
- base = os.path.join(os.path.dirname(__file__), 'port-data')
- n0.set(ns.bse.preview,
- store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent01_w100_h100')) \
- .set(ns.bsp.width, 100) \
- .set(ns.bsp.height, 100) \
- .set(ns.bsp.orientation, 1) \
- .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w100_h100.jpg'), 'rb').read())
- )
- n0.set(ns.bse.preview,
- store.node(ns.bsn.Preview, str('http://example.com/me/preview#ent01_w400_h200')) \
- .set(ns.bsp.width, 200) \
- .set(ns.bsp.height, 400) \
- .set(ns.bsp.orientation, 1) \
- .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h200.jpg'), 'rb').read())
- )
- n0.set(ns.bse.preview,
- store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent01_w400_h400')) \
- .set(ns.bsp.width, 400) \
- .set(ns.bsp.height, 400) \
- .set(ns.bsp.orientation, 1) \
- .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h400.jpg'), 'rb').read())
- )
- n1.set(ns.bse.preview,
- store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent02_w100_h100')) \
- .set(ns.bsp.width, 100) \
- .set(ns.bsp.height, 100) \
- .set(ns.bsp.orientation, 1) \
- .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w100_h100.jpg'), 'rb').read())
- )
- n1.set(ns.bse.preview,
- store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent02_w400_h200')) \
- .set(ns.bsp.width, 200) \
- .set(ns.bsp.height, 400) \
- .set(ns.bsp.orientation, 1) \
- .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w400_h200.jpg'), 'rb').read())
- )
- n2.set(ns.bse.preview,
- store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent03_w100_h100')) \
- .set(ns.bsp.width, 100) \
- .set(ns.bsp.height, 100) \
- .set(ns.bsp.orientation, 1) \
- .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w100_h100.jpg'), 'rb').read())
- )
- n2.set(ns.bse.preview,
- store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent03_w400_h200')) \
- .set(ns.bsp.width, 200) \
- .set(ns.bsp.height, 400) \
- .set(ns.bsp.orientation, 1) \
- .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w400_h200.jpg'), 'rb').read())
- )
- n3.set(ns.bse.preview,
- store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent04_w100_h100')) \
- .set(ns.bsp.width, 100) \
- .set(ns.bsp.height, 100) \
- .set(ns.bsp.orientation, 1) \
- .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w100_h100.png'), 'rb').read())
- )
- n3.set(ns.bse.preview,
- store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent04_w400_h200')) \
- .set(ns.bsp.width, 200) \
- .set(ns.bsp.height, 400) \
- .set(ns.bsp.orientation, 1) \
- .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w400_h200.png'), 'rb').read())
- )
- n4.set(ns.bse.preview,
- store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent05_w100_h100')) \
- .set(ns.bsp.width, 100) \
- .set(ns.bsp.height, 100) \
- .set(ns.bsp.orientation, 1) \
- .set(ns.bsp.asset, open(os.path.join(base, 'ent05_w100_h100.jpg'), 'rb').read())
- )
- n4.set(ns.bse.preview,
- store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent05_w400_h200')) \
- .set(ns.bsp.width, 200) \
- .set(ns.bsp.height, 400) \
- .set(ns.bsp.orientation, 1) \
- .set(ns.bsp.asset, open(os.path.join(base, 'ent05_w400_h200.jpg'), 'rb').read())
- )
-