This repository was archived by the owner on Sep 28, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathscriptedforms.py
More file actions
89 lines (61 loc) · 2.29 KB
/
scriptedforms.py
File metadata and controls
89 lines (61 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# Scripted Forms -- Making GUIs easy for everyone on your team.
# Copyright (C) 2017 Simon Biggs
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
import os
import argparse
from notebook.notebookapp import NotebookApp
from ._scriptedforms_handlers import get_scriptedforms_handlers
def _jupyter_server_extension_paths():
return [{
"module": "scriptedforms"
}]
def load_jupyter_server_extension(notebook_app):
web_app = notebook_app.web_app
base_url = web_app.settings['base_url']
handlers = get_scriptedforms_handlers(base_url)
web_app.add_handlers(".*$", handlers)
class ScriptedForms(NotebookApp):
"""ScriptedForms."""
name = 'ScriptedForms'
description = """
Scripted Forms
Open a scriptedform based on a template file.
"""
def start(self):
load_jupyter_server_extension(self)
super(ScriptedForms, self).start()
def load(filepath):
absolute_path = os.path.abspath(filepath)
if not os.path.exists(absolute_path):
raise ValueError('File does not exist: {}'.format(absolute_path))
directory, filename = os.path.split(absolute_path)
# workaround for Notebook app using sys.argv
sys.argv = [sys.argv[0]]
ScriptedForms.launch_instance(
notebook_dir=directory,
default_url='/scriptedforms/use/{}'.format(filename))
def open_docs():
sys.argv = [sys.argv[0]]
ScriptedForms.launch_instance(
default_url='/scriptedforms/docs')
def main():
parser = argparse.ArgumentParser(description='ScriptedForms.')
parser.add_argument(
'filepath', help='The file path of the form to open.', nargs='?',
default=None)
args = parser.parse_args()
if args.filepath:
load(args.filepath)
else:
open_docs()
if __name__ == '__main__':
main()