girder-jsonforms 2.0.2__tar.gz → 2.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {girder_jsonforms-2.0.2/girder_jsonforms.egg-info → girder_jsonforms-2.0.4}/PKG-INFO +1 -1
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/__init__.py +12 -5
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/models/entry.py +1 -1
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/models/form.py +3 -3
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/rest/entry.py +1 -1
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/rest/form.py +2 -2
- girder_jsonforms-2.0.4/girder_jsonforms/settings.py +26 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/web_client/dist/girder-plugin-jsonforms.umd.cjs +17 -17
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4/girder_jsonforms.egg-info}/PKG-INFO +1 -1
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms.egg-info/SOURCES.txt +1 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/setup.py +1 -1
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/.github/workflows/release.yml +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/.gitignore +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/LICENSE +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/README.md +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/lib/__init__.py +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/lib/google_drive.py +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/lib/jq.py +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/models/__init__.py +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/rest/__init__.py +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms/web_client/dist/style.css +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms.egg-info/dependency_links.txt +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms.egg-info/entry_points.txt +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms.egg-info/not-zip-safe +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms.egg-info/requires.txt +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/girder_jsonforms.egg-info/top_level.txt +0 -0
- {girder_jsonforms-2.0.2 → girder_jsonforms-2.0.4}/setup.cfg +0 -0
|
@@ -8,6 +8,7 @@ from girder import events
|
|
|
8
8
|
from girder.constants import AccessType
|
|
9
9
|
from girder.models.file import File
|
|
10
10
|
from girder.models.item import Item
|
|
11
|
+
from girder.models.setting import Setting
|
|
11
12
|
from girder.plugin import GirderPlugin, registerPluginStaticContent
|
|
12
13
|
from girder.utility.model_importer import ModelImporter
|
|
13
14
|
|
|
@@ -16,6 +17,7 @@ from .models.entry import FormEntry as FormEntryModel
|
|
|
16
17
|
from .models.form import Form as FormModel
|
|
17
18
|
from .rest.entry import FormEntry
|
|
18
19
|
from .rest.form import Form
|
|
20
|
+
from .settings import PluginSettings
|
|
19
21
|
|
|
20
22
|
GDRIVE_SERVICE = None
|
|
21
23
|
logger = logging.getLogger(__name__)
|
|
@@ -42,6 +44,9 @@ def annotate_uploads(event):
|
|
|
42
44
|
|
|
43
45
|
def upload_to_gdrive(event):
|
|
44
46
|
global GDRIVE_SERVICE
|
|
47
|
+
if GDRIVE_SERVICE is None:
|
|
48
|
+
logger.error("Google Drive integration is not enabled.")
|
|
49
|
+
return
|
|
45
50
|
info = event.info
|
|
46
51
|
file = info["file"]
|
|
47
52
|
|
|
@@ -66,14 +71,16 @@ class JSONFormsPlugin(GirderPlugin):
|
|
|
66
71
|
ModelImporter.registerModel("form", FormModel, plugin="jsonforms")
|
|
67
72
|
ModelImporter.registerModel("entry", FormEntryModel, plugin="jsonforms")
|
|
68
73
|
global GDRIVE_SERVICE
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
74
|
+
if Setting().get(PluginSettings.GOOGLE_DRIVE_ENABLED):
|
|
75
|
+
try:
|
|
76
|
+
GDRIVE_SERVICE = authenticate_gdrive()
|
|
77
|
+
except ValueError:
|
|
78
|
+
logger.exception("Failed to authenticate with Google Drive")
|
|
73
79
|
info["apiRoot"].form = Form()
|
|
74
80
|
info["apiRoot"].entry = FormEntry()
|
|
75
81
|
events.bind("data.process", "jsonforms", annotate_uploads)
|
|
76
|
-
|
|
82
|
+
if GDRIVE_SERVICE is not None:
|
|
83
|
+
events.bind("gdrive.upload", "jsonforms", upload_to_gdrive)
|
|
77
84
|
registerPluginStaticContent(
|
|
78
85
|
plugin="jsonforms",
|
|
79
86
|
css=["/style.css"],
|
|
@@ -51,7 +51,7 @@ class FormEntry(acl_mixin.AccessControlMixin, Model):
|
|
|
51
51
|
print("Error:", e)
|
|
52
52
|
return None
|
|
53
53
|
|
|
54
|
-
def
|
|
54
|
+
def create_entry(self, form, data, source, destination, creator):
|
|
55
55
|
now = datetime.datetime.utcnow()
|
|
56
56
|
unique_field = form.get("uniqueField")
|
|
57
57
|
entry = {
|
|
@@ -44,7 +44,7 @@ class Form(AccessControlledModel):
|
|
|
44
44
|
def validate(self, doc):
|
|
45
45
|
return doc
|
|
46
46
|
|
|
47
|
-
def
|
|
47
|
+
def create_form(
|
|
48
48
|
self,
|
|
49
49
|
name,
|
|
50
50
|
description,
|
|
@@ -77,7 +77,7 @@ class Form(AccessControlledModel):
|
|
|
77
77
|
|
|
78
78
|
return self.save(form)
|
|
79
79
|
|
|
80
|
-
def
|
|
80
|
+
def update_form(
|
|
81
81
|
self,
|
|
82
82
|
form,
|
|
83
83
|
name,
|
|
@@ -155,7 +155,7 @@ class Form(AccessControlledModel):
|
|
|
155
155
|
|
|
156
156
|
return form
|
|
157
157
|
|
|
158
|
-
def
|
|
158
|
+
def export_form(self, form, export_format):
|
|
159
159
|
from .entry import FormEntry
|
|
160
160
|
|
|
161
161
|
entries = [
|
|
@@ -108,7 +108,7 @@ class FormEntry(Resource):
|
|
|
108
108
|
)
|
|
109
109
|
@filtermodel(model=FormEntryModel, plugin="jsonforms")
|
|
110
110
|
def createFormEntry(self, form, data, source, destination):
|
|
111
|
-
return FormEntryModel().
|
|
111
|
+
return FormEntryModel().create_entry(
|
|
112
112
|
form,
|
|
113
113
|
data,
|
|
114
114
|
source,
|
|
@@ -111,7 +111,7 @@ class Form(Resource):
|
|
|
111
111
|
.errorResponse("Read access was denied on the form.", 403)
|
|
112
112
|
)
|
|
113
113
|
def exportForm(self, form, exportFormat):
|
|
114
|
-
export = FormModel().
|
|
114
|
+
export = FormModel().export_form(form, exportFormat)
|
|
115
115
|
setResponseHeader("Content-Length", export.getbuffer().nbytes)
|
|
116
116
|
content_type = (
|
|
117
117
|
"text/csv" if exportFormat == "csv" else "application/vnd.ms-excel"
|
|
@@ -199,7 +199,7 @@ class Form(Resource):
|
|
|
199
199
|
serialize,
|
|
200
200
|
uniqueField,
|
|
201
201
|
):
|
|
202
|
-
return FormModel().
|
|
202
|
+
return FormModel().create_form(
|
|
203
203
|
name,
|
|
204
204
|
description,
|
|
205
205
|
schema,
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from girder.exceptions import ValidationException
|
|
2
|
+
from girder.utility import setting_utilities
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class PluginSettings:
|
|
6
|
+
GOOGLE_DRIVE_ENABLED = "jsonforms.google_drive_enabled"
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@setting_utilities.default(PluginSettings.GOOGLE_DRIVE_ENABLED)
|
|
10
|
+
def default_google_drive_enabled():
|
|
11
|
+
"""
|
|
12
|
+
Default setting for enabling Google Drive integration.
|
|
13
|
+
"""
|
|
14
|
+
return False
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@setting_utilities.validator(PluginSettings.GOOGLE_DRIVE_ENABLED)
|
|
18
|
+
def validate_google_drive_enabled(doc):
|
|
19
|
+
"""
|
|
20
|
+
Validate the Google Drive integration setting.
|
|
21
|
+
"""
|
|
22
|
+
if not isinstance(doc["value"], bool):
|
|
23
|
+
raise ValidationException(
|
|
24
|
+
"Google Drive integration must be a boolean.",
|
|
25
|
+
"value",
|
|
26
|
+
)
|