diff options
| author | Alon Levy <alon@pobox.com> | 2015-08-15 17:58:57 +0300 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-08-15 18:04:45 +0300 |
| commit | 60533f89e72fe73d6b5cdd9fc39e6b0311512ea4 (patch) | |
| tree | 17f23d2247b4f9b08ae744d02f2bbc7ffbfb9382 /src/local/server-tools | |
| parent | dab4cb9df78d8b2f312d35c6da38f1e203a6aa93 (diff) | |
server-tools/rz_doc: add single doc creation (no merge)
Diffstat (limited to 'src/local/server-tools')
| -rw-r--r-- | src/local/server-tools/rz.py | 24 | ||||
| -rwxr-xr-x | src/local/server-tools/rz_doc.py | 47 |
2 files changed, 48 insertions, 23 deletions
diff --git a/src/local/server-tools/rz.py b/src/local/server-tools/rz.py index f23628ba..78def9ba 100644 --- a/src/local/server-tools/rz.py +++ b/src/local/server-tools/rz.py @@ -15,11 +15,11 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. -# hack to setup rhizi path - needs a proper install import sys import os +import time -# to work both from source dir and from deployment dir +# Hack to setup rhizi path - needs a proper install. path = None for postfix in [['..', 'bin'], ['..', '..', 'server'], ['..', '..', 'rhizi-server']]: candidate = os.path.join(*([os.path.dirname(__file__)] + postfix)) @@ -30,3 +30,23 @@ if None is path: print("must be run from one or two directories above server") raise SystemExit sys.path.append(path) + + +from rz_server import init_config, init_webapp +from rz_user_db import Fake_User_DB +from rz_kernel import RZ_Kernel +import db_controller as dbc + +class RZ(object): + def __init__(self, config_dir): + cfg = init_config(config_dir) + kernel = RZ_Kernel() + db_ctl = dbc.DB_Controller(cfg.db_base_url) + kernel.db_ctl = db_ctl + user_db = Fake_User_DB() + webapp = init_webapp(cfg, kernel) + webapp.user_db = user_db + kernel.db_op_factory = webapp # assist kernel with DB initialization + kernel.start() + time.sleep(0.1) + self.kernel = kernel diff --git a/src/local/server-tools/rz_doc.py b/src/local/server-tools/rz_doc.py index fb9eb7a6..eade48fb 100755 --- a/src/local/server-tools/rz_doc.py +++ b/src/local/server-tools/rz_doc.py @@ -23,22 +23,31 @@ import os import uuid import time +#### must be before any rhizi import #### try: import rz except: pass -import db_controller as dbc +######################################### + from model.graph import Topo_Diff -from neo4j_util import generate_random_id__uuid -from rz_kernel import RZ_Kernel -from rz_server import init_config, init_webapp -from rz_user_db import Fake_User_DB -# must be before any rhizi import def clone(rzdoc_name): return kernel.rzdoc__clone(kernel.rzdoc__lookup_by_name(rzdoc_name)) +def create(rzdoc_name, clone): + """ + create a new document with @rzdoc_name with a single commit clone. + + Missing: + this loses all the history. + no user recorded for newly created doc + """ + destination = kernel.rzdoc__create(rzdoc_name) + ctx = namedtuple('Context', ['user_name', 'rzdoc'])(None, destination) + kernel.diff_commit__topo(clone, ctx) + def names(): return [v['name'] for v in kernel.rzdoc__list()] @@ -116,10 +125,7 @@ def merge(destination_name, sources=None): sources = names() docs = [kernel.rzdoc__lookup_by_name(name) for name in sources] topos = [kernel.rzdoc__clone(doc) for doc in docs] - destination = kernel.rzdoc__create(destination_name) - - ctx = namedtuple('Context', ['user_name', 'rzdoc'])(None, destination) - kernel.diff_commit__topo(merge_topos(topos, sources), ctx) + create(destination_name, merge_topos(topos, sources)) def remove(rzdoc_name): kernel.rzdoc__delete(kernel.rzdoc__lookup_by_name(rzdoc_name)) @@ -141,9 +147,13 @@ if __name__ == '__main__': p.add_argument('--merge-target', help='name of resulting rzdoc') p.add_argument('--merge', help='comma separated names of docs to merge') p.add_argument('--merge-file', help='filename with line per doc name') - p.add_argument('--clone', help='show contents of doc') + p.add_argument('--clone', help='dump contents of doc as clone json') + p.add_argument('--create', help='create a single doc from a dumped clone json') + p.add_argument('--create-name', help='name of document to create') p.add_argument('--rename-from', help='rename current name') p.add_argument('--rename-to', help='rename new name') + p.add_argument('--dump-all', help='dump all documents') + p.add_argument('--load-all', help='load all arguments from previous dump') args = p.parse_args() if args.config_dir is None: @@ -151,16 +161,8 @@ if __name__ == '__main__': if os.path.exists(d): args.config_dir = d break - cfg = init_config(args.config_dir) - kernel = RZ_Kernel() - db_ctl = dbc.DB_Controller(cfg.db_base_url) - kernel.db_ctl = db_ctl - user_db = Fake_User_DB() - webapp = init_webapp(cfg, kernel) - webapp.user_db = user_db - kernel.db_op_factory = webapp # assist kernel with DB initialization - kernel.start() - time.sleep(0.1) + RZ = rz.RZ(args.config_dir) + kernel = RZ.kernel if args.list_table: print('\n'.join('%30s %30s' % (d['name'].encode('utf-8').ljust(30), d['id'].encode('utf-8').ljust(30)) for d in kernel.rzdoc__search(''))) @@ -174,6 +176,9 @@ if __name__ == '__main__': rename(args.rename_from, args.rename_to) if args.clone: print(json.dumps(clone(args.clone).to_json_dict())) + if args.create and args.create_name: + with open(args.create) as fd: + create(args.create_name, Topo_Diff.from_json_dict(json.load(fd))) if args.merge_target: merge_sources = None if args.merge: |
