diff --git a/.gitignore b/.gitignore
index 8e55f49..fbace20 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,6 @@
*.pyc
*.log
*.bak
-*.bat
.venv
.idea
diff --git a/deploy/.gcloudignore b/deploy/.gcloudignore
index f70ae98..b04599c 100644
--- a/deploy/.gcloudignore
+++ b/deploy/.gcloudignore
@@ -7,6 +7,7 @@
# $ gcloud topic gcloudignore
#
.gcloudignore
+
# If you would like to upload your .git directory, .gitignore file or files
# from your .gitignore file, remove the corresponding line
# below:
@@ -15,12 +16,8 @@
# Python pycache:
__pycache__/
+
# Ignored by the build system
/setup.cfg
node_modules/
-/viur/docs/
-/viur/CHANGELOG.md
-/viur/LICENSE
-/viur/README.md
-/viur/.readthedocs.yml
diff --git a/deploy/html/example_list.html b/deploy/html/empty_list.html
similarity index 57%
rename from deploy/html/example_list.html
rename to deploy/html/empty_list.html
index 226b073..b58a84e 100644
--- a/deploy/html/example_list.html
+++ b/deploy/html/empty_list.html
@@ -6,10 +6,9 @@
View {{ moduleName() }}
{% for skel in skellist %}
{{ skel["name"] }}
{% if skel["image"] %}
-
-

-
- {% endif %}
+
+

+
+ {% endif %}
{% endfor %}
-
{% endblock %}
diff --git a/deploy/main.py b/deploy/main.py
index 381538b..b6f62c0 100644
--- a/deploy/main.py
+++ b/deploy/main.py
@@ -58,7 +58,7 @@ class ProjectConfig(ConfigType):
# {"width": 1920},
# {"width": 1280},
# {"width": 900},
- # {"width": 500}
+ # {"width": 500},
# ]
# }
@@ -71,8 +71,6 @@ class ProjectConfig(ConfigType):
conf.valid_application_ids = list(conf.project.appnames.keys())
-# Client-ID for OAuth with google
-# conf.user.google_client_id = ""
# ------------------------------------------------------------------------------
# Debugging & Performance
@@ -95,6 +93,23 @@ class ProjectConfig(ConfigType):
# render old-style tuple-list in SelectBone's values structure
conf.compatibility.remove("bone.select.structure.values.keytuple")
+# ------------------------------------------------------------------------------
+# User module
+#
+
+# Client-ID for OAuth with Google Account
+# conf.user.google_client_id = ""
+# conf.user.google_gsuite_domains = ["example.com"]
+
+# User roles
+#
+# conf.user.roles = {
+# "custom": "Custom setting",
+# "admin": "Administrator",
+# "backoffice": "Back office worker",
+# "salesforce": "Sales force worker",
+# }
+
# ------------------------------------------------------------------------------
# File module
#
@@ -137,11 +152,13 @@ class ProjectConfig(ConfigType):
# Email configuration
#
-conf.email.sendinblue_api_key = "xkeysib-XXX" # better: use secret.get("sib-api-key")
-conf.email.transport_class = email.EmailTransportSendInBlue
-conf.email.send_from_local_development_server = True # enable sending emails from local development server
+# conf.email.transport_class = email.EmailTransportMailjet(
+# api_key=secret.get("mailjet-api-key"),
+# secret_key=secret.get("mailjet-api-secret"),
+# )
+# conf.email.send_from_local_development_server = True # enable sending emails from local development server
# conf.email.sender_override = "mail@viur.dev"
-# conf.email.recipient_override = ["mail@viur.dev"] # send all emails to this recipient
+# conf.email.recipient_override = "mail@viur.dev" # send all emails to this recipient
# ------------------------------------------------------------------------------
# Content Security Policy (CSP)
@@ -206,23 +223,35 @@ class ProjectConfig(ConfigType):
# conf.request_preprocessor = maintenance_mode
# ------------------------------------------------------------------------------
-# VueJS development
+# CORS configuration for VueJS development
#
-# if conf.instance.is_dev_server:
-# def vuejs_cors_allow_all(path):
-# current.request.get().response.headers["Access-Control-Allow-Origin"] = "http://localhost:8081"
-# current.request.get().response.headers["Access-Control-Allow-Credentials"] = "true"
-# return path
+# import re
+#
+# conf.security.cors_max_age = datetime.timedelta(seconds=30)
+# conf.security.cors_allow_credentials = True
+# conf.security.cors_origins = "*"
+# conf.security.cors_origins = [
+# # "*",
+# # "http://localhost:8080",
+# # "http://localhost:9090",
+# # Allows any localhost port:
+# re.compile(r"^(http://localhost:(\d{4,5}))/?$", flags=re.IGNORECASE),
+# ]
+# # conf.security.cors_origins_use_wildcard = True
#
-# conf.request_preprocessor = vuejs_cors_allow_all
+# # Allows the header "X-Requested-With" and "X-ViUR-*"
+# conf.security.cors_allow_headers = [
+# "X-Requested-With",
+# re.compile(r"^X-ViUR-.*$", flags=re.IGNORECASE),
+# ]
# ------------------------------------------------------------------------------
# Server startup
#
-import modules
-import render
+import modules # noqa
+import render # noqa
# core.setDefaultLanguage("de")
app = setup(modules, render)
diff --git a/deploy/modules/empty.py b/deploy/modules/empty.py
new file mode 100644
index 0000000..10fa771
--- /dev/null
+++ b/deploy/modules/empty.py
@@ -0,0 +1,12 @@
+from viur.core.prototypes import List
+
+
+class Empty(List):
+ listTemplate = "empty_list"
+
+ def listFilter(self, query):
+ return query # This content is public!
+
+
+Empty.html = True # enable for HTML-rendering
+Empty.json = True # enable for JSON-rendering
diff --git a/deploy/modules/file.py b/deploy/modules/file.py
index 05dd957..cdc92d8 100644
--- a/deploy/modules/file.py
+++ b/deploy/modules/file.py
@@ -1,4 +1,4 @@
-from viur.core import i18n, db, current
+from viur.core import i18n, current
from viur.core.modules.file import File
diff --git a/deploy/skeletons/empty.py b/deploy/skeletons/empty.py
new file mode 100644
index 0000000..72f6ddb
--- /dev/null
+++ b/deploy/skeletons/empty.py
@@ -0,0 +1,9 @@
+from viur.core.bones import *
+from viur.core.skeleton import Skeleton
+
+
+class EmptySkel(Skeleton):
+ name = StringBone(
+ descr="Name",
+ required=True,
+ )
diff --git a/deploy/skeletons/example.py b/deploy/skeletons/example.py
index 9178c22..509c0cd 100644
--- a/deploy/skeletons/example.py
+++ b/deploy/skeletons/example.py
@@ -7,45 +7,43 @@ class ExampleSkel(Skeleton):
# Defaults
name = StringBone(
descr="Name",
- required=True
+ required=True,
)
- sortindex = NumericBone(
- descr="Sort index",
- indexed=True,
- required=True
+ sortindex = SortIndexBone(
+ required=True,
)
image = FileBone(
descr="Image",
- derive=conf["derives"]
+ # derive=conf.project.standard_derives,
)
# SEO
seo_title = StringBone(
descr="SEO Title",
params={
- "category": "SEO"
- }
+ "category": "SEO",
+ },
)
seo_description = StringBone(
descr="SEO Description",
params={
"category": "SEO"
- }
+ },
)
seo_keywords = StringBone(
descr="SEO Keywords",
params={
"category": "SEO"
- }
+ },
)
seo_image = FileBone(
descr="SEO Preview Image",
params={
"category": "SEO"
- }
+ },
)
diff --git a/deploy/vi_plugins/__init__.py b/deploy/vi_plugins/__init__.py
deleted file mode 100644
index c0a9c24..0000000
--- a/deploy/vi_plugins/__init__.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# This is the major Vi plugin init file.
-# Do custom plugin imports and customized settings here.
-
-# Plugin imports
-# import vi_plugins.bones
-
-# Vi config
-from vi.config import conf
-
-# Change default batch size
-# conf["batchSize"] = 64
-
-# Show bone name identifiers instead of descriptions:
-# conf["showBoneNames"] = False
-
-# To globally disable the internal preview, uncomment this:
-# conf["internalPreview"] = False
-
-# Change language
-# from i18n import setLanguage, getLanguage
-# conf["currentlanguage"] = "de"
-# setLanguage(conf["currentlanguage"])
-
-print(conf)
-print("!!! ALL PROJECT CUSTOMIZATIONS LOADED !!!")
diff --git a/deploy/vi_plugins/files.json b/deploy/vi_plugins/files.json
deleted file mode 100644
index 6564c80..0000000
--- a/deploy/vi_plugins/files.json
+++ /dev/null
@@ -1,3 +0,0 @@
-[
- "__init__.py"
-]
\ No newline at end of file
diff --git a/resources/allbones/README.md b/resources/allbones/README.md
deleted file mode 100644
index bbeb38a..0000000
--- a/resources/allbones/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# allbones
-
-This is only a test module that generates bones in any valid configurations.
-
-It is used for Vi testing and development. Copy modules/allbones.py into the deploy/modules and skeletons/allbones.py into deploy/skeletons of your ViUR project to use it.
diff --git a/resources/allbones/modules/allbones.py b/resources/allbones/modules/allbones.py
deleted file mode 100644
index 83f88f3..0000000
--- a/resources/allbones/modules/allbones.py
+++ /dev/null
@@ -1,153 +0,0 @@
-from viur.core.bones import *
-from viur.core.prototypes import List
-
-flags = [
- {
- "required": False,
- "readOnly": False,
- "visible": False,
- "multiple": False,
- },
- {
- "required": True,
- "readOnly": False,
- "visible": False,
- "multiple": False,
- },
- {
- "required": False,
- "readOnly": True,
- "visible": False,
- "multiple": False,
- },
- {
- "required": False,
- "readOnly": False,
- "visible": True,
- "multiple": False,
- },
- {
- "required": True,
- "readOnly": True,
- "visible": False,
- "multiple": False,
- },
- {
- "required": True,
- "readOnly": False,
- "visible": True,
- "multiple": False,
- },
- {
- "required": False,
- "readOnly": True,
- "visible": True,
- "multiple": False,
- },
- {
- "required": True,
- "readOnly": True,
- "visible": True,
- "multiple": False,
- },
- {
- "required": False,
- "readOnly": False,
- "visible": False,
- "multiple": True,
- },
- {
- "required": True,
- "readOnly": False,
- "visible": False,
- "multiple": True,
- },
- {
- "required": False,
- "readOnly": True,
- "visible": False,
- "multiple": True,
- },
- {
- "required": False,
- "readOnly": False,
- "visible": True,
- "multiple": True,
- },
- {
- "required": True,
- "readOnly": True,
- "visible": False,
- "multiple": True,
- },
- {
- "required": True,
- "readOnly": False,
- "visible": True,
- "multiple": True,
- },
- {
- "required": False,
- "readOnly": True,
- "visible": True,
- "multiple": True,
- },
- {
- "required": True,
- "readOnly": True,
- "visible": True,
- "multiple": True,
- },
-]
-
-bonesToTest = [
- # (baseBone, [], {}),
- (booleanBone, [], {}),
- # (captchaBone, [], {"privateKey": "foo", "publicKey": "bar"}),
- # (colorBone, [], {}),
- # (credentialBone, [], {}),
- # (dateBone, [], {}),
- # (emailBone, [], {}),
- # (fileBone, [], {}),
- # (keyBone, [], {}),
- (numericBone, [], {}),
- # (passwordBone, [], {}),
- # (randomSliceBone, [], {}),
- # (recordBone, [], {"using": CoordRelSkel, "format": "$(lat) - $(lng)"}),
- # (relationalBone, [], {"module": "feedentry", "kind": "feedentry"}),
- # (selectBone, [], {"values": {"true": "Option A", "false": "Option B"}}),
- # (selectCountryBone, [], {}),
- # (spatialBone, [(50, 57), (7, 0), (10, 10)], {}),
- (stringBone, [], {}),
- # (treeLeafBone, [], {"module": "file", "kind": "file"}),
- # (treeNodeBone, [], {"module": "file", "kind": "file"}),
- # (userBone, [], {}),
-]
-
-
-class AllBones(List):
- pass
-
-# def addSkel(self, *args, **kwargs):
-# skel = super().addSkel()
-# count = 0
-# for testBone, extraArgs, extraKwargs in bonesToTest:
-# for flagCombination in flags:
-# mergedArgs = flagCombination.copy()
-# mergedArgs["extra"] = "_".join(map(str, extraKwargs.values()))
-# mergedArgs["params"] = {"tooltip": json.dumps(mergedArgs, indent=4)}
-# boneName = urllib.parse.quote_plus("{}_{}_{}_{}_{}_{}".format(testBone.__name__, *mergedArgs.values()))
-# logging.debug("boneName: %r, %r, %r, %r, %r", count, testBone, boneName, flagCombination, extraKwargs)
-# try:
-# skel.__setattr__(
-# boneName,
-# testBone(*extraArgs, descr=boneName, **flagCombination, **extraKwargs)
-# )
-# count += 1
-# except Exception as err:
-# logging.exception(err)
-# return skel
-#
-# viewSkel = addSkel
-# editSkel = addSkel
-#
diff --git a/resources/allbones/skeletons/allbones.py b/resources/allbones/skeletons/allbones.py
deleted file mode 100644
index 8593fb4..0000000
--- a/resources/allbones/skeletons/allbones.py
+++ /dev/null
@@ -1,361 +0,0 @@
-import logging
-
-from viur.core.bones import *
-from viur.core.skeleton import RelSkel, Skeleton
-
-
-class StringRelSkel(RelSkel):
- lat = stringBone(
- descr=u"Latitude",
- indexed=True,
- searchable=True,
- required=True
- )
-
- lng = stringBone(
- descr=u"Longitude",
- indexed=True,
- searchable=True,
- required=True
- )
-
-
-class allbonesSkel(Skeleton):
- # baseBone_0 = baseBone(descr="baseBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # baseBone_1 = baseBone(descr="baseBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # baseBone_2 = baseBone(descr="baseBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # baseBone_3 = baseBone(descr="baseBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # baseBone_4 = baseBone(descr="baseBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # baseBone_5 = baseBone(descr="baseBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # baseBone_6 = baseBone(descr="baseBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # baseBone_7 = baseBone(descr="baseBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # baseBone_8 = baseBone(descr="baseBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # baseBone_9 = baseBone(descr="baseBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # baseBone_10 = baseBone(descr="baseBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # baseBone_11 = baseBone(descr="baseBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # baseBone_12 = baseBone(descr="baseBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # baseBone_13 = baseBone(descr="baseBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # baseBone_14 = baseBone(descr="baseBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # baseBone_15 = baseBone(descr="baseBone_15", required=True, readOnly=True, visible=True, multiple=True)
- booleanBone_0 = booleanBone(descr="booleanBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # booleanBone_1 = booleanBone(descr="booleanBone_1", required=True, readOnly=False, visible=False, multiple=False)
- booleanBone_2 = booleanBone(descr="booleanBone_2", required=False, readOnly=True, visible=False, multiple=False)
- booleanBone_3 = booleanBone(descr="booleanBone_3", required=False, readOnly=False, visible=True, multiple=False)
- booleanBone_4 = booleanBone(descr="booleanBone_4", required=True, readOnly=True, visible=False, multiple=False)
- booleanBone_5 = booleanBone(descr="booleanBone_5", required=True, readOnly=False, visible=True, multiple=False)
- booleanBone_6 = booleanBone(descr="booleanBone_6", required=False, readOnly=True, visible=True, multiple=False)
- booleanBone_7 = booleanBone(descr="booleanBone_7", required=True, readOnly=True, visible=True, multiple=False)
- booleanBone_8 = booleanBone(descr="booleanBone_8", required=False, readOnly=False, visible=False, multiple=True)
- booleanBone_9 = booleanBone(descr="booleanBone_9", required=True, readOnly=False, visible=False, multiple=True)
- booleanBone_10 = booleanBone(descr="booleanBone_10", required=False, readOnly=True, visible=False, multiple=True)
- booleanBone_11 = booleanBone(descr="booleanBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # booleanBone_12 = booleanBone(descr="booleanBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # booleanBone_13 = booleanBone(descr="booleanBone_13", required=True, readOnly=False, visible=True, multiple=True)
- booleanBone_14 = booleanBone(descr="booleanBone_14", required=False, readOnly=True, visible=True, multiple=True)
- booleanBone_15 = booleanBone(descr="booleanBone_15", required=True, readOnly=True, visible=True, multiple=True)
- # captchaBone_0 = captchaBone(descr="captchaBone_0", required=False, readOnly=False, visible=False, multiple=False, privateKey="foo", publicKey="bar")
- # captchaBone_1 = captchaBone(descr="captchaBone_1", required=True, readOnly=False, visible=False, multiple=False, privateKey="foo", publicKey="bar")
- # captchaBone_2 = captchaBone(descr="captchaBone_2", required=False, readOnly=True, visible=False, multiple=False, privateKey="foo", publicKey="bar")
- # captchaBone_3 = captchaBone(descr="captchaBone_3", required=False, readOnly=False, visible=True, multiple=False, privateKey="foo", publicKey="bar")
- # captchaBone_4 = captchaBone(descr="captchaBone_4", required=True, readOnly=True, visible=False, multiple=False, privateKey="foo", publicKey="bar")
- # captchaBone_5 = captchaBone(descr="captchaBone_5", required=True, readOnly=False, visible=True, multiple=False, privateKey="foo", publicKey="bar")
- # captchaBone_6 = captchaBone(descr="captchaBone_6", required=False, readOnly=True, visible=True, multiple=False, privateKey="foo", publicKey="bar")
- # captchaBone_7 = captchaBone(descr="captchaBone_7", required=True, readOnly=True, visible=True, multiple=False, privateKey="foo", publicKey="bar")
- # captchaBone_8 = captchaBone(descr="captchaBone_8", required=False, readOnly=False, visible=False, multiple=True, privateKey="foo", publicKey="bar")
- # captchaBone_9 = captchaBone(descr="captchaBone_9", required=True, readOnly=False, visible=False, multiple=True, privateKey="foo", publicKey="bar")
- # captchaBone_10 = captchaBone(descr="captchaBone_10", required=False, readOnly=True, visible=False, multiple=True, privateKey="foo", publicKey="bar")
- # captchaBone_11 = captchaBone(descr="captchaBone_11", required=False, readOnly=False, visible=True, multiple=True, privateKey="foo", publicKey="bar")
- # captchaBone_12 = captchaBone(descr="captchaBone_12", required=True, readOnly=True, visible=False, multiple=True, privateKey="foo", publicKey="bar")
- # captchaBone_13 = captchaBone(descr="captchaBone_13", required=True, readOnly=False, visible=True, multiple=True, privateKey="foo", publicKey="bar")
- # captchaBone_14 = captchaBone(descr="captchaBone_14", required=False, readOnly=True, visible=True, multiple=True, privateKey="foo", publicKey="bar")
- # captchaBone_15 = captchaBone(descr="captchaBone_15", required=True, readOnly=True, visible=True, multiple=True, privateKey="foo", publicKey="bar")
- # colorBone_0 = colorBone(descr="colorBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # colorBone_1 = colorBone(descr="colorBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # colorBone_2 = colorBone(descr="colorBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # colorBone_3 = colorBone(descr="colorBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # colorBone_4 = colorBone(descr="colorBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # colorBone_5 = colorBone(descr="colorBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # colorBone_6 = colorBone(descr="colorBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # colorBone_7 = colorBone(descr="colorBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # colorBone_8 = colorBone(descr="colorBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # colorBone_9 = colorBone(descr="colorBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # colorBone_10 = colorBone(descr="colorBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # colorBone_11 = colorBone(descr="colorBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # colorBone_12 = colorBone(descr="colorBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # colorBone_13 = colorBone(descr="colorBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # colorBone_14 = colorBone(descr="colorBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # colorBone_15 = colorBone(descr="colorBone_15", required=True, readOnly=True, visible=True, multiple=True)
- # credentialBone_0 = credentialBone(descr="credentialBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # credentialBone_1 = credentialBone(descr="credentialBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # credentialBone_2 = credentialBone(descr="credentialBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # credentialBone_3 = credentialBone(descr="credentialBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # credentialBone_4 = credentialBone(descr="credentialBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # credentialBone_5 = credentialBone(descr="credentialBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # credentialBone_6 = credentialBone(descr="credentialBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # credentialBone_7 = credentialBone(descr="credentialBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # # credentialBone_8 = credentialBone(descr="credentialBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # # credentialBone_9 = credentialBone(descr="credentialBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # # credentialBone_10 = credentialBone(descr="credentialBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # # credentialBone_11 = credentialBone(descr="credentialBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # # credentialBone_12 = credentialBone(descr="credentialBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # # credentialBone_13 = credentialBone(descr="credentialBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # # credentialBone_14 = credentialBone(descr="credentialBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # # credentialBone_15 = credentialBone(descr="credentialBone_15", required=True, readOnly=True, visible=True, multiple=True)
- # dateBone_0 = dateBone(descr="dateBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # dateBone_1 = dateBone(descr="dateBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # dateBone_2 = dateBone(descr="dateBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # dateBone_3 = dateBone(descr="dateBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # dateBone_4 = dateBone(descr="dateBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # dateBone_5 = dateBone(descr="dateBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # dateBone_6 = dateBone(descr="dateBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # dateBone_7 = dateBone(descr="dateBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # dateBone_8 = dateBone(descr="dateBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # dateBone_9 = dateBone(descr="dateBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # dateBone_10 = dateBone(descr="dateBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # dateBone_11 = dateBone(descr="dateBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # dateBone_12 = dateBone(descr="dateBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # dateBone_13 = dateBone(descr="dateBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # dateBone_14 = dateBone(descr="dateBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # dateBone_15 = dateBone(descr="dateBone_15", required=True, readOnly=True, visible=True, multiple=True)
- # emailBone_0 = emailBone(descr="emailBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # emailBone_1 = emailBone(descr="emailBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # emailBone_2 = emailBone(descr="emailBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # emailBone_3 = emailBone(descr="emailBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # emailBone_4 = emailBone(descr="emailBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # emailBone_5 = emailBone(descr="emailBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # emailBone_6 = emailBone(descr="emailBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # emailBone_7 = emailBone(descr="emailBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # emailBone_8 = emailBone(descr="emailBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # emailBone_9 = emailBone(descr="emailBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # emailBone_10 = emailBone(descr="emailBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # emailBone_11 = emailBone(descr="emailBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # emailBone_12 = emailBone(descr="emailBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # emailBone_13 = emailBone(descr="emailBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # emailBone_14 = emailBone(descr="emailBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # emailBone_15 = emailBone(descr="emailBone_15", required=True, readOnly=True, visible=True, multiple=True)
- # fileBone_0 = fileBone(descr="fileBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # fileBone_1 = fileBone(descr="fileBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # fileBone_2 = fileBone(descr="fileBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # fileBone_3 = fileBone(descr="fileBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # fileBone_4 = fileBone(descr="fileBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # fileBone_5 = fileBone(descr="fileBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # fileBone_6 = fileBone(descr="fileBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # fileBone_7 = fileBone(descr="fileBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # fileBone_8 = fileBone(descr="fileBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # fileBone_9 = fileBone(descr="fileBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # fileBone_10 = fileBone(descr="fileBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # fileBone_11 = fileBone(descr="fileBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # fileBone_12 = fileBone(descr="fileBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # fileBone_13 = fileBone(descr="fileBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # fileBone_14 = fileBone(descr="fileBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # fileBone_15 = fileBone(descr="fileBone_15", required=True, readOnly=True, visible=True, multiple=True)
- # keyBone_0 = keyBone(descr="keyBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # keyBone_1 = keyBone(descr="keyBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # keyBone_2 = keyBone(descr="keyBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # keyBone_3 = keyBone(descr="keyBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # keyBone_4 = keyBone(descr="keyBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # keyBone_5 = keyBone(descr="keyBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # keyBone_6 = keyBone(descr="keyBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # keyBone_7 = keyBone(descr="keyBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # keyBone_8 = keyBone(descr="keyBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # keyBone_9 = keyBone(descr="keyBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # keyBone_10 = keyBone(descr="keyBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # keyBone_11 = keyBone(descr="keyBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # keyBone_12 = keyBone(descr="keyBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # keyBone_13 = keyBone(descr="keyBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # keyBone_14 = keyBone(descr="keyBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # keyBone_15 = keyBone(descr="keyBone_15", required=True, readOnly=True, visible=True, multiple=True)
- numericBone_0 = numericBone(descr="numericBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # numericBone_1 = numericBone(descr="numericBone_1", required=True, readOnly=False, visible=False, multiple=False)
- numericBone_2 = numericBone(descr="numericBone_2", required=False, readOnly=True, visible=False, multiple=False)
- numericBone_3 = numericBone(descr="numericBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # numericBone_4 = numericBone(descr="numericBone_4", required=True, readOnly=True, visible=False, multiple=False)
- numericBone_5 = numericBone(descr="numericBone_5", required=True, readOnly=False, visible=True, multiple=False)
- numericBone_6 = numericBone(descr="numericBone_6", required=False, readOnly=True, visible=True, multiple=False)
- numericBone_7 = numericBone(descr="numericBone_7", required=True, readOnly=True, visible=True, multiple=False)
- numericBone_8 = numericBone(descr="numericBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # numericBone_9 = numericBone(descr="numericBone_9", required=True, readOnly=False, visible=False, multiple=True)
- numericBone_10 = numericBone(descr="numericBone_10", required=False, readOnly=True, visible=False, multiple=True)
- numericBone_11 = numericBone(descr="numericBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # numericBone_12 = numericBone(descr="numericBone_12", required=True, readOnly=True, visible=False, multiple=True)
- numericBone_13 = numericBone(descr="numericBone_13", required=True, readOnly=False, visible=True, multiple=True)
- numericBone_14 = numericBone(descr="numericBone_14", required=False, readOnly=True, visible=True, multiple=True)
- numericBone_15 = numericBone(descr="numericBone_15", required=True, readOnly=True, visible=True, multiple=True)
- # passwordBone_0 = passwordBone(descr="passwordBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # passwordBone_1 = passwordBone(descr="passwordBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # passwordBone_2 = passwordBone(descr="passwordBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # passwordBone_3 = passwordBone(descr="passwordBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # passwordBone_4 = passwordBone(descr="passwordBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # passwordBone_5 = passwordBone(descr="passwordBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # passwordBone_6 = passwordBone(descr="passwordBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # passwordBone_7 = passwordBone(descr="passwordBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # passwordBone_8 = passwordBone(descr="passwordBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # passwordBone_9 = passwordBone(descr="passwordBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # passwordBone_10 = passwordBone(descr="passwordBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # passwordBone_11 = passwordBone(descr="passwordBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # passwordBone_12 = passwordBone(descr="passwordBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # passwordBone_13 = passwordBone(descr="passwordBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # passwordBone_14 = passwordBone(descr="passwordBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # passwordBone_15 = passwordBone(descr="passwordBone_15", required=True, readOnly=True, visible=True, multiple=True)
- # # randomSliceBone_0 = randomSliceBone(descr="randomSliceBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # # randomSliceBone_1 = randomSliceBone(descr="randomSliceBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # randomSliceBone_2 = randomSliceBone(descr="randomSliceBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # # randomSliceBone_3 = randomSliceBone(descr="randomSliceBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # randomSliceBone_4 = randomSliceBone(descr="randomSliceBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # # randomSliceBone_5 = randomSliceBone(descr="randomSliceBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # # randomSliceBone_6 = randomSliceBone(descr="randomSliceBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # # randomSliceBone_7 = randomSliceBone(descr="randomSliceBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # # randomSliceBone_8 = randomSliceBone(descr="randomSliceBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # # randomSliceBone_9 = randomSliceBone(descr="randomSliceBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # randomSliceBone_10 = randomSliceBone(descr="randomSliceBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # # randomSliceBone_11 = randomSliceBone(descr="randomSliceBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # randomSliceBone_12 = randomSliceBone(descr="randomSliceBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # # randomSliceBone_13 = randomSliceBone(descr="randomSliceBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # # randomSliceBone_14 = randomSliceBone(descr="randomSliceBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # # randomSliceBone_15 = randomSliceBone(descr="randomSliceBone_15", required=True, readOnly=True, visible=True, multiple=True)
- # # recordBone_0 = recordBone(descr="recordBone_0", required=False, readOnly=False, visible=False, multiple=False, using=StringRelSkel, format="$(lat) - $(lng)")
- # # recordBone_1 = recordBone(descr="recordBone_1", required=True, readOnly=False, visible=False, multiple=False, using=StringRelSkel, format="$(lat) - $(lng)")
- # # recordBone_2 = recordBone(descr="recordBone_2", required=False, readOnly=True, visible=False, multiple=False, using=StringRelSkel, format="$(lat) - $(lng)")
- # # recordBone_3 = recordBone(descr="recordBone_3", required=False, readOnly=False, visible=True, multiple=False, using=StringRelSkel, format="$(lat) - $(lng)")
- # # recordBone_4 = recordBone(descr="recordBone_4", required=True, readOnly=True, visible=False, multiple=False, using=StringRelSkel, format="$(lat) - $(lng)")
- # # recordBone_5 = recordBone(descr="recordBone_5", required=True, readOnly=False, visible=True, multiple=False, using=StringRelSkel, format="$(lat) - $(lng)")
- # # recordBone_6 = recordBone(descr="recordBone_6", required=False, readOnly=True, visible=True, multiple=False, using=StringRelSkel, format="$(lat) - $(lng)")
- # # recordBone_7 = recordBone(descr="recordBone_7", required=True, readOnly=True, visible=True, multiple=False, using=StringRelSkel, format="$(lat) - $(lng)")
- recordBone_8 = recordBone(descr="recordBone_8", required=False, readOnly=False, visible=False, multiple=True, using=StringRelSkel, format="$(lat) - $(lng)")
- # recordBone_9 = recordBone(descr="recordBone_9", required=True, readOnly=False, visible=False, multiple=True, using=StringRelSkel, format="$(lat) - $(lng)")
- recordBone_10 = recordBone(descr="recordBone_10", required=False, readOnly=True, visible=False, multiple=True, using=StringRelSkel, format="$(lat) - $(lng)")
- recordBone_11 = recordBone(descr="recordBone_11", required=False, readOnly=False, visible=True, multiple=True, using=StringRelSkel, format="$(lat) - $(lng)")
- # recordBone_12 = recordBone(descr="recordBone_12", required=True, readOnly=True, visible=False, multiple=True, using=StringRelSkel, format="$(lat) - $(lng)")
- recordBone_13 = recordBone(descr="recordBone_13", required=True, readOnly=False, visible=True, multiple=True, using=StringRelSkel, format="$(lat) - $(lng)")
- recordBone_14 = recordBone(descr="recordBone_14", required=False, readOnly=True, visible=True, multiple=True, using=StringRelSkel, format="$(lat) - $(lng)")
- recordBone_15 = recordBone(descr="recordBone_15", required=True, readOnly=True, visible=True, multiple=True, using=StringRelSkel, format="$(lat) - $(lng)")
- relationalBone_0 = relationalBone(descr="relationalBone_0", required=False, readOnly=False, visible=False, multiple=False, module="feedentry", kind="feedentry")
- # relationalBone_1 = relationalBone(descr="relationalBone_1", required=True, readOnly=False, visible=False, multiple=False, module="feedentry", kind="feedentry")
- relationalBone_2 = relationalBone(descr="relationalBone_2", required=False, readOnly=True, visible=False, multiple=False, module="feedentry", kind="feedentry")
- relationalBone_3 = relationalBone(descr="relationalBone_3", required=False, readOnly=False, visible=True, multiple=False, module="feedentry", kind="feedentry")
- # relationalBone_4 = relationalBone(descr="relationalBone_4", required=True, readOnly=True, visible=False, multiple=False, module="feedentry", kind="feedentry")
- relationalBone_5 = relationalBone(descr="relationalBone_5", required=True, readOnly=False, visible=True, multiple=False, module="feedentry", kind="feedentry")
- relationalBone_6 = relationalBone(descr="relationalBone_6", required=False, readOnly=True, visible=True, multiple=False, module="feedentry", kind="feedentry")
- relationalBone_7 = relationalBone(descr="relationalBone_7", required=True, readOnly=True, visible=True, multiple=False, module="feedentry", kind="feedentry")
- relationalBone_8 = relationalBone(descr="relationalBone_8", required=False, readOnly=False, visible=False, multiple=True, module="feedentry", kind="feedentry")
- # relationalBone_9 = relationalBone(descr="relationalBone_9", required=True, readOnly=False, visible=False, multiple=True, module="feedentry", kind="feedentry")
- relationalBone_10 = relationalBone(descr="relationalBone_10", required=False, readOnly=True, visible=False, multiple=True, module="feedentry", kind="feedentry")
- relationalBone_11 = relationalBone(descr="relationalBone_11", required=False, readOnly=False, visible=True, multiple=True, module="feedentry", kind="feedentry")
- # relationalBone_12 = relationalBone(descr="relationalBone_12", required=True, readOnly=True, visible=False, multiple=True, module="feedentry", kind="feedentry")
- relationalBone_13 = relationalBone(descr="relationalBone_13", required=True, readOnly=False, visible=True, multiple=True, module="feedentry", kind="feedentry")
- relationalBone_14 = relationalBone(descr="relationalBone_14", required=False, readOnly=True, visible=True, multiple=True, module="feedentry", kind="feedentry")
- relationalBone_15 = relationalBone(descr="relationalBone_15", required=True, readOnly=True, visible=True, multiple=True, module="feedentry", kind="feedentry")
- relationalBone_16 = relationalBone(descr="relationalBone_16", required=True, readOnly=True, visible=True, multiple=True, module="feedentry", kind="feedentry")
- relationalBone_17 = relationalBone(descr="relationalBone_17", required=True, readOnly=False, visible=True, multiple=True, module="feedentry", kind="feedentry", using=StringRelSkel)
- selectBone_0 = selectBone(descr="selectBone_0", required=False, readOnly=False, visible=False, multiple=False, values={'true': '"Option A"', 'false': '"Option B"'})
- # selectBone_1 = selectBone(descr="selectBone_1", required=True, readOnly=False, visible=False, multiple=False, values={'true': '"Option A"', 'false': '"Option B"'})
- selectBone_2 = selectBone(descr="selectBone_2", required=False, readOnly=True, visible=False, multiple=False, values={'true': '"Option A"', 'false': '"Option B"'})
- selectBone_3 = selectBone(descr="selectBone_3", required=False, readOnly=False, visible=True, multiple=False, values={'true': '"Option A"', 'false': '"Option B"'})
- # selectBone_4 = selectBone(descr="selectBone_4", required=True, readOnly=True, visible=False, multiple=False, values={'true': '"Option A"', 'false': '"Option B"'})
- selectBone_5 = selectBone(descr="selectBone_5", required=True, readOnly=False, visible=True, multiple=False, values={'true': '"Option A"', 'false': '"Option B"'})
- selectBone_6 = selectBone(descr="selectBone_6", required=False, readOnly=True, visible=True, multiple=False, values={'true': '"Option A"', 'false': '"Option B"'})
- selectBone_7 = selectBone(descr="selectBone_7", required=True, readOnly=True, visible=True, multiple=False, values={'true': '"Option A"', 'false': '"Option B"'})
- selectBone_8 = selectBone(descr="selectBone_8", required=False, readOnly=False, visible=False, multiple=True, values={'true': '"Option A"', 'false': '"Option B"'})
- # selectBone_9 = selectBone(descr="selectBone_9", required=True, readOnly=False, visible=False, multiple=True, values={'true': '"Option A"', 'false': '"Option B"'})
- selectBone_10 = selectBone(descr="selectBone_10", required=False, readOnly=True, visible=False, multiple=True, values={'true': '"Option A"', 'false': '"Option B"'})
- selectBone_11 = selectBone(descr="selectBone_11", required=False, readOnly=False, visible=True, multiple=True, values={'true': '"Option A"', 'false': '"Option B"'})
- # selectBone_12 = selectBone(descr="selectBone_12", required=True, readOnly=True, visible=False, multiple=True, values={'true': '"Option A"', 'false': '"Option B"'})
- selectBone_13 = selectBone(descr="selectBone_13", required=True, readOnly=False, visible=True, multiple=True, values={'true': '"Option A"', 'false': '"Option B"'})
- selectBone_14 = selectBone(descr="selectBone_14", required=False, readOnly=True, visible=True, multiple=True, values={'true': '"Option A"', 'false': '"Option B"'})
- selectBone_15 = selectBone(descr="selectBone_15", required=True, readOnly=True, visible=True, multiple=True, values={'true': '"Option A"', 'false': '"Option B"'})
- # selectCountryBone_0 = selectCountryBone(descr="selectCountryBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # selectCountryBone_1 = selectCountryBone(descr="selectCountryBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # selectCountryBone_2 = selectCountryBone(descr="selectCountryBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # selectCountryBone_3 = selectCountryBone(descr="selectCountryBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # selectCountryBone_4 = selectCountryBone(descr="selectCountryBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # selectCountryBone_5 = selectCountryBone(descr="selectCountryBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # selectCountryBone_6 = selectCountryBone(descr="selectCountryBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # selectCountryBone_7 = selectCountryBone(descr="selectCountryBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # selectCountryBone_8 = selectCountryBone(descr="selectCountryBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # selectCountryBone_9 = selectCountryBone(descr="selectCountryBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # selectCountryBone_10 = selectCountryBone(descr="selectCountryBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # selectCountryBone_11 = selectCountryBone(descr="selectCountryBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # selectCountryBone_12 = selectCountryBone(descr="selectCountryBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # selectCountryBone_13 = selectCountryBone(descr="selectCountryBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # selectCountryBone_14 = selectCountryBone(descr="selectCountryBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # selectCountryBone_15 = selectCountryBone(descr="selectCountryBone_15", required=True, readOnly=True, visible=True, multiple=True)
- # spatialBone_0 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # spatialBone_1 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # spatialBone_2 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # spatialBone_3 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # spatialBone_4 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # spatialBone_5 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # spatialBone_6 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # spatialBone_7 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # spatialBone_8 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # spatialBone_9 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # spatialBone_10 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # spatialBone_11 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # spatialBone_12 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # spatialBone_13 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # spatialBone_14 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # spatialBone_15 = spatialBone((50, 57), (7, 0), (10, 10), descr="spatialBone_15", required=True, readOnly=True, visible=True, multiple=True)
- stringBone_0 = stringBone(descr="stringBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # stringBone_1 = stringBone(descr="stringBone_1", required=True, readOnly=False, visible=False, multiple=False)
- stringBone_2 = stringBone(descr="stringBone_2", required=False, readOnly=True, visible=False, multiple=False)
- stringBone_3 = stringBone(descr="stringBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # stringBone_4 = stringBone(descr="stringBone_4", required=True, readOnly=True, visible=False, multiple=False)
- stringBone_5 = stringBone(descr="stringBone_5", required=True, readOnly=False, visible=True, multiple=False)
- stringBone_6 = stringBone(descr="stringBone_6", required=False, readOnly=True, visible=True, multiple=False)
- stringBone_7 = stringBone(descr="stringBone_7", required=True, readOnly=True, visible=True, multiple=False)
- stringBone_8 = stringBone(descr="stringBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # stringBone_9 = stringBone(descr="stringBone_9", required=True, readOnly=False, visible=False, multiple=True)
- stringBone_10 = stringBone(descr="stringBone_10", required=False, readOnly=True, visible=False, multiple=True)
- stringBone_11 = stringBone(descr="stringBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # stringBone_12 = stringBone(descr="stringBone_12", required=True, readOnly=True, visible=False, multiple=True)
- stringBone_13 = stringBone(descr="stringBone_13", required=True, readOnly=False, visible=True, multiple=True)
- stringBone_14 = stringBone(descr="stringBone_14", required=False, readOnly=True, visible=True, multiple=True)
- stringBone_15 = stringBone(descr="stringBone_15", required=True, readOnly=True, visible=True, multiple=True)
- # treeLeafBone_0 = treeLeafBone(descr="treeLeafBone_0", required=False, readOnly=False, visible=False, multiple=False, module="file", kind="file")
- # treeLeafBone_1 = treeLeafBone(descr="treeLeafBone_1", required=True, readOnly=False, visible=False, multiple=False, module="file", kind="file")
- # treeLeafBone_2 = treeLeafBone(descr="treeLeafBone_2", required=False, readOnly=True, visible=False, multiple=False, module="file", kind="file")
- # treeLeafBone_3 = treeLeafBone(descr="treeLeafBone_3", required=False, readOnly=False, visible=True, multiple=False, module="file", kind="file")
- # treeLeafBone_4 = treeLeafBone(descr="treeLeafBone_4", required=True, readOnly=True, visible=False, multiple=False, module="file", kind="file")
- # treeLeafBone_5 = treeLeafBone(descr="treeLeafBone_5", required=True, readOnly=False, visible=True, multiple=False, module="file", kind="file")
- # treeLeafBone_6 = treeLeafBone(descr="treeLeafBone_6", required=False, readOnly=True, visible=True, multiple=False, module="file", kind="file")
- # treeLeafBone_7 = treeLeafBone(descr="treeLeafBone_7", required=True, readOnly=True, visible=True, multiple=False, module="file", kind="file")
- # treeLeafBone_8 = treeLeafBone(descr="treeLeafBone_8", required=False, readOnly=False, visible=False, multiple=True, module="file", kind="file")
- # treeLeafBone_9 = treeLeafBone(descr="treeLeafBone_9", required=True, readOnly=False, visible=False, multiple=True, module="file", kind="file")
- # treeLeafBone_10 = treeLeafBone(descr="treeLeafBone_10", required=False, readOnly=True, visible=False, multiple=True, module="file", kind="file")
- # treeLeafBone_11 = treeLeafBone(descr="treeLeafBone_11", required=False, readOnly=False, visible=True, multiple=True, module="file", kind="file")
- # treeLeafBone_12 = treeLeafBone(descr="treeLeafBone_12", required=True, readOnly=True, visible=False, multiple=True, module="file", kind="file")
- # treeLeafBone_13 = treeLeafBone(descr="treeLeafBone_13", required=True, readOnly=False, visible=True, multiple=True, module="file", kind="file")
- # treeLeafBone_14 = treeLeafBone(descr="treeLeafBone_14", required=False, readOnly=True, visible=True, multiple=True, module="file", kind="file")
- # treeLeafBone_15 = treeLeafBone(descr="treeLeafBone_15", required=True, readOnly=True, visible=True, multiple=True, module="file", kind="file")
- # treeNodeBone_0 = treeNodeBone(descr="treeNodeBone_0", required=False, readOnly=False, visible=False, multiple=False, module="file", kind="file")
- # treeNodeBone_1 = treeNodeBone(descr="treeNodeBone_1", required=True, readOnly=False, visible=False, multiple=False, module="file", kind="file")
- # treeNodeBone_2 = treeNodeBone(descr="treeNodeBone_2", required=False, readOnly=True, visible=False, multiple=False, module="file", kind="file")
- # treeNodeBone_3 = treeNodeBone(descr="treeNodeBone_3", required=False, readOnly=False, visible=True, multiple=False, module="file", kind="file")
- # treeNodeBone_4 = treeNodeBone(descr="treeNodeBone_4", required=True, readOnly=True, visible=False, multiple=False, module="file", kind="file")
- # treeNodeBone_5 = treeNodeBone(descr="treeNodeBone_5", required=True, readOnly=False, visible=True, multiple=False, module="file", kind="file")
- # treeNodeBone_6 = treeNodeBone(descr="treeNodeBone_6", required=False, readOnly=True, visible=True, multiple=False, module="file", kind="file")
- # treeNodeBone_7 = treeNodeBone(descr="treeNodeBone_7", required=True, readOnly=True, visible=True, multiple=False, module="file", kind="file")
- # treeNodeBone_8 = treeNodeBone(descr="treeNodeBone_8", required=False, readOnly=False, visible=False, multiple=True, module="file", kind="file")
- # treeNodeBone_9 = treeNodeBone(descr="treeNodeBone_9", required=True, readOnly=False, visible=False, multiple=True, module="file", kind="file")
- # treeNodeBone_10 = treeNodeBone(descr="treeNodeBone_10", required=False, readOnly=True, visible=False, multiple=True, module="file", kind="file")
- # treeNodeBone_11 = treeNodeBone(descr="treeNodeBone_11", required=False, readOnly=False, visible=True, multiple=True, module="file", kind="file")
- # treeNodeBone_12 = treeNodeBone(descr="treeNodeBone_12", required=True, readOnly=True, visible=False, multiple=True, module="file", kind="file")
- # treeNodeBone_13 = treeNodeBone(descr="treeNodeBone_13", required=True, readOnly=False, visible=True, multiple=True, module="file", kind="file")
- # treeNodeBone_14 = treeNodeBone(descr="treeNodeBone_14", required=False, readOnly=True, visible=True, multiple=True, module="file", kind="file")
- # treeNodeBone_15 = treeNodeBone(descr="treeNodeBone_15", required=True, readOnly=True, visible=True, multiple=True, module="file", kind="file")
- # userBone_0 = userBone(descr="userBone_0", required=False, readOnly=False, visible=False, multiple=False)
- # userBone_1 = userBone(descr="userBone_1", required=True, readOnly=False, visible=False, multiple=False)
- # userBone_2 = userBone(descr="userBone_2", required=False, readOnly=True, visible=False, multiple=False)
- # userBone_3 = userBone(descr="userBone_3", required=False, readOnly=False, visible=True, multiple=False)
- # userBone_4 = userBone(descr="userBone_4", required=True, readOnly=True, visible=False, multiple=False)
- # userBone_5 = userBone(descr="userBone_5", required=True, readOnly=False, visible=True, multiple=False)
- # userBone_6 = userBone(descr="userBone_6", required=False, readOnly=True, visible=True, multiple=False)
- # userBone_7 = userBone(descr="userBone_7", required=True, readOnly=True, visible=True, multiple=False)
- # userBone_8 = userBone(descr="userBone_8", required=False, readOnly=False, visible=False, multiple=True)
- # userBone_9 = userBone(descr="userBone_9", required=True, readOnly=False, visible=False, multiple=True)
- # userBone_10 = userBone(descr="userBone_10", required=False, readOnly=True, visible=False, multiple=True)
- # userBone_11 = userBone(descr="userBone_11", required=False, readOnly=False, visible=True, multiple=True)
- # userBone_12 = userBone(descr="userBone_12", required=True, readOnly=True, visible=False, multiple=True)
- # userBone_13 = userBone(descr="userBone_13", required=True, readOnly=False, visible=True, multiple=True)
- # userBone_14 = userBone(descr="userBone_14", required=False, readOnly=True, visible=True, multiple=True)
- # userBone_15 = userBone(descr="userBone_15", required=True, readOnly=True, visible=True, multiple=True)
diff --git a/viur-project.md b/viur-project.md
index a0ac63b..48f645d 100644
--- a/viur-project.md
+++ b/viur-project.md
@@ -23,6 +23,37 @@ After that, you always can locally fire-up your new ViUR project with `pipenv ru
To deploy your project, use `pipenv run viur deploy app`, with additional options.
+## Setting up Google Login
+
+1. https://console.cloud.google.com/apis/credentials/consent?project={{app_id}}
+2. Internal -> Create
+3. App name: "{{app_id}}" or your project's name
+4. User-support email (your Gcloud account mail)
+5. Authorized domain 1: {{app_id}}.appspot.com
+6. Developer contact: (you contact mail)
+7. Save & continue
+8. https://console.cloud.google.com/apis/credentials/oauthclient?project={{app_id}}
+9. "Web Application" - "Web client 1"
+10. Configure authorized JavaScript origins
+ - https://{{app_id}}.appspot.com
+ - http://localhost:8080
+ - http://localhost:8081 (for VueJS development)
+ - http://localhost:8082 (for VueJS development)
+ - http://localhost
+11. Configure authorized redirect URIs
+ - https://{{app_id}}.appspot.com
+ - http://localhost:8080
+ - http://localhost:8081 (for VueJS development)
+ - http://localhost:8082 (for VueJS development)
+ - http://localhost
+12. Create
+13. Copy the client id and assign it to `conf.user.google_client_id` in `main.py` or,
+ when you have multiple projects with the same code-base, you can also store this client id as a secret value and use the same
+ identifier. To do this, follow these steps:
+ - https://console.cloud.google.com/security/secret-manager/create?project={{app_id}}
+ - Name: google-clientid
+ - Paste copyied client id and set `conf.user.google_client_id = secret.get("google-clientid")` in your `main.py`
+14. Optionally set `conf.user.google_gsuite_domains` to authorized Gsuite domains that allow for User registration in your project
## Contact