tol-sdk 1.6.37__py3-none-any.whl → 1.7.0__py3-none-any.whl
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.
- tol/api_base/blueprint.py +29 -6
- tol/api_base/controller.py +14 -5
- tol/api_client/api_datasource.py +15 -7
- tol/api_client/client.py +12 -6
- tol/api_client/converter.py +22 -8
- tol/api_client/factory.py +5 -3
- tol/api_client/view.py +75 -205
- tol/cli/cli.py +1 -1
- tol/core/__init__.py +1 -0
- tol/core/http_client.py +4 -2
- tol/core/operator/cursor.py +5 -3
- tol/core/operator/detail_getter.py +7 -15
- tol/core/operator/list_getter.py +3 -1
- tol/core/operator/page_getter.py +3 -1
- tol/core/operator/relational.py +9 -4
- tol/core/requested_fields.py +189 -0
- tol/elastic/elastic_datasource.py +2 -1
- tol/flows/converters/benchling_extraction_to_elastic_extraction_converter.py +25 -6
- tol/flows/converters/benchling_extraction_to_elastic_sequencing_request_converter.py +28 -7
- tol/flows/converters/benchling_sequencing_request_to_elastic_sequencing_request_converter.py +30 -9
- tol/flows/converters/benchling_tissue_prep_to_elastic_tissue_prep_converter.py +14 -3
- tol/flows/converters/elastic_sample_to_benchling_tissue_update_converter.py +1 -1
- tol/flows/converters/elastic_sample_to_elastic_sequencing_request_update_converter.py +4 -1
- tol/flows/converters/elastic_tolid_to_elastic_genome_note_update_converter.py +4 -1
- tol/flows/converters/elastic_tolid_to_elastic_sample_update_converter.py +4 -1
- tol/sources/sts.py +6 -2
- tol/sql/database.py +80 -44
- tol/sql/factory.py +2 -2
- tol/sql/filter.py +22 -20
- tol/sql/model.py +43 -38
- tol/sql/relationship.py +1 -1
- tol/sql/sql_converter.py +49 -142
- tol/sql/sql_datasource.py +85 -180
- tol/sql/{board → standard}/__init__.py +1 -1
- tol/sql/standard/factory.py +549 -0
- {tol_sdk-1.6.37.dist-info → tol_sdk-1.7.0.dist-info}/METADATA +1 -1
- {tol_sdk-1.6.37.dist-info → tol_sdk-1.7.0.dist-info}/RECORD +41 -42
- tol/sql/board/factory.py +0 -341
- tol/sql/loader/__init__.py +0 -6
- tol/sql/loader/factory.py +0 -246
- {tol_sdk-1.6.37.dist-info → tol_sdk-1.7.0.dist-info}/WHEEL +0 -0
- {tol_sdk-1.6.37.dist-info → tol_sdk-1.7.0.dist-info}/entry_points.txt +0 -0
- {tol_sdk-1.6.37.dist-info → tol_sdk-1.7.0.dist-info}/licenses/LICENSE +0 -0
- {tol_sdk-1.6.37.dist-info → tol_sdk-1.7.0.dist-info}/top_level.txt +0 -0
|
@@ -6,8 +6,8 @@ tol/actions/action.py,sha256=HlfUsfVGd2vuNAwD_01yo1i32nh6UNrt_ytcY2ladgM,651
|
|
|
6
6
|
tol/actions/upsert_action.py,sha256=DnSz1LhHibF0WcK6Qht5eLIGi3PPXc6GSRsd8Y2dZBE,1366
|
|
7
7
|
tol/api_base/__init__.py,sha256=xv9kkAyb1Q5vhKgq6f-JpY7lIAla51U-gIpA5U1OfkA,312
|
|
8
8
|
tol/api_base/action.py,sha256=l3MzD3jSDdYiZs-HCT4YEsXkp34X26k6yWugXrRB2XU,6575
|
|
9
|
-
tol/api_base/blueprint.py,sha256=
|
|
10
|
-
tol/api_base/controller.py,sha256=
|
|
9
|
+
tol/api_base/blueprint.py,sha256=lyNXgyyZ7kEL5uuIuSNkardFy8ZcDIfftt8c5xiRjyA,19061
|
|
10
|
+
tol/api_base/controller.py,sha256=5Fp2FobjXXPlongu1j7adGJKlSVufW0_jpk_wZIMRa4,26818
|
|
11
11
|
tol/api_base/pipeline_steps.py,sha256=lz888M2cF-5z-EkGK_sWfZf1otnYRmgnNuC0WUqI-po,5667
|
|
12
12
|
tol/api_base/system.py,sha256=c47sbcNaCd3teiJLO-Zwg1cUNvfCvRO4GmKzAMNxZrw,1219
|
|
13
13
|
tol/api_base/auth/__init__.py,sha256=LNbVtQDlzKWzLoCmxAPSIAcM6mlVMnn0Aj9HFUudseo,460
|
|
@@ -30,15 +30,15 @@ tol/api_base/misc/list_get_parameters.py,sha256=6DtUgfKPTok3utKPOxceJdwV_ZnJ5nis
|
|
|
30
30
|
tol/api_base/misc/relation_url.py,sha256=qfo-okp8Gv9-PEDghMfGZ2pHdYbHRhohvA9v3Govtlo,1127
|
|
31
31
|
tol/api_base/misc/stats_parameters.py,sha256=IVpHqUeGQyjuih59jwqT-fIQMCBeESi2T9b4r9i4J28,1721
|
|
32
32
|
tol/api_client/__init__.py,sha256=58SAywuMrIUCBAY9us_d_RLTMnaUTYWWts0LRQC5wLo,187
|
|
33
|
-
tol/api_client/api_datasource.py,sha256=
|
|
34
|
-
tol/api_client/client.py,sha256=
|
|
35
|
-
tol/api_client/converter.py,sha256=
|
|
33
|
+
tol/api_client/api_datasource.py,sha256=GOHvAmFzrHdux2wxY-MwUbp6eWbbS01L7FvmVyXJVZM,14330
|
|
34
|
+
tol/api_client/client.py,sha256=hy1MT1iDCDDOOZfhsD5-8vA7ksf56BIoe96UCiqQ06Y,13965
|
|
35
|
+
tol/api_client/converter.py,sha256=X6VPk4nrvmXF8EOXy36sn1nvPvYTBYKZ66ofxyQbaY8,4681
|
|
36
36
|
tol/api_client/exception.py,sha256=MkvJaIyRVCzQ2rKOYnCOcT747mpOeQwGJJl3Kkb1BsQ,3999
|
|
37
|
-
tol/api_client/factory.py,sha256=
|
|
37
|
+
tol/api_client/factory.py,sha256=DIYFmFsQlwOCrUfexiEMBN3ovnreMqUFYNU8hcNvSao,3405
|
|
38
38
|
tol/api_client/filter.py,sha256=D49RIai5Yj4CiQvIkgaEIXdw_oSU7CD5cn9SdXWRYXU,1474
|
|
39
39
|
tol/api_client/parser.py,sha256=67GxGyhb5goVhXQqry7-YKvh9YozC_MkQMFiaAeHPKk,5423
|
|
40
40
|
tol/api_client/validate.py,sha256=9wFZotTJ4fI21BdO5AuMZok0rDQ4s8zM_WojLdVvA0A,3071
|
|
41
|
-
tol/api_client/view.py,sha256=
|
|
41
|
+
tol/api_client/view.py,sha256=a0TzPtXhJfVv70exJ86BEZv_oaeXDyitKsj6R5sG3wE,6102
|
|
42
42
|
tol/barcodes/__init__.py,sha256=k9KoBO0xJyxg1kanLrN0E3HuVSbbpfSInGEsWX-8UsY,214
|
|
43
43
|
tol/barcodes/main.py,sha256=QxueF2AdrclIaQuu7W4lb4eF5tU_l-p3UMsDFIYgCfo,6213
|
|
44
44
|
tol/benchling/__init__.py,sha256=9VIL6PBxvZRaBrN1j2Di75MdEY261kEHs_D-lUutIlg,229
|
|
@@ -72,7 +72,7 @@ tol/bold/converter.py,sha256=SeC7Cb0QwmGELnNvQy6w3q70tAcVGroHBd-t0mv5LPY,1087
|
|
|
72
72
|
tol/bold/factory.py,sha256=783ThWMUlAmRvePIYIAme6377i0y8cKTIpXuue21gkQ,2420
|
|
73
73
|
tol/bold/parser.py,sha256=l78Ieqx_VJqv_H7885fP-A5xM-_xjSihBf6s6x09aXY,2958
|
|
74
74
|
tol/cli/__init__.py,sha256=6rQYG2NpxlwxHiEPLd43fL9xvnSTDLQ6PdjhEzN1roc,113
|
|
75
|
-
tol/cli/cli.py,sha256=
|
|
75
|
+
tol/cli/cli.py,sha256=6okzO4WlT7N9cAnfpHbrCl7qS9DVRHUTET66hszYCSQ,14745
|
|
76
76
|
tol/converter/__init__.py,sha256=JuJTW614n94vCH00whZH_Lc5cktgqFDACRY_A36P5g8,126
|
|
77
77
|
tol/converter/yaml/__init__.py,sha256=S5dzBOFSW0pCofMHR-YbgKYrkDE2wmW20Y-ksvoSfEU,170
|
|
78
78
|
tol/converter/yaml/model.py,sha256=YaAmsdXhWpm0465jJV_tngTRbz77hWC8qwtgNvwLzZI,1896
|
|
@@ -83,7 +83,7 @@ tol/copo/converter.py,sha256=DnJvIysyVLa1b4hIK0o146ruuxKBYhEDN4kxKxl7Uuc,1127
|
|
|
83
83
|
tol/copo/copo_datasource.py,sha256=DYOkaUOO2bdW1rmblci_rt4nBo_1Kb7ztxnthbkC-hA,5193
|
|
84
84
|
tol/copo/factory.py,sha256=fzYpPxro6M9GHER4uyJ5dugxDobPskc-f6RNZpLc4ZY,2219
|
|
85
85
|
tol/copo/parser.py,sha256=FRPF0DQNbHTN_nrar80V9a_-3AapXqUErB47zEP0VUQ,2863
|
|
86
|
-
tol/core/__init__.py,sha256=
|
|
86
|
+
tol/core/__init__.py,sha256=svFcEWLhqgA0hLfFkrN9xWaSLqkC2MDHrBSnUjCGYGE,1124
|
|
87
87
|
tol/core/attribute_metadata.py,sha256=wYD3NXDdStrpkUZoyTUiEpp7c14f7MLIcyooT1G4GEQ,4091
|
|
88
88
|
tol/core/core_converter.py,sha256=Gn4J507BtqDjnOWV2MFRYGz8YElJAKQItmnCrD72s7k,4504
|
|
89
89
|
tol/core/data_loader.py,sha256=k-ET1nIohIz6PcADbEn9Y7k9TupoiBYxKDkcAl_9pGY,14710
|
|
@@ -96,8 +96,9 @@ tol/core/datasource_error.py,sha256=TqfqaPANG0gishadhA7myCmTO1Fg9u7hVZOvsY6BdAo,
|
|
|
96
96
|
tol/core/datasource_filter.py,sha256=RY2S9kTx0XwdrFRSE2n2GohB9__fKGzFVsZrkN5hzQk,726
|
|
97
97
|
tol/core/datasource_utils.py,sha256=18mwvFmtJL73_mxtFb56rKXZCGCtZFoEb8sWFKn3Yf0,6232
|
|
98
98
|
tol/core/factory.py,sha256=e0jXNS9NJvSrsbKUe9j19CElaSnKIB0j2pPCpcMa8wU,9273
|
|
99
|
-
tol/core/http_client.py,sha256=
|
|
99
|
+
tol/core/http_client.py,sha256=05Wa_ySmpm_lC8OkxqXkq6jer0t693GexpaKNQBHufI,2244
|
|
100
100
|
tol/core/relationship.py,sha256=etdyCjLbfi2tgkaqzE6cntpNtTzgT_jOPGeNKmPu5yc,4624
|
|
101
|
+
tol/core/requested_fields.py,sha256=QFNky8QmT1Cmfn42EYPciwbCueJ0DVQNKkP0Vz-_7Jk,6715
|
|
101
102
|
tol/core/session.py,sha256=6AohamIEfB8oV3Z414ishKqmlTgVfUaGYWzvxLgZgM4,3803
|
|
102
103
|
tol/core/validate.py,sha256=84etPczrGDkqdrNnj4GSrPAeKxYcz8qUy5szJa2QRGY,4082
|
|
103
104
|
tol/core/operator/__init__.py,sha256=ircyLdj45IlaL5k0cDzWHjEr-_66BAx7YRbuEvWF30k,1826
|
|
@@ -105,24 +106,24 @@ tol/core/operator/_filterable.py,sha256=61qr-58ZPHWdWl4XKatjW1GPAhN-oqfjRpVtHHki
|
|
|
105
106
|
tol/core/operator/_writer.py,sha256=eO4qe4myLjScCRnXeILU30MPOLyQiAZbIBQQ_awqB5I,1725
|
|
106
107
|
tol/core/operator/aggregator.py,sha256=Q1Q_wnSfpxkkedqyzvXSYDiX87JgHc3YmbcAgNk-M5E,851
|
|
107
108
|
tol/core/operator/counter.py,sha256=aD7CRcSfHUfH-ASivJhUSncbLc8gvwdbQUDONjHp4oo,765
|
|
108
|
-
tol/core/operator/cursor.py,sha256=
|
|
109
|
+
tol/core/operator/cursor.py,sha256=G8RkuLpQS6vDAXhE2D1WXLSEuGDkqv3YwSrW_QhGTlc,3960
|
|
109
110
|
tol/core/operator/declare.py,sha256=W1jngGKNy-5D8T8nt_-6lpfOFTa-ilVr9YalRdJNG3w,333
|
|
110
111
|
tol/core/operator/deleter.py,sha256=v8C6aBSQGwVCYmZ_PIeGVQExSyilQi5C-6G-wuACCBg,755
|
|
111
|
-
tol/core/operator/detail_getter.py,sha256=
|
|
112
|
+
tol/core/operator/detail_getter.py,sha256=0O4VXWqupSuAtVrrib0dWZ2B78IVGokm1b3hzwE3VQI,2785
|
|
112
113
|
tol/core/operator/enricher.py,sha256=ijJvE8aYCIVsOpmU2EHiTB8NPGwnGucebcDccm5o7qg,4079
|
|
113
114
|
tol/core/operator/enum.py,sha256=JsJkj7LIMLoCnx2n1rdSX9LxGK9bbfoloXVie4rR_3M,1651
|
|
114
115
|
tol/core/operator/group_statter.py,sha256=jZ45J3OGtypOfosWChWAwe05POpBejaoDNAO2qJP1GM,897
|
|
115
116
|
tol/core/operator/inserter.py,sha256=UxqjR0hg7srWVlNYwgEShQpeGuIK6EnM-bS_MxS-ruE,1441
|
|
116
|
-
tol/core/operator/list_getter.py,sha256
|
|
117
|
+
tol/core/operator/list_getter.py,sha256=PwSxZ62v3obRh98AImDemtY03vLPz_qBez2ly16Kg6I,1024
|
|
117
118
|
tol/core/operator/operator_config.py,sha256=c-rWwrP4RwE1ie7RuCzOwwUWpBoh4Iuj-sqkr3pAazg,2938
|
|
118
|
-
tol/core/operator/page_getter.py,sha256=
|
|
119
|
-
tol/core/operator/relational.py,sha256=
|
|
119
|
+
tol/core/operator/page_getter.py,sha256=jqzIogU7YlQoNxVbKkwuZX-prwjm8iYv1pGGkUUCzGI,1267
|
|
120
|
+
tol/core/operator/relational.py,sha256=B09uIFchwzklq83hui0AVG4FMiwN9Dc4FbQ4N60DGUE,4907
|
|
120
121
|
tol/core/operator/statter.py,sha256=qCyJ6AOeyvDy5t0tQEJr6-p-5Rw6vVwlQ-PXTmHXn8c,796
|
|
121
122
|
tol/core/operator/summariser.py,sha256=l7kmcvI_s9TkLGQf9XModrMziqvxKH6jdyo-mROUUxU,5823
|
|
122
123
|
tol/core/operator/updater.py,sha256=uLx02Mw77c6sHCw76pdJIArlGbk6N7HDv4FUf0C542w,1055
|
|
123
124
|
tol/core/operator/upserter.py,sha256=0sAx13I-_YiXnzGC7t8N23BZFiil9FxT9S0WJ8Z6EKk,2603
|
|
124
125
|
tol/elastic/__init__.py,sha256=5zOZ83jkup26AHrTEhLw4Pve548uN3gnzC6fe_mtm-Q,166
|
|
125
|
-
tol/elastic/elastic_datasource.py,sha256=
|
|
126
|
+
tol/elastic/elastic_datasource.py,sha256=XPMr5sn64qPMe9H6Rf6xd-6TgMagVJzaZ2J1wZfRvwM,42041
|
|
126
127
|
tol/elastic/runtime_fields.py,sha256=08N8JnbF1U2znSK9mpuCoyQjxiCShuxsggljptfCVoE,4479
|
|
127
128
|
tol/eln/__init__.py,sha256=WoHMxbDVG6zP1pqxmieXnUDOUESlD8U9DuSlPNS6ns0,250
|
|
128
129
|
tol/eln/auth.py,sha256=1f1O7FaunBGzj0nVNd55K7zaw10mQrZQJe0xXP-a024,394
|
|
@@ -148,12 +149,12 @@ tol/flows/secrets.py,sha256=1mlbsxaahzYRfVAx3XdztHOmUCtDMSJDzHysdbaCtj0,352
|
|
|
148
149
|
tol/flows/sequencing_submissions.py,sha256=ukz_y5be-BCBN2y3JPQ2EK6b3jwOCh-187j-jnw3EUY,11027
|
|
149
150
|
tol/flows/converters/__init__.py,sha256=t4Y7jldbvi-bVC-oPkQOlFPrcqblYRvX4D6SpnbcqKk,5928
|
|
150
151
|
tol/flows/converters/benchling_entity_to_benchling_worklist_item_converter_factory.py,sha256=PN27fcvN4JLBnLrtPPAot1cWjAwPQHVcIDoMfPDeKzU,1210
|
|
151
|
-
tol/flows/converters/benchling_extraction_to_elastic_extraction_converter.py,sha256=
|
|
152
|
-
tol/flows/converters/benchling_extraction_to_elastic_sequencing_request_converter.py,sha256=
|
|
152
|
+
tol/flows/converters/benchling_extraction_to_elastic_extraction_converter.py,sha256=S8pbmIeKlcXrLPRJHYBUGP0-Q7jTOV2QQk2TeA2naWo,1966
|
|
153
|
+
tol/flows/converters/benchling_extraction_to_elastic_sequencing_request_converter.py,sha256=2RiyRvGRSWzpUwEI4p-s0afshJpFUUxPqv2z-nyDSVg,1992
|
|
153
154
|
tol/flows/converters/benchling_sample_casm_to_sts_sample_converter.py,sha256=AIfuLpeSLN1OEAxPxr89C6zS8rXrvo4MBSnwzK27Rgo,1252
|
|
154
155
|
tol/flows/converters/benchling_sample_to_elastic_sample_converter.py,sha256=mGeNBiUI8xWMVjyfVbs2ywpjbJx2-WhbLLnAPfmsWac,1503
|
|
155
|
-
tol/flows/converters/benchling_sequencing_request_to_elastic_sequencing_request_converter.py,sha256=
|
|
156
|
-
tol/flows/converters/benchling_tissue_prep_to_elastic_tissue_prep_converter.py,sha256=
|
|
156
|
+
tol/flows/converters/benchling_sequencing_request_to_elastic_sequencing_request_converter.py,sha256=IOytX0vHW0Ittd5XCLfcNeMtOuMg7LN20VJLzeg51xw,2406
|
|
157
|
+
tol/flows/converters/benchling_tissue_prep_to_elastic_tissue_prep_converter.py,sha256=0hcypPlef4xTBC1wLyGUTrXsNHea2aMSzBun3F45fRo,1448
|
|
157
158
|
tol/flows/converters/benchling_tissue_to_sts_sample_converter.py,sha256=DM9JFeqrjkH27GagYGStn5HDOw6ynbv3FM9GpNiAMIg,1194
|
|
158
159
|
tol/flows/converters/bioscan_extra_pantheon_species_to_elastic_sample_update_converter.py,sha256=qaLyHVpOItM7DoOPera8-DHbylY9Ppx-2CjPyqvPUko,611
|
|
159
160
|
tol/flows/converters/bioscan_image_to_elastic_sample_update_converter.py,sha256=uScRMILm0SKpXyzA-NRWQukcESZoPmVcn_EEiMNSOA8,2854
|
|
@@ -163,16 +164,16 @@ tol/flows/converters/bold_bin_to_elastic_sample_update_converter.py,sha256=viQNm
|
|
|
163
164
|
tol/flows/converters/bold_sample_to_elastic_sample_update_converter.py,sha256=eehTzW37x4IINKtMdXDrgSk-Iptx1k8_IR1WDNX1JtA,585
|
|
164
165
|
tol/flows/converters/elastic_object_to_portaldb_object_converter.py,sha256=YVUTYMvsLwDfq33WQbyIDl2d3D5jEcMxhqnGhx3HtQ4,1600
|
|
165
166
|
tol/flows/converters/elastic_sample_to_benchling_tissue_converter.py,sha256=zsybAg8ZyRI_ibTpkvSy7Zn2lNzUYmhc9SNMQQFj1HE,1103
|
|
166
|
-
tol/flows/converters/elastic_sample_to_benchling_tissue_update_converter.py,sha256=
|
|
167
|
+
tol/flows/converters/elastic_sample_to_benchling_tissue_update_converter.py,sha256=2Y_Kn8Z5_Sksgah9p4Q3Gy4Em3KOAG-rnzmy4_jtod0,3726
|
|
167
168
|
tol/flows/converters/elastic_sample_to_bold_sample_converter.py,sha256=eyowTZ-iNzI4aj7VgV6hBmmnAOhQ8AXdshnhNrM7vOE,3148
|
|
168
|
-
tol/flows/converters/elastic_sample_to_elastic_sequencing_request_update_converter.py,sha256=
|
|
169
|
+
tol/flows/converters/elastic_sample_to_elastic_sequencing_request_update_converter.py,sha256=nKYcLgZ2LV7A-uCeqfTm2AYFNRwcHpH5X6uxrcsYbgc,776
|
|
169
170
|
tol/flows/converters/elastic_sample_to_sts_sample_converter.py,sha256=X1_unJoxUYmZH8Yu1WbFoTQEdU9ZPngxF109PHJBWFI,1071
|
|
170
171
|
tol/flows/converters/elastic_sequencing_request_to_elastic_run_data_update_converter.py,sha256=NRpfnAOIbHB8g3bX-80XzJGGjl1v34UVUDkPAanP6nE,1262
|
|
171
172
|
tol/flows/converters/elastic_sequencing_request_to_sts_sequencing_request_converter.py,sha256=Ur0_lqH-kepHw16BjQBkvzyEWMJxm4rwea7G7BlVHMU,1038
|
|
172
173
|
tol/flows/converters/elastic_species_to_sts_species_converter.py,sha256=f2MIKncCmldAp6Dmy8OCf13yKubC6GK2DuFasUBM9KE,1433
|
|
173
174
|
tol/flows/converters/elastic_tolid_to_elastic_curation_update_converter.py,sha256=9Sn_QBp-1QfAuBmoRhTrib17vgve4oS0T7AdpH9T7xI,668
|
|
174
|
-
tol/flows/converters/elastic_tolid_to_elastic_genome_note_update_converter.py,sha256=
|
|
175
|
-
tol/flows/converters/elastic_tolid_to_elastic_sample_update_converter.py,sha256=
|
|
175
|
+
tol/flows/converters/elastic_tolid_to_elastic_genome_note_update_converter.py,sha256=5FN9DB3Bu83oLjHkI8PG6CAE5NNFYZ7xEx6Q9PuLRpQ,762
|
|
176
|
+
tol/flows/converters/elastic_tolid_to_elastic_sample_update_converter.py,sha256=ihe4s1cZIGAoEQCyoKTtUkY4-7G5XzBC-5FCZ1PREM0,1183
|
|
176
177
|
tol/flows/converters/gap_assembly_to_elastic_assembly_analysis_converter.py,sha256=dB49cmVS6nYrlTR_zUOxgyYNtbJYv7Q_B4Wzb7G7KjU,1382
|
|
177
178
|
tol/flows/converters/gap_assembly_to_elastic_assembly_converter.py,sha256=XK-es-F_prju48OSFEaQatgp8C3dkXFX9xP1dTkILDM,1595
|
|
178
179
|
tol/flows/converters/genome_notes_genome_note_to_elastic_genome_note_converter.py,sha256=AaUWbVTaWU-NXnUQPaPwI41TE7a-nC4zlg-jrWpPT2s,1166
|
|
@@ -274,7 +275,7 @@ tol/sources/portal_attributes.py,sha256=j_ZIZ8RHpgbRzOdHSOnzhAM9xA0HcwiAxuVgybVt
|
|
|
274
275
|
tol/sources/portaldb.py,sha256=A-eD_tpJ1cqyDEsnN_fEE67Zkl-WQnRcVlfodZzMcVw,545
|
|
275
276
|
tol/sources/prefect.py,sha256=16PrC_KfvxrsDzAcq7UvEBo4c6_n38NC23vHQeiljck,1046
|
|
276
277
|
tol/sources/sciops.py,sha256=qbdoNEo-BfWGw16sjANV7dxFRVMDJQlvaSZgofE8604,1129
|
|
277
|
-
tol/sources/sts.py,sha256=
|
|
278
|
+
tol/sources/sts.py,sha256=vd65QAYIM1lltHajqJPOrGg10ZCI7OUB2dbWNAlrAn8,749
|
|
278
279
|
tol/sources/sts_legacy.py,sha256=jWDM1_Jicxhay9UEOGh4lzeO0TIxuH8sa34TCn-GDWQ,440
|
|
279
280
|
tol/sources/tolid.py,sha256=ERSB5L_u7c4NtGYTzdGXWjiGiL58QJNC_0ij1MQMMEQ,663
|
|
280
281
|
tol/sources/tolqc.py,sha256=rzOs0SupBeyCw9MH56iwjfQczwrGhuRE-ctAWTgTGsw,663
|
|
@@ -284,29 +285,27 @@ tol/sources/uksi_qc.py.py,sha256=tH3BYSXI8ly2bHlAVJSOiBQ9AKF19-wLnh-X0CgnuRs,171
|
|
|
284
285
|
tol/sources/workflows.py,sha256=Ctp8W7Y0F_vzBGGRg_pOzjeHcWaEamsVlICTfvLkL-4,707
|
|
285
286
|
tol/sql/__init__.py,sha256=WLmcIiNhgzZlOtKYRyzE8qQTmT8XbGUAAfghoPYtgtQ,363
|
|
286
287
|
tol/sql/cast.py,sha256=7z8M6kbx7J9jPhsYd5510b0L-c_h6-LlcSHhIB1ygXg,683
|
|
287
|
-
tol/sql/database.py,sha256=
|
|
288
|
+
tol/sql/database.py,sha256=uLLy1om38eDnhHeSjFXcIWj485qSK1r4qM1ythzRNCs,24305
|
|
288
289
|
tol/sql/ds_session.py,sha256=SfIxHCRvUnmxj8Xk4ttVgR1_DGd6vQAVwPouaNQaa3c,807
|
|
289
290
|
tol/sql/exception.py,sha256=8c9KOVVNlLhqKU4CfsnxR7sd-JhEMnCk3TQ-s9JyogM,544
|
|
290
291
|
tol/sql/ext.py,sha256=9oYHxR3IXUaG17BwTLWFJ-CjdgFrlm3AclctZ1FP0MQ,1752
|
|
291
|
-
tol/sql/factory.py,sha256=
|
|
292
|
-
tol/sql/filter.py,sha256=
|
|
293
|
-
tol/sql/model.py,sha256=
|
|
294
|
-
tol/sql/relationship.py,sha256=
|
|
292
|
+
tol/sql/factory.py,sha256=cfHq1iH6wqqn5fI0yfOm59Tw6KiZqA7yXScCKBXBc1c,3408
|
|
293
|
+
tol/sql/filter.py,sha256=O711DnBG7RssQKwZ76fqA8Vm2IN7pzVrigxc1I2G4-Y,15417
|
|
294
|
+
tol/sql/model.py,sha256=Bi68mEsaWDSFxtouqMJqiG4wL6Ziv4uGo6UB9D8Odd4,12098
|
|
295
|
+
tol/sql/relationship.py,sha256=EClMgVx_If5nZV9MV99TQk7Wr7uACWetwQdWAliM5XI,2891
|
|
295
296
|
tol/sql/session.py,sha256=VmqTegr4L2X2zvaOJCpwSrkVRx8fc1RVL0drkL2MXu8,806
|
|
296
297
|
tol/sql/sort.py,sha256=ENrjHGgj4fZtXKmkdlkv1HRi1X14SVlcl-tp8Pu7G0k,2553
|
|
297
|
-
tol/sql/sql_converter.py,sha256=
|
|
298
|
-
tol/sql/sql_datasource.py,sha256=
|
|
298
|
+
tol/sql/sql_converter.py,sha256=h3vQz65MGeJutumSecUDxLuG403lWpJIKPwMO5ahQPI,4300
|
|
299
|
+
tol/sql/sql_datasource.py,sha256=jLPQSolGtKRKezjVnMrlj8YO6bLepyiFARMbDYEXuN8,16219
|
|
299
300
|
tol/sql/action/__init__.py,sha256=T1zAsCza_lvsNtXF1ecSLt9OFGup8tGnIs68YylBmXI,142
|
|
300
301
|
tol/sql/action/factory.py,sha256=HkareJp_57ud0_Bdd9Kwz3_Rnq2l211sGJgftohFAHg,3589
|
|
301
302
|
tol/sql/auth/__init__.py,sha256=e3JuwugXmXobklqZ1Mt1w03qPgb1WdUaJVM7oblzHyk,202
|
|
302
303
|
tol/sql/auth/blueprint.py,sha256=u0vT_TC9IMKrg08QFa9W29_83mT0y0jzLj3DvXy1BBw,25906
|
|
303
304
|
tol/sql/auth/models.py,sha256=4xNWBvyGiI3mwRyDY5ty48Bv9178ApQXPR-YjIdCsvk,11879
|
|
304
|
-
tol/sql/board/__init__.py,sha256=fWGMruqebnvYU4eVjytqA_lGJert01UyNbnf0ZyBTmM,139
|
|
305
|
-
tol/sql/board/factory.py,sha256=zBy7JD9bMJIwd6n1UdQ6XwfjkkcVMk0pml9W1gBmlGs,9107
|
|
306
|
-
tol/sql/loader/__init__.py,sha256=E5CiAidZalkUky8AG7FMRsR-NPu11K30ODNbNWPpqoY,142
|
|
307
|
-
tol/sql/loader/factory.py,sha256=PNu7Pm51HszPBjykSVZV5TNT2Ki8u__kDXgfh0doXUc,9607
|
|
308
305
|
tol/sql/pipeline_step/__init__.py,sha256=O7u4RrLfuoB0mwLcPxFoUrdTBZGB_4bE1vWCn5ho-qw,147
|
|
309
306
|
tol/sql/pipeline_step/factory.py,sha256=SFJ-BE1I_qmEsqrJ10evdGCdoUHjdiJq6iqrzIlX2jU,5132
|
|
307
|
+
tol/sql/standard/__init__.py,sha256=2NbLXFk0rneGZosZ2ESIRcT0WMK0KncmPWaLPqvX-i4,142
|
|
308
|
+
tol/sql/standard/factory.py,sha256=4bg6omWsa223y5nEqz_DDp1om6Ip-NlYm3JoT1EQGMM,18361
|
|
310
309
|
tol/sql/summary/__init__.py,sha256=5fNYAeOJ-XOdG9cgu7cUgDBwzG89cuc6RGGw_ZOjURk,143
|
|
311
310
|
tol/sql/summary/factory.py,sha256=F01du9HYl4kmUBHGxgpibSi651GAI5wsRUdk7LBZzzI,2009
|
|
312
311
|
tol/status/__init__.py,sha256=sBo-j1wCmberl89uryVCBEJk8ohbfsYhaNpIp_brR9Y,146
|
|
@@ -324,9 +323,9 @@ tol/validators/__init__.py,sha256=XXwCt8JPQ5-w2kN1bVjJPLXbS9F4s1nJUnY9jaKdmVk,27
|
|
|
324
323
|
tol/validators/allowed_keys.py,sha256=BJMomJtaQdxsdGsueDtLewv75TlwdIXiQipLGFcJ7_c,1331
|
|
325
324
|
tol/validators/allowed_values.py,sha256=yJ5SdiUlV7PSKORtsBJ9hYSqwvlx_esbFmFL_Gxh-p4,2262
|
|
326
325
|
tol/validators/unique_values.py,sha256=stI-1i006WEbERcjSMapRggJkEF-RFDzw2uUtXBAE_M,1885
|
|
327
|
-
tol_sdk-1.
|
|
328
|
-
tol_sdk-1.
|
|
329
|
-
tol_sdk-1.
|
|
330
|
-
tol_sdk-1.
|
|
331
|
-
tol_sdk-1.
|
|
332
|
-
tol_sdk-1.
|
|
326
|
+
tol_sdk-1.7.0.dist-info/licenses/LICENSE,sha256=RF9Jacy-9BpUAQQ20INhTgtaNBkmdTolYCHtrrkM2-8,1077
|
|
327
|
+
tol_sdk-1.7.0.dist-info/METADATA,sha256=I8e_3R5_nYW6u3e3CFZgUT-H1Cyo3BwlmIUa6cLlUEI,3072
|
|
328
|
+
tol_sdk-1.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
329
|
+
tol_sdk-1.7.0.dist-info/entry_points.txt,sha256=jH3HfTwxjzog7E3lq8CKpUWGIRY9FSXbyL6CpUmv6D0,36
|
|
330
|
+
tol_sdk-1.7.0.dist-info/top_level.txt,sha256=PwKMQLphyZNvagBoriVbl8uwHXQl8IC1niawVG0iXMM,10
|
|
331
|
+
tol_sdk-1.7.0.dist-info/RECORD,,
|
tol/sql/board/factory.py
DELETED
|
@@ -1,341 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: 2024 Genome Research Ltd.
|
|
2
|
-
#
|
|
3
|
-
# SPDX-License-Identifier: MIT
|
|
4
|
-
|
|
5
|
-
from __future__ import annotations
|
|
6
|
-
|
|
7
|
-
from collections.abc import Iterable as IterableABC
|
|
8
|
-
from dataclasses import dataclass
|
|
9
|
-
from typing import Any, Iterator
|
|
10
|
-
|
|
11
|
-
from sqlalchemy import ForeignKey
|
|
12
|
-
from sqlalchemy.dialects.postgresql import JSONB
|
|
13
|
-
from sqlalchemy.orm import (
|
|
14
|
-
Mapped,
|
|
15
|
-
declared_attr,
|
|
16
|
-
mapped_column,
|
|
17
|
-
relationship
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
from ..model import Model
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
@dataclass(frozen=True, kw_only=True)
|
|
24
|
-
class BoardModels(IterableABC[type[Model]]):
|
|
25
|
-
"""
|
|
26
|
-
Contains the needed models for dynamic, user-configurable
|
|
27
|
-
dashboards.
|
|
28
|
-
|
|
29
|
-
Additionally contains `_user_mixin`, from which developers
|
|
30
|
-
should inherit their `User` class from `tol.sql.auth`.
|
|
31
|
-
"""
|
|
32
|
-
|
|
33
|
-
component: type[Model]
|
|
34
|
-
component_zone: type[Model]
|
|
35
|
-
zone: type[Model]
|
|
36
|
-
zone_view: type[Model]
|
|
37
|
-
view: type[Model]
|
|
38
|
-
view_board: type[Model]
|
|
39
|
-
board: type[Model]
|
|
40
|
-
|
|
41
|
-
_user_mixin: type[Any]
|
|
42
|
-
|
|
43
|
-
def __iter__(self) -> Iterator[type[Model]]:
|
|
44
|
-
"""
|
|
45
|
-
Returns in order they should be deleted
|
|
46
|
-
"""
|
|
47
|
-
|
|
48
|
-
return iter(
|
|
49
|
-
[
|
|
50
|
-
self.component_zone,
|
|
51
|
-
self.component,
|
|
52
|
-
self.zone_view,
|
|
53
|
-
self.zone,
|
|
54
|
-
self.view_board,
|
|
55
|
-
self.view,
|
|
56
|
-
self.board
|
|
57
|
-
]
|
|
58
|
-
)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
def create_board_models(
|
|
62
|
-
base_model_class: type[Model],
|
|
63
|
-
user_model_class_name: str = 'User',
|
|
64
|
-
user_table_name: str = 'user'
|
|
65
|
-
) -> BoardModels:
|
|
66
|
-
"""
|
|
67
|
-
Creates all needed models (and joining tables) for
|
|
68
|
-
user-configurable dashboards.
|
|
69
|
-
|
|
70
|
-
Returns a `BoardModels` instance that functions like an
|
|
71
|
-
`Iterable`.
|
|
72
|
-
"""
|
|
73
|
-
|
|
74
|
-
class Component(base_model_class):
|
|
75
|
-
__tablename__ = 'component'
|
|
76
|
-
|
|
77
|
-
id: Mapped[str] = mapped_column( # noqa A003
|
|
78
|
-
primary_key=True
|
|
79
|
-
)
|
|
80
|
-
|
|
81
|
-
title: Mapped[str] = mapped_column(nullable=False)
|
|
82
|
-
object_type: Mapped[str] = mapped_column(nullable=False)
|
|
83
|
-
datasource = mapped_column( # noqa A003
|
|
84
|
-
type_=JSONB(),
|
|
85
|
-
nullable=False,
|
|
86
|
-
default={},
|
|
87
|
-
server_default='{}' # noqa P103
|
|
88
|
-
)
|
|
89
|
-
component_type: Mapped[str] = mapped_column(nullable=False)
|
|
90
|
-
widget_type: Mapped[str] = mapped_column(nullable=False)
|
|
91
|
-
config = mapped_column(type_=JSONB(), nullable=False)
|
|
92
|
-
filter = mapped_column( # noqa A003
|
|
93
|
-
type_=JSONB(),
|
|
94
|
-
nullable=False,
|
|
95
|
-
default={},
|
|
96
|
-
server_default='{}' # noqa P103
|
|
97
|
-
)
|
|
98
|
-
filter_pass_through: Mapped[bool] = mapped_column(nullable=False)
|
|
99
|
-
|
|
100
|
-
user_id: Mapped[int] = mapped_column(
|
|
101
|
-
ForeignKey(f'{user_table_name}.id'),
|
|
102
|
-
nullable=False
|
|
103
|
-
)
|
|
104
|
-
user = relationship(
|
|
105
|
-
user_model_class_name,
|
|
106
|
-
back_populates='components',
|
|
107
|
-
foreign_keys=[user_id]
|
|
108
|
-
)
|
|
109
|
-
|
|
110
|
-
component_zones: Mapped[list[ComponentZone]] = relationship(
|
|
111
|
-
back_populates='component'
|
|
112
|
-
)
|
|
113
|
-
|
|
114
|
-
class ComponentZone(base_model_class):
|
|
115
|
-
__tablename__ = 'component_zone'
|
|
116
|
-
|
|
117
|
-
id: Mapped[int] = mapped_column( # noqa A003
|
|
118
|
-
primary_key=True,
|
|
119
|
-
autoincrement=True
|
|
120
|
-
)
|
|
121
|
-
|
|
122
|
-
order: Mapped[int] = mapped_column(nullable=False)
|
|
123
|
-
|
|
124
|
-
component_id: Mapped[str] = mapped_column(
|
|
125
|
-
ForeignKey('component.id'),
|
|
126
|
-
nullable=False
|
|
127
|
-
)
|
|
128
|
-
component = relationship(
|
|
129
|
-
'Component',
|
|
130
|
-
back_populates='component_zones',
|
|
131
|
-
foreign_keys=[component_id]
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
zone_id: Mapped[str] = mapped_column(
|
|
135
|
-
ForeignKey('zone.id'),
|
|
136
|
-
nullable=False
|
|
137
|
-
)
|
|
138
|
-
zone = relationship(
|
|
139
|
-
'Zone',
|
|
140
|
-
back_populates='component_zones',
|
|
141
|
-
foreign_keys=[zone_id]
|
|
142
|
-
)
|
|
143
|
-
|
|
144
|
-
class Zone(base_model_class):
|
|
145
|
-
__tablename__ = 'zone'
|
|
146
|
-
|
|
147
|
-
id: Mapped[str] = mapped_column( # noqa A003
|
|
148
|
-
primary_key=True
|
|
149
|
-
)
|
|
150
|
-
|
|
151
|
-
title: Mapped[str] = mapped_column(nullable=False)
|
|
152
|
-
object_type: Mapped[str] = mapped_column(nullable=False)
|
|
153
|
-
datasource = mapped_column( # noqa A003
|
|
154
|
-
type_=JSONB(),
|
|
155
|
-
nullable=False,
|
|
156
|
-
default={},
|
|
157
|
-
server_default='{}' # noqa P103
|
|
158
|
-
)
|
|
159
|
-
filter = mapped_column( # noqa A003
|
|
160
|
-
type_=JSONB(),
|
|
161
|
-
nullable=False,
|
|
162
|
-
default={},
|
|
163
|
-
server_default='{}' # noqa P103
|
|
164
|
-
)
|
|
165
|
-
|
|
166
|
-
component_zones: Mapped[list[ComponentZone]] = relationship(
|
|
167
|
-
back_populates='zone'
|
|
168
|
-
)
|
|
169
|
-
|
|
170
|
-
zone_views: Mapped[list[ZoneView]] = relationship(
|
|
171
|
-
back_populates='zone'
|
|
172
|
-
)
|
|
173
|
-
|
|
174
|
-
user_id: Mapped[int] = mapped_column(
|
|
175
|
-
ForeignKey(f'{user_table_name}.id'),
|
|
176
|
-
nullable=False
|
|
177
|
-
)
|
|
178
|
-
user = relationship(
|
|
179
|
-
user_model_class_name,
|
|
180
|
-
back_populates='zones',
|
|
181
|
-
foreign_keys=[user_id]
|
|
182
|
-
)
|
|
183
|
-
|
|
184
|
-
class ZoneView(base_model_class):
|
|
185
|
-
__tablename__ = 'zone_view'
|
|
186
|
-
|
|
187
|
-
id: Mapped[int] = mapped_column( # noqa A003
|
|
188
|
-
primary_key=True,
|
|
189
|
-
autoincrement=True
|
|
190
|
-
)
|
|
191
|
-
|
|
192
|
-
order: Mapped[int] = mapped_column(nullable=False)
|
|
193
|
-
|
|
194
|
-
zone_id: Mapped[str] = mapped_column(
|
|
195
|
-
ForeignKey('zone.id'),
|
|
196
|
-
nullable=False
|
|
197
|
-
)
|
|
198
|
-
zone = relationship(
|
|
199
|
-
'Zone',
|
|
200
|
-
back_populates='zone_views',
|
|
201
|
-
foreign_keys=[zone_id]
|
|
202
|
-
)
|
|
203
|
-
|
|
204
|
-
view_id: Mapped[str] = mapped_column(
|
|
205
|
-
ForeignKey('view.id'),
|
|
206
|
-
nullable=False
|
|
207
|
-
)
|
|
208
|
-
view = relationship(
|
|
209
|
-
'View',
|
|
210
|
-
back_populates='zone_views',
|
|
211
|
-
foreign_keys=[view_id]
|
|
212
|
-
)
|
|
213
|
-
|
|
214
|
-
class View(base_model_class):
|
|
215
|
-
__tablename__ = 'view'
|
|
216
|
-
|
|
217
|
-
id: Mapped[str] = mapped_column( # noqa A003
|
|
218
|
-
primary_key=True
|
|
219
|
-
)
|
|
220
|
-
|
|
221
|
-
title: Mapped[str] = mapped_column(nullable=False)
|
|
222
|
-
filter = mapped_column( # noqa A003
|
|
223
|
-
type_=JSONB(),
|
|
224
|
-
nullable=False,
|
|
225
|
-
default={},
|
|
226
|
-
server_default='{}' # noqa P103
|
|
227
|
-
)
|
|
228
|
-
|
|
229
|
-
zone_views: Mapped[list[ZoneView]] = relationship(
|
|
230
|
-
back_populates='view'
|
|
231
|
-
)
|
|
232
|
-
|
|
233
|
-
view_boards: Mapped[list[ViewBoard]] = relationship(
|
|
234
|
-
back_populates='view'
|
|
235
|
-
)
|
|
236
|
-
|
|
237
|
-
user_id: Mapped[int] = mapped_column(
|
|
238
|
-
ForeignKey(f'{user_table_name}.id'),
|
|
239
|
-
nullable=False
|
|
240
|
-
)
|
|
241
|
-
user = relationship(
|
|
242
|
-
user_model_class_name,
|
|
243
|
-
back_populates='views',
|
|
244
|
-
foreign_keys=[user_id]
|
|
245
|
-
)
|
|
246
|
-
|
|
247
|
-
class ViewBoard(base_model_class):
|
|
248
|
-
__tablename__ = 'view_board'
|
|
249
|
-
|
|
250
|
-
id: Mapped[int] = mapped_column( # noqa A003
|
|
251
|
-
primary_key=True,
|
|
252
|
-
autoincrement=True
|
|
253
|
-
)
|
|
254
|
-
|
|
255
|
-
order: Mapped[int] = mapped_column(nullable=False)
|
|
256
|
-
|
|
257
|
-
view_id: Mapped[str] = mapped_column(
|
|
258
|
-
ForeignKey('view.id'),
|
|
259
|
-
nullable=False
|
|
260
|
-
)
|
|
261
|
-
view = relationship(
|
|
262
|
-
'View',
|
|
263
|
-
back_populates='view_boards',
|
|
264
|
-
foreign_keys=[view_id]
|
|
265
|
-
)
|
|
266
|
-
|
|
267
|
-
board_id: Mapped[str] = mapped_column(
|
|
268
|
-
ForeignKey('board.id'),
|
|
269
|
-
nullable=False
|
|
270
|
-
)
|
|
271
|
-
board = relationship(
|
|
272
|
-
'Board',
|
|
273
|
-
back_populates='view_boards',
|
|
274
|
-
foreign_keys=[board_id]
|
|
275
|
-
)
|
|
276
|
-
|
|
277
|
-
class Board(base_model_class):
|
|
278
|
-
__tablename__ = 'board'
|
|
279
|
-
|
|
280
|
-
id: Mapped[str] = mapped_column( # noqa A003
|
|
281
|
-
primary_key=True
|
|
282
|
-
)
|
|
283
|
-
|
|
284
|
-
title: Mapped[str] = mapped_column(nullable=False)
|
|
285
|
-
filter = mapped_column( # noqa A003
|
|
286
|
-
type_=JSONB(),
|
|
287
|
-
nullable=False,
|
|
288
|
-
default={},
|
|
289
|
-
server_default='{}' # noqa P103
|
|
290
|
-
)
|
|
291
|
-
|
|
292
|
-
view_boards: Mapped[list[ViewBoard]] = relationship(
|
|
293
|
-
back_populates='board'
|
|
294
|
-
)
|
|
295
|
-
|
|
296
|
-
user_id: Mapped[int] = mapped_column(
|
|
297
|
-
ForeignKey(f'{user_table_name}.id'),
|
|
298
|
-
nullable=False
|
|
299
|
-
)
|
|
300
|
-
user = relationship(
|
|
301
|
-
user_model_class_name,
|
|
302
|
-
back_populates='boards',
|
|
303
|
-
foreign_keys=[user_id]
|
|
304
|
-
)
|
|
305
|
-
|
|
306
|
-
class _UserMixin:
|
|
307
|
-
|
|
308
|
-
@declared_attr
|
|
309
|
-
def components(self) -> Mapped[list[Component]]:
|
|
310
|
-
return relationship(
|
|
311
|
-
back_populates='user'
|
|
312
|
-
)
|
|
313
|
-
|
|
314
|
-
@declared_attr
|
|
315
|
-
def zones(self) -> Mapped[list[Zone]]:
|
|
316
|
-
return relationship(
|
|
317
|
-
back_populates='user'
|
|
318
|
-
)
|
|
319
|
-
|
|
320
|
-
@declared_attr
|
|
321
|
-
def views(self) -> Mapped[list[View]]:
|
|
322
|
-
return relationship(
|
|
323
|
-
back_populates='user'
|
|
324
|
-
)
|
|
325
|
-
|
|
326
|
-
@declared_attr
|
|
327
|
-
def boards(self) -> Mapped[list[Board]]:
|
|
328
|
-
return relationship(
|
|
329
|
-
back_populates='user'
|
|
330
|
-
)
|
|
331
|
-
|
|
332
|
-
return BoardModels(
|
|
333
|
-
component=Component,
|
|
334
|
-
component_zone=ComponentZone,
|
|
335
|
-
zone=Zone,
|
|
336
|
-
zone_view=ZoneView,
|
|
337
|
-
view=View,
|
|
338
|
-
view_board=ViewBoard,
|
|
339
|
-
board=Board,
|
|
340
|
-
_user_mixin=_UserMixin
|
|
341
|
-
)
|