mage-ai 0.9.32__py3-none-any.whl → 0.9.34__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.
Potentially problematic release.
This version of mage-ai might be problematic. Click here for more details.
- mage_ai/api/constants.py +37 -2
- mage_ai/api/errors.py +9 -5
- mage_ai/api/middleware.py +2 -2
- mage_ai/api/mixins/__init__.py +0 -0
- mage_ai/api/mixins/result_set.py +65 -0
- mage_ai/api/operations/base.py +41 -11
- mage_ai/api/operations/constants.py +7 -6
- mage_ai/api/parsers/BaseParser.py +6 -4
- mage_ai/api/parsers/PipelineScheduleParser.py +36 -2
- mage_ai/api/policies/BackfillPolicy.py +1 -0
- mage_ai/api/policies/BasePolicy.py +229 -40
- mage_ai/api/policies/PermissionPolicy.py +17 -0
- mage_ai/api/policies/PipelineSchedulePolicy.py +18 -2
- mage_ai/api/policies/RolePermissionPolicy.py +2 -1
- mage_ai/api/policies/RolePolicy.py +3 -0
- mage_ai/api/policies/SessionPolicy.py +36 -1
- mage_ai/api/policies/StatusPolicy.py +46 -3
- mage_ai/api/policies/UserPolicy.py +25 -2
- mage_ai/api/policies/mixins/__init__.py +0 -0
- mage_ai/api/policies/mixins/user_permissions.py +241 -0
- mage_ai/api/presenters/PermissionPresenter.py +35 -8
- mage_ai/api/presenters/RolePresenter.py +29 -12
- mage_ai/api/presenters/StatusPresenter.py +11 -0
- mage_ai/api/presenters/UserPresenter.py +21 -24
- mage_ai/api/resources/BaseResource.py +24 -9
- mage_ai/api/resources/BlockResource.py +3 -2
- mage_ai/api/resources/DatabaseResource.py +2 -2
- mage_ai/api/resources/PermissionResource.py +65 -3
- mage_ai/api/resources/Resource.py +8 -1
- mage_ai/api/resources/RolePermissionResource.py +23 -0
- mage_ai/api/resources/RoleResource.py +75 -4
- mage_ai/api/resources/StatusResource.py +34 -0
- mage_ai/api/resources/UserResource.py +35 -4
- mage_ai/api/result_set.py +8 -1
- mage_ai/authentication/permissions/constants.py +78 -0
- mage_ai/data_integrations/destinations/constants.py +1 -0
- mage_ai/data_integrations/utils/config.py +9 -0
- mage_ai/data_integrations/utils/scheduler.py +16 -7
- mage_ai/data_preparation/models/block/__init__.py +56 -16
- mage_ai/data_preparation/models/block/data_integration/mixins.py +92 -1
- mage_ai/data_preparation/models/block/data_integration/utils.py +5 -5
- mage_ai/data_preparation/models/block/integration/__init__.py +12 -7
- mage_ai/data_preparation/models/block/sql/__init__.py +5 -2
- mage_ai/data_preparation/models/block/sql/utils/shared.py +15 -1
- mage_ai/data_preparation/models/pipelines/interactions.py +15 -0
- mage_ai/data_preparation/shared/secrets.py +7 -17
- mage_ai/data_preparation/templates/data_exporters/streaming/google_cloud_pubsub.yaml +5 -0
- mage_ai/data_preparation/templates/repo/metadata.yaml +5 -0
- mage_ai/io/druid.py +9 -5
- mage_ai/io/mssql.py +52 -30
- mage_ai/io/postgres.py +1 -0
- mage_ai/io/sql.py +15 -1
- mage_ai/orchestration/db/models/oauth.py +181 -17
- mage_ai/orchestration/db/models/schedules.py +11 -0
- mage_ai/presenters/interactions/constants.py +1 -0
- mage_ai/presenters/pages/loaders/pipeline_schedules.py +9 -3
- mage_ai/server/api/base.py +16 -6
- mage_ai/server/api/v1.py +2 -1
- mage_ai/server/constants.py +1 -1
- mage_ai/server/frontend_dist/404.html +2 -2
- mage_ai/server/frontend_dist/_next/static/PBVuphyo_muEAj347ZP_b/_buildManifest.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/1124-d8fc76201b83b376.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/{1749-9ec0f4709f5a9284.js → 1749-a6bdce4ee8a09bce.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/1769-613e23e361eb5bce.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/1821-953efd0da290d25f.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/2327-1a797c758f8b064a.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/2677-a85c5a72bb695304.js +1 -0
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/3419-6c8ec8db8c398c12.js → frontend_dist/_next/static/chunks/3419-0df6c5ef72f2e672.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/3684-e1a713b7c16f0151.js +1 -0
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/3859-3501cdba0a33f9f2.js → frontend_dist/_next/static/chunks/3859-ba594d21a1260cd2.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/4636-84f545d1d238df13.js +1 -0
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/4839-963da65cea58054f.js → frontend_dist/_next/static/chunks/4839-e5fe343a369734bc.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/5457-97433bc45b42a88a.js +1 -0
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/5499-63667ad5a785dba5.js → frontend_dist/_next/static/chunks/5499-b74459f6be5f9229.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/6043-6ea109833b88eb1d.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/6333-ca4cd6a73a597a40.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/7022-80d082a1d7fd1234.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/7361-25f211ef377e5958.js +1 -0
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/8013-1d6b1f7c13264cb4.js → frontend_dist/_next/static/chunks/8013-e67c71ddea072a20.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/8146-941c5155c3bfcc35.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/9161-837b653aa849a76f.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/9264-5730e4e059db40a8.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-752d991f239a128f.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/{block-layout-a624972d126a3dbd.js → block-layout-a27a28d2a615e364.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/files-98e27a4d7bd0da47.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/global-data-products/{[...slug]-a95787fe1695f493.js → [...slug]-9eb5dad57da13efd.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/{global-data-products-0d55711df91a78d0.js → global-data-products-26909dec66f00231.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/settings-b9eea6abc676ca81.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users/[user]-11c601c6ef07fe86.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users/new-ae6083077c9c1c41.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users-bfce0ee677d57206.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage-476c921d62f565fc.js +1 -0
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/pages/overview-9bc34ef66d84330a.js → frontend_dist/_next/static/chunks/pages/overview-2ec6b17e45a52be8.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipeline-runs-605918f3a5c1aac4.js +1 -0
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/backfills/[...slug]-84ec3ab0770bcd68.js → frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills/[...slug]-ee65a62ed166bd85.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills-2402004a19a6ad53.js +1 -0
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/dashboard-9a5b4768a640cd68.js → frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/dashboard-8781db69f19759a1.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-d7fd4857579e2b00.js +1 -0
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/logs-bd4bd009146bab36.js → frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/logs-234007c99efdccf6.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/{block-runs-8405a83adeaa8ff5.js → block-runs-da7510d4b277e47b.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/monitors/{block-runtime-98aa0840a00cc661.js → block-runtime-eae853ff34b09481.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/{monitors-0fb48e1cc51f78b2.js → monitors-a057b17847b82468.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs/{[run]-845c1f010d5ec380.js → [run]-99d11c86f8b15369.js} +1 -1
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/runs-9255f85760e1f57a.js → frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs-3f0980d8810a540b.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/{settings-187ac359020704e1.js → settings-9edf75d03460aaeb.js} +1 -1
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/syncs-c52d0c49439ec620.js → frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/syncs-e7692e54979f037d.js} +1 -1
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/triggers/[...slug]-7b3b57523b226a0e.js → frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers/[...slug]-cb6a3bcaf4fa1a81.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers-5eff96c149584e87.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/{pipelines-efc080913a247e99.js → pipelines-270b912e1ac189b5.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/account/profile-2058d022972cdea4.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/permissions/[...slug]-1a95628ea8d0d846.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/permissions-cb1cdf5f8e5bf9c5.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/preferences-58978256db4efbda.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/roles/[...slug]-9ddd7eb842d5a911.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/roles-1694c5eb1acbcf30.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/sync-data-6850e854fbedbb61.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users/[...slug]-5061c073e1c0de07.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users-f551c5665bfd3494.js +1 -0
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/pages/sign-in-6fe3657070f98aca.js → frontend_dist/_next/static/chunks/pages/sign-in-e779dbab123e626e.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/templates/[...slug]-935113d252ada806.js +1 -0
- mage_ai/server/{frontend_dist_base_path_template/_next/static/chunks/pages/templates-25b6d24cfa81c306.js → frontend_dist/_next/static/chunks/pages/templates-7079d637e396f2a8.js} +1 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/terminal-67fdb4a3be93aa14.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/triggers-9c0374c7c783b34a.js +1 -0
- mage_ai/server/frontend_dist/_next/static/chunks/pages/version-control-ea3a0d48e5822b42.js +1 -0
- mage_ai/server/frontend_dist/block-layout.html +2 -2
- mage_ai/server/frontend_dist/files.html +2 -2
- mage_ai/server/frontend_dist/global-data-products/[...slug].html +2 -2
- mage_ai/server/frontend_dist/global-data-products.html +2 -2
- mage_ai/server/frontend_dist/index.html +2 -2
- mage_ai/server/frontend_dist/manage/settings.html +2 -2
- mage_ai/server/frontend_dist/manage/users/[user].html +2 -2
- mage_ai/server/frontend_dist/manage/users/new.html +2 -2
- mage_ai/server/frontend_dist/manage/users.html +2 -2
- mage_ai/server/frontend_dist/manage.html +2 -2
- mage_ai/server/frontend_dist/overview.html +2 -2
- mage_ai/server/frontend_dist/pipeline-runs.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills/[...slug].html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/backfills.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/dashboard.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/edit.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/logs.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runs.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors/block-runtime.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/monitors.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/runs/[run].html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/runs.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/settings.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/syncs.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers/[...slug].html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline]/triggers.html +2 -2
- mage_ai/server/frontend_dist/pipelines/[pipeline].html +2 -2
- mage_ai/server/frontend_dist/pipelines.html +2 -2
- mage_ai/server/frontend_dist/settings/account/profile.html +2 -2
- mage_ai/server/frontend_dist/settings/workspace/permissions/[...slug].html +24 -0
- mage_ai/server/frontend_dist/settings/workspace/permissions.html +24 -0
- mage_ai/server/frontend_dist/settings/workspace/preferences.html +2 -2
- mage_ai/server/frontend_dist/settings/workspace/roles/[...slug].html +24 -0
- mage_ai/server/frontend_dist/settings/workspace/roles.html +24 -0
- mage_ai/server/frontend_dist/settings/workspace/sync-data.html +2 -2
- mage_ai/server/frontend_dist/settings/workspace/users/[...slug].html +24 -0
- mage_ai/server/frontend_dist/settings/workspace/users.html +2 -2
- mage_ai/server/frontend_dist/settings.html +2 -2
- mage_ai/server/frontend_dist/sign-in.html +5 -5
- mage_ai/server/frontend_dist/templates/[...slug].html +2 -2
- mage_ai/server/frontend_dist/templates.html +2 -2
- mage_ai/server/frontend_dist/terminal.html +2 -2
- mage_ai/server/frontend_dist/test.html +2 -2
- mage_ai/server/frontend_dist/triggers.html +2 -2
- mage_ai/server/frontend_dist/version-control.html +2 -2
- mage_ai/server/frontend_dist_base_path_template/404.html +2 -2
- mage_ai/server/frontend_dist_base_path_template/_next/static/L-IKw5_bRZUs-wyjnpN_j/_buildManifest.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/1124-d8fc76201b83b376.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/{1749-9ec0f4709f5a9284.js → 1749-a6bdce4ee8a09bce.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/1769-613e23e361eb5bce.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/1821-953efd0da290d25f.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/2327-1a797c758f8b064a.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/2677-a85c5a72bb695304.js +1 -0
- mage_ai/server/{frontend_dist/_next/static/chunks/3419-6c8ec8db8c398c12.js → frontend_dist_base_path_template/_next/static/chunks/3419-0df6c5ef72f2e672.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/3684-e1a713b7c16f0151.js +1 -0
- mage_ai/server/{frontend_dist/_next/static/chunks/3859-3501cdba0a33f9f2.js → frontend_dist_base_path_template/_next/static/chunks/3859-ba594d21a1260cd2.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/4636-84f545d1d238df13.js +1 -0
- mage_ai/server/{frontend_dist/_next/static/chunks/4839-963da65cea58054f.js → frontend_dist_base_path_template/_next/static/chunks/4839-e5fe343a369734bc.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/5457-97433bc45b42a88a.js +1 -0
- mage_ai/server/{frontend_dist/_next/static/chunks/5499-63667ad5a785dba5.js → frontend_dist_base_path_template/_next/static/chunks/5499-b74459f6be5f9229.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/6043-6ea109833b88eb1d.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/6333-ca4cd6a73a597a40.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/7022-80d082a1d7fd1234.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/7361-25f211ef377e5958.js +1 -0
- mage_ai/server/{frontend_dist/_next/static/chunks/8013-1d6b1f7c13264cb4.js → frontend_dist_base_path_template/_next/static/chunks/8013-e67c71ddea072a20.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/8146-941c5155c3bfcc35.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/9161-837b653aa849a76f.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/9264-5730e4e059db40a8.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/_app-752d991f239a128f.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/{block-layout-a624972d126a3dbd.js → block-layout-a27a28d2a615e364.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/files-98e27a4d7bd0da47.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/global-data-products/{[...slug]-a95787fe1695f493.js → [...slug]-9eb5dad57da13efd.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/{global-data-products-0d55711df91a78d0.js → global-data-products-26909dec66f00231.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage/settings-b9eea6abc676ca81.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage/users/[user]-11c601c6ef07fe86.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage/users/new-ae6083077c9c1c41.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage/users-bfce0ee677d57206.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage-476c921d62f565fc.js +1 -0
- mage_ai/server/{frontend_dist/_next/static/chunks/pages/overview-9bc34ef66d84330a.js → frontend_dist_base_path_template/_next/static/chunks/pages/overview-2ec6b17e45a52be8.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipeline-runs-605918f3a5c1aac4.js +1 -0
- mage_ai/server/{frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills/[...slug]-84ec3ab0770bcd68.js → frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/backfills/[...slug]-ee65a62ed166bd85.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/backfills-2402004a19a6ad53.js +1 -0
- mage_ai/server/{frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/dashboard-9a5b4768a640cd68.js → frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/dashboard-8781db69f19759a1.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/edit-d7fd4857579e2b00.js +1 -0
- mage_ai/server/{frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/logs-bd4bd009146bab36.js → frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/logs-234007c99efdccf6.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/monitors/{block-runs-8405a83adeaa8ff5.js → block-runs-da7510d4b277e47b.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/monitors/{block-runtime-98aa0840a00cc661.js → block-runtime-eae853ff34b09481.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/{monitors-0fb48e1cc51f78b2.js → monitors-a057b17847b82468.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/runs/{[run]-845c1f010d5ec380.js → [run]-99d11c86f8b15369.js} +1 -1
- mage_ai/server/{frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/runs-9255f85760e1f57a.js → frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/runs-3f0980d8810a540b.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/{settings-187ac359020704e1.js → settings-9edf75d03460aaeb.js} +1 -1
- mage_ai/server/{frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/syncs-c52d0c49439ec620.js → frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/syncs-e7692e54979f037d.js} +1 -1
- mage_ai/server/{frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers/[...slug]-7b3b57523b226a0e.js → frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/triggers/[...slug]-cb6a3bcaf4fa1a81.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/triggers-5eff96c149584e87.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/{pipelines-efc080913a247e99.js → pipelines-270b912e1ac189b5.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/account/profile-2058d022972cdea4.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/permissions/[...slug]-1a95628ea8d0d846.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/permissions-cb1cdf5f8e5bf9c5.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/preferences-58978256db4efbda.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/roles/[...slug]-9ddd7eb842d5a911.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/roles-1694c5eb1acbcf30.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/sync-data-6850e854fbedbb61.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/users/[...slug]-5061c073e1c0de07.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/users-f551c5665bfd3494.js +1 -0
- mage_ai/server/{frontend_dist/_next/static/chunks/pages/sign-in-6fe3657070f98aca.js → frontend_dist_base_path_template/_next/static/chunks/pages/sign-in-e779dbab123e626e.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/templates/[...slug]-935113d252ada806.js +1 -0
- mage_ai/server/{frontend_dist/_next/static/chunks/pages/templates-25b6d24cfa81c306.js → frontend_dist_base_path_template/_next/static/chunks/pages/templates-7079d637e396f2a8.js} +1 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/terminal-67fdb4a3be93aa14.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/triggers-9c0374c7c783b34a.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/version-control-ea3a0d48e5822b42.js +1 -0
- mage_ai/server/frontend_dist_base_path_template/block-layout.html +2 -2
- mage_ai/server/frontend_dist_base_path_template/files.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/global-data-products/[...slug].html +5 -5
- mage_ai/server/frontend_dist_base_path_template/global-data-products.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/index.html +2 -2
- mage_ai/server/frontend_dist_base_path_template/manage/settings.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/manage/users/[user].html +5 -5
- mage_ai/server/frontend_dist_base_path_template/manage/users/new.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/manage/users.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/manage.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/overview.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipeline-runs.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/backfills/[...slug].html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/backfills.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/dashboard.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/edit.html +2 -2
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/logs.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/monitors/block-runs.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/monitors/block-runtime.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/monitors.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/runs/[run].html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/runs.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/settings.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/syncs.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/triggers/[...slug].html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline]/triggers.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/pipelines/[pipeline].html +2 -2
- mage_ai/server/frontend_dist_base_path_template/pipelines.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/settings/account/profile.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/settings/workspace/permissions/[...slug].html +24 -0
- mage_ai/server/frontend_dist_base_path_template/settings/workspace/permissions.html +24 -0
- mage_ai/server/frontend_dist_base_path_template/settings/workspace/preferences.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/settings/workspace/roles/[...slug].html +24 -0
- mage_ai/server/frontend_dist_base_path_template/settings/workspace/roles.html +24 -0
- mage_ai/server/frontend_dist_base_path_template/settings/workspace/sync-data.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/settings/workspace/users/[...slug].html +24 -0
- mage_ai/server/frontend_dist_base_path_template/settings/workspace/users.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/settings.html +2 -2
- mage_ai/server/frontend_dist_base_path_template/sign-in.html +13 -13
- mage_ai/server/frontend_dist_base_path_template/templates/[...slug].html +5 -5
- mage_ai/server/frontend_dist_base_path_template/templates.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/terminal.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/test.html +4 -4
- mage_ai/server/frontend_dist_base_path_template/triggers.html +5 -5
- mage_ai/server/frontend_dist_base_path_template/version-control.html +5 -5
- mage_ai/server/server.py +37 -2
- mage_ai/services/aws/__init__.py +19 -8
- mage_ai/services/spark/config.py +5 -1
- mage_ai/services/spark/spark.py +5 -4
- mage_ai/settings/__init__.py +2 -0
- mage_ai/streaming/constants.py +1 -0
- mage_ai/streaming/sinks/google_cloud_pubsub.py +66 -0
- mage_ai/streaming/sinks/sink_factory.py +6 -0
- mage_ai/tests/api/operations/test_operations.py +8 -2
- mage_ai/tests/api/operations/test_pipeline_schedules.py +3 -0
- mage_ai/tests/data_preparation/models/block/sql/utils/test_shared.py +130 -5
- mage_ai/tests/factory.py +2 -0
- mage_ai/tests/orchestration/test_pipeline_scheduler.py +20 -3
- mage_ai/tests/streaming/sinks/test_google_cloud_pubsub.py +28 -0
- mage_ai/usage_statistics/logger.py +4 -1
- {mage_ai-0.9.32.dist-info → mage_ai-0.9.34.dist-info}/METADATA +1 -1
- {mage_ai-0.9.32.dist-info → mage_ai-0.9.34.dist-info}/RECORD +302 -268
- mage_ai/api/policies/utils.py +0 -14
- mage_ai/server/frontend_dist/_next/static/cbN7L4Ms6UUPoANozEh9w/_buildManifest.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/1769-e2efd4df8d09481f.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/2327-2d8a1555605cf4af.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/2369-cb9cd97052e18d27.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/2677-aea54e655c4a727f.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/5457-994e1044953f1425.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/5597-c034402ee26af3b4.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/6333-d1f8db4e7d9656a5.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/6648-9bd31397f1d1b551.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/9161-0101571a3635a938.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/9264-7c4fcfed1200046a.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/9696-3e8ab7786f0e3a0e.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/_app-976b488b8aea327f.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/files-1a6c6654bfc953ac.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/settings-49004d918b04c866.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users/[user]-97177740fbb6eb9f.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users/new-5b6411c9eb8c4ba4.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage/users-0a7a746cc0998608.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/manage-606012a580245001.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipeline-runs-0801de3c9a2976ea.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/backfills-0a5865d4cf012127.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/edit-87b1a0601c4236cd.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/pipelines/[pipeline]/triggers-77ffaa2d721a0a4e.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/account/profile-4e72d40881ac0605.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/preferences-8da8f8e2fdb1c99f.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/sync-data-be029347e99fcea2.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/settings/workspace/users-d4b07df78b3d6037.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/templates/[...slug]-87c492e9edc6064e.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/terminal-2ab9f3d0c50cce81.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/triggers-0ba40243a030ddf4.js +0 -1
- mage_ai/server/frontend_dist/_next/static/chunks/pages/version-control-28a3a43d65074394.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/1769-e2efd4df8d09481f.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/2327-2d8a1555605cf4af.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/2369-cb9cd97052e18d27.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/2677-aea54e655c4a727f.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/5457-994e1044953f1425.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/5597-c034402ee26af3b4.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/6333-d1f8db4e7d9656a5.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/6648-9bd31397f1d1b551.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/9161-0101571a3635a938.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/9264-7c4fcfed1200046a.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/9696-3e8ab7786f0e3a0e.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/_app-976b488b8aea327f.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/files-1a6c6654bfc953ac.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage/settings-49004d918b04c866.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage/users/[user]-97177740fbb6eb9f.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage/users/new-5b6411c9eb8c4ba4.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage/users-0a7a746cc0998608.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/manage-606012a580245001.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipeline-runs-0801de3c9a2976ea.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/backfills-0a5865d4cf012127.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/edit-87b1a0601c4236cd.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/pipelines/[pipeline]/triggers-77ffaa2d721a0a4e.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/account/profile-4e72d40881ac0605.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/preferences-8da8f8e2fdb1c99f.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/sync-data-be029347e99fcea2.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/settings/workspace/users-d4b07df78b3d6037.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/templates/[...slug]-87c492e9edc6064e.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/terminal-2ab9f3d0c50cce81.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/triggers-0ba40243a030ddf4.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/chunks/pages/version-control-28a3a43d65074394.js +0 -1
- mage_ai/server/frontend_dist_base_path_template/_next/static/o_Yc57jh8Te2SI-VoipGQ/_buildManifest.js +0 -1
- /mage_ai/server/frontend_dist/_next/static/{cbN7L4Ms6UUPoANozEh9w → PBVuphyo_muEAj347ZP_b}/_ssgManifest.js +0 -0
- /mage_ai/server/frontend_dist_base_path_template/_next/static/{o_Yc57jh8Te2SI-VoipGQ → L-IKw5_bRZUs-wyjnpN_j}/_ssgManifest.js +0 -0
- {mage_ai-0.9.32.dist-info → mage_ai-0.9.34.dist-info}/LICENSE +0 -0
- {mage_ai-0.9.32.dist-info → mage_ai-0.9.34.dist-info}/WHEEL +0 -0
- {mage_ai-0.9.32.dist-info → mage_ai-0.9.34.dist-info}/entry_points.txt +0 -0
- {mage_ai-0.9.32.dist-info → mage_ai-0.9.34.dist-info}/top_level.txt +0 -0
mage_ai/io/postgres.py
CHANGED
|
@@ -268,6 +268,7 @@ class Postgres(BaseSQL):
|
|
|
268
268
|
allow_reserved_words: bool = False,
|
|
269
269
|
unique_conflict_method: str = None,
|
|
270
270
|
unique_constraints: List[str] = None,
|
|
271
|
+
**kwargs,
|
|
271
272
|
) -> None:
|
|
272
273
|
if unique_constraints and unique_conflict_method:
|
|
273
274
|
use_insert_command = True
|
mage_ai/io/sql.py
CHANGED
|
@@ -105,7 +105,8 @@ class BaseSQL(BaseSQLConnection):
|
|
|
105
105
|
db_dtypes: List[str],
|
|
106
106
|
dtypes: List[str],
|
|
107
107
|
full_table_name: str,
|
|
108
|
-
buffer: Union[IO, None] = None
|
|
108
|
+
buffer: Union[IO, None] = None,
|
|
109
|
+
**kwargs,
|
|
109
110
|
) -> None:
|
|
110
111
|
raise Exception('Subclasses must override this method.')
|
|
111
112
|
|
|
@@ -215,6 +216,7 @@ class BaseSQL(BaseSQLConnection):
|
|
|
215
216
|
allow_reserved_words: bool = False,
|
|
216
217
|
unique_conflict_method: str = None,
|
|
217
218
|
unique_constraints: List[str] = None,
|
|
219
|
+
**kwargs,
|
|
218
220
|
) -> None:
|
|
219
221
|
"""
|
|
220
222
|
Exports dataframe to the connected database from a Pandas data frame. If table doesn't
|
|
@@ -254,6 +256,7 @@ class BaseSQL(BaseSQLConnection):
|
|
|
254
256
|
if index:
|
|
255
257
|
df = df.reset_index()
|
|
256
258
|
|
|
259
|
+
# Clean dataframe
|
|
257
260
|
dtypes = infer_dtypes(df)
|
|
258
261
|
df = clean_df_for_export(df, self.clean, dtypes)
|
|
259
262
|
|
|
@@ -266,6 +269,16 @@ class BaseSQL(BaseSQLConnection):
|
|
|
266
269
|
dtypes = infer_dtypes(df)
|
|
267
270
|
|
|
268
271
|
def __process():
|
|
272
|
+
if not query_string and kwargs.get('fast_execute', True) and \
|
|
273
|
+
hasattr(self, 'upload_dataframe_fast') and callable(self.upload_dataframe_fast):
|
|
274
|
+
self.upload_dataframe_fast(
|
|
275
|
+
df,
|
|
276
|
+
schema_name,
|
|
277
|
+
table_name,
|
|
278
|
+
if_exists=if_exists,
|
|
279
|
+
)
|
|
280
|
+
return
|
|
281
|
+
|
|
269
282
|
buffer = StringIO()
|
|
270
283
|
table_exists = self.table_exists(schema_name, table_name)
|
|
271
284
|
|
|
@@ -324,6 +337,7 @@ class BaseSQL(BaseSQLConnection):
|
|
|
324
337
|
allow_reserved_words=allow_reserved_words,
|
|
325
338
|
unique_conflict_method=unique_conflict_method,
|
|
326
339
|
unique_constraints=unique_constraints,
|
|
340
|
+
**kwargs,
|
|
327
341
|
)
|
|
328
342
|
self.conn.commit()
|
|
329
343
|
|
|
@@ -12,12 +12,16 @@ from sqlalchemy import (
|
|
|
12
12
|
ForeignKey,
|
|
13
13
|
Integer,
|
|
14
14
|
String,
|
|
15
|
+
and_,
|
|
16
|
+
asc,
|
|
17
|
+
func,
|
|
15
18
|
)
|
|
16
19
|
from sqlalchemy.orm import relationship, validates
|
|
17
20
|
|
|
18
21
|
from mage_ai.authentication.permissions.constants import (
|
|
19
22
|
BlockEntityType,
|
|
20
23
|
EntityName,
|
|
24
|
+
PermissionAccess,
|
|
21
25
|
PipelineEntityType,
|
|
22
26
|
)
|
|
23
27
|
from mage_ai.data_preparation.repo_manager import get_project_uuid
|
|
@@ -79,6 +83,13 @@ class User(BaseModel):
|
|
|
79
83
|
|
|
80
84
|
return value
|
|
81
85
|
|
|
86
|
+
@validates('avatar')
|
|
87
|
+
def shorten_avatar(self, key, value):
|
|
88
|
+
if value and len(value) >= 3:
|
|
89
|
+
return value[:2]
|
|
90
|
+
|
|
91
|
+
return value
|
|
92
|
+
|
|
82
93
|
@property
|
|
83
94
|
def project_access(self) -> int:
|
|
84
95
|
return self.get_access(Entity.PROJECT, get_project_uuid())
|
|
@@ -150,6 +161,72 @@ class User(BaseModel):
|
|
|
150
161
|
user.roles_new = roles_new
|
|
151
162
|
db_connection.session.commit()
|
|
152
163
|
|
|
164
|
+
def permissions(self) -> List:
|
|
165
|
+
row_number_column = (
|
|
166
|
+
func.
|
|
167
|
+
row_number().
|
|
168
|
+
over(
|
|
169
|
+
order_by=asc(UserRole.id),
|
|
170
|
+
partition_by=Permission.id,
|
|
171
|
+
).
|
|
172
|
+
label('row_number')
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
query = (
|
|
176
|
+
Permission.
|
|
177
|
+
select(
|
|
178
|
+
Permission.access,
|
|
179
|
+
Permission.created_at,
|
|
180
|
+
Permission.entity,
|
|
181
|
+
Permission.entity_id,
|
|
182
|
+
Permission.entity_name,
|
|
183
|
+
Permission.entity_type,
|
|
184
|
+
Permission.id,
|
|
185
|
+
Permission.options,
|
|
186
|
+
Permission.role_id,
|
|
187
|
+
Permission.updated_at,
|
|
188
|
+
Permission.user_id,
|
|
189
|
+
).
|
|
190
|
+
join(
|
|
191
|
+
RolePermission,
|
|
192
|
+
RolePermission.permission_id == Permission.id,
|
|
193
|
+
).
|
|
194
|
+
join(
|
|
195
|
+
Role,
|
|
196
|
+
Role.id == RolePermission.role_id,
|
|
197
|
+
).
|
|
198
|
+
join(
|
|
199
|
+
UserRole,
|
|
200
|
+
and_(
|
|
201
|
+
UserRole.role_id == Role.id,
|
|
202
|
+
UserRole.user_id == self.id,
|
|
203
|
+
),
|
|
204
|
+
)
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
query = query.add_column(row_number_column)
|
|
208
|
+
query = query.from_self().filter(row_number_column == 1)
|
|
209
|
+
rows = query.all()
|
|
210
|
+
|
|
211
|
+
arr = []
|
|
212
|
+
|
|
213
|
+
for row in rows:
|
|
214
|
+
model = Permission()
|
|
215
|
+
model.access = row.access
|
|
216
|
+
model.created_at = row.created_at
|
|
217
|
+
model.entity = row.entity
|
|
218
|
+
model.entity_id = row.entity_id
|
|
219
|
+
model.entity_name = row.entity_name
|
|
220
|
+
model.entity_type = row.entity_type
|
|
221
|
+
model.id = row.id
|
|
222
|
+
model.options = row.options
|
|
223
|
+
model.role_id = row.role_id
|
|
224
|
+
model.updated_at = row.updated_at
|
|
225
|
+
model.user_id = row.user_id
|
|
226
|
+
arr.append(model)
|
|
227
|
+
|
|
228
|
+
return arr
|
|
229
|
+
|
|
153
230
|
|
|
154
231
|
class Role(BaseModel):
|
|
155
232
|
name = Column(String(255), index=True, unique=True)
|
|
@@ -260,7 +337,8 @@ class Role(BaseModel):
|
|
|
260
337
|
access = 0
|
|
261
338
|
if permissions:
|
|
262
339
|
for permission in permissions:
|
|
263
|
-
access
|
|
340
|
+
if permission.access is not None:
|
|
341
|
+
access = access | permission.access
|
|
264
342
|
return access
|
|
265
343
|
else:
|
|
266
344
|
# TODO: Handle permissions with different entity types better.
|
|
@@ -306,20 +384,35 @@ class UserRole(BaseModel):
|
|
|
306
384
|
|
|
307
385
|
class Permission(BaseModel):
|
|
308
386
|
class Access(int, enum.Enum):
|
|
309
|
-
OWNER =
|
|
310
|
-
ADMIN =
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
READ =
|
|
322
|
-
|
|
387
|
+
OWNER = PermissionAccess.OWNER.value
|
|
388
|
+
ADMIN = PermissionAccess.ADMIN.value
|
|
389
|
+
EDITOR = PermissionAccess.EDITOR.value
|
|
390
|
+
VIEWER = PermissionAccess.VIEWER.value
|
|
391
|
+
LIST = PermissionAccess.LIST.value
|
|
392
|
+
DETAIL = PermissionAccess.DETAIL.value
|
|
393
|
+
CREATE = PermissionAccess.CREATE.value
|
|
394
|
+
UPDATE = PermissionAccess.UPDATE.value
|
|
395
|
+
DELETE = PermissionAccess.DELETE.value
|
|
396
|
+
OPERATION_ALL = PermissionAccess.OPERATION_ALL.value
|
|
397
|
+
QUERY = PermissionAccess.QUERY.value
|
|
398
|
+
QUERY_ALL = PermissionAccess.QUERY_ALL.value
|
|
399
|
+
READ = PermissionAccess.READ.value
|
|
400
|
+
READ_ALL = PermissionAccess.READ_ALL.value
|
|
401
|
+
WRITE = PermissionAccess.WRITE.value
|
|
402
|
+
WRITE_ALL = PermissionAccess.WRITE_ALL.value
|
|
403
|
+
ALL = PermissionAccess.ALL.value
|
|
404
|
+
DISABLE_LIST = PermissionAccess.DISABLE_LIST.value
|
|
405
|
+
DISABLE_DETAIL = PermissionAccess.DISABLE_DETAIL.value
|
|
406
|
+
DISABLE_CREATE = PermissionAccess.DISABLE_CREATE.value
|
|
407
|
+
DISABLE_UPDATE = PermissionAccess.DISABLE_UPDATE.value
|
|
408
|
+
DISABLE_DELETE = PermissionAccess.DISABLE_DELETE.value
|
|
409
|
+
DISABLE_OPERATION_ALL = PermissionAccess.DISABLE_OPERATION_ALL.value
|
|
410
|
+
DISABLE_QUERY = PermissionAccess.DISABLE_QUERY.value
|
|
411
|
+
DISABLE_QUERY_ALL = PermissionAccess.DISABLE_QUERY_ALL.value
|
|
412
|
+
DISABLE_READ = PermissionAccess.DISABLE_READ.value
|
|
413
|
+
DISABLE_READ_ALL = PermissionAccess.DISABLE_READ_ALL.value
|
|
414
|
+
DISABLE_WRITE = PermissionAccess.DISABLE_WRITE.value
|
|
415
|
+
DISABLE_WRITE_ALL = PermissionAccess.DISABLE_WRITE_ALL.value
|
|
323
416
|
|
|
324
417
|
entity_id = Column(String(255))
|
|
325
418
|
entity = Column(Enum(Entity), default=Entity.GLOBAL)
|
|
@@ -418,18 +511,32 @@ class Permission(BaseModel):
|
|
|
418
511
|
).all()
|
|
419
512
|
new_permissions = []
|
|
420
513
|
if len(permissions) == 0:
|
|
421
|
-
for
|
|
514
|
+
for permission_access in [
|
|
515
|
+
Permission.Access.OWNER,
|
|
516
|
+
Permission.Access.ADMIN,
|
|
517
|
+
Permission.Access.EDITOR,
|
|
518
|
+
Permission.Access.VIEWER,
|
|
519
|
+
]:
|
|
422
520
|
new_permissions.append(
|
|
423
521
|
self.create(
|
|
424
522
|
entity=entity,
|
|
425
523
|
entity_id=entity_id,
|
|
426
|
-
access=
|
|
524
|
+
access=permission_access.value,
|
|
427
525
|
commit=False,
|
|
428
526
|
)
|
|
429
527
|
)
|
|
430
528
|
db_connection.session.commit()
|
|
431
529
|
return new_permissions
|
|
432
530
|
|
|
531
|
+
@classmethod
|
|
532
|
+
def add_accesses(self, accesses: List[PermissionAccess]) -> int:
|
|
533
|
+
current = 0
|
|
534
|
+
for access in accesses:
|
|
535
|
+
access_current = bin(current)
|
|
536
|
+
access_new = bin(access)
|
|
537
|
+
current = int(access_current, 2) + int(access_new, 2)
|
|
538
|
+
return current
|
|
539
|
+
|
|
433
540
|
@property
|
|
434
541
|
def query_attributes(self) -> List[str]:
|
|
435
542
|
return self.__get_access_attributes('query_attributes')
|
|
@@ -454,6 +561,63 @@ class Permission(BaseModel):
|
|
|
454
561
|
def write_attributes(self, values: List[str]) -> None:
|
|
455
562
|
self.__set_access_attributes('write_attributes', values)
|
|
456
563
|
|
|
564
|
+
def users(self) -> List[User]:
|
|
565
|
+
row_number_column = (
|
|
566
|
+
func.
|
|
567
|
+
row_number().
|
|
568
|
+
over(
|
|
569
|
+
order_by=asc(UserRole.id),
|
|
570
|
+
partition_by=User.id,
|
|
571
|
+
).
|
|
572
|
+
label('row_number')
|
|
573
|
+
)
|
|
574
|
+
|
|
575
|
+
query = (
|
|
576
|
+
User.
|
|
577
|
+
select(
|
|
578
|
+
User.avatar,
|
|
579
|
+
User.created_at,
|
|
580
|
+
User.email,
|
|
581
|
+
User.first_name,
|
|
582
|
+
User.id,
|
|
583
|
+
User.last_name,
|
|
584
|
+
User.preferences,
|
|
585
|
+
User.roles,
|
|
586
|
+
User.updated_at,
|
|
587
|
+
User.username,
|
|
588
|
+
).
|
|
589
|
+
join(UserRole, UserRole.user_id == User.id).
|
|
590
|
+
join(Role, Role.id == UserRole.role_id).
|
|
591
|
+
join(
|
|
592
|
+
RolePermission,
|
|
593
|
+
and_(
|
|
594
|
+
RolePermission.permission_id == self.id,
|
|
595
|
+
RolePermission.role_id == Role.id,
|
|
596
|
+
),
|
|
597
|
+
)
|
|
598
|
+
)
|
|
599
|
+
|
|
600
|
+
query = query.add_column(row_number_column)
|
|
601
|
+
query = query.from_self().filter(row_number_column == 1)
|
|
602
|
+
rows = query.all()
|
|
603
|
+
|
|
604
|
+
arr = []
|
|
605
|
+
|
|
606
|
+
for row in rows:
|
|
607
|
+
user = User()
|
|
608
|
+
user.avatar = row.avatar
|
|
609
|
+
user.created_at = row.created_at
|
|
610
|
+
user.first_name = row.first_name
|
|
611
|
+
user.id = row.id
|
|
612
|
+
user.last_name = row.last_name
|
|
613
|
+
user.preferences = row.preferences
|
|
614
|
+
user.roles = row.roles
|
|
615
|
+
user.updated_at = row.updated_at
|
|
616
|
+
user.username = row.username
|
|
617
|
+
arr.append(user)
|
|
618
|
+
|
|
619
|
+
return arr
|
|
620
|
+
|
|
457
621
|
def __get_access_attributes(self, access_name: str) -> List[str]:
|
|
458
622
|
return (self.options or {}).get(access_name)
|
|
459
623
|
|
|
@@ -49,6 +49,7 @@ from mage_ai.data_preparation.models.triggers import (
|
|
|
49
49
|
)
|
|
50
50
|
from mage_ai.data_preparation.variable_manager import get_global_variables
|
|
51
51
|
from mage_ai.orchestration.db import db_connection, safe_db_query
|
|
52
|
+
from mage_ai.orchestration.db.errors import ValidationError
|
|
52
53
|
from mage_ai.orchestration.db.models.base import Base, BaseModel, classproperty
|
|
53
54
|
from mage_ai.orchestration.db.models.tags import Tag, TagAssociation
|
|
54
55
|
from mage_ai.server.kernel_output_parser import DataType
|
|
@@ -100,6 +101,16 @@ class PipelineSchedule(BaseModel):
|
|
|
100
101
|
)
|
|
101
102
|
)
|
|
102
103
|
|
|
104
|
+
@validates('name')
|
|
105
|
+
def validate_name(self, key, value):
|
|
106
|
+
if not value or len(value) == 0:
|
|
107
|
+
raise ValidationError(f'{key} cannot be empty.', metadata=dict(
|
|
108
|
+
key=key,
|
|
109
|
+
value=value,
|
|
110
|
+
))
|
|
111
|
+
|
|
112
|
+
return value
|
|
113
|
+
|
|
103
114
|
def get_settings(self) -> 'SettingsConfig':
|
|
104
115
|
settings = self.settings if self.settings else dict()
|
|
105
116
|
return SettingsConfig.load(config=settings)
|
|
@@ -12,6 +12,12 @@ class Loader(BaseLoader):
|
|
|
12
12
|
query: Dict = None,
|
|
13
13
|
**kwargs,
|
|
14
14
|
) -> List[PipelineSchedule]:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
if ids:
|
|
16
|
+
ids = list(filter(lambda x: x, ids))
|
|
17
|
+
|
|
18
|
+
if ids:
|
|
19
|
+
return PipelineSchedule.query.filter(
|
|
20
|
+
PipelineSchedule.id.in_(ids),
|
|
21
|
+
).all()
|
|
22
|
+
|
|
23
|
+
return []
|
mage_ai/server/api/base.py
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
from mage_ai.api.middleware import OAuthMiddleware
|
|
2
|
-
from mage_ai.shared.parsers import encode_complex
|
|
3
|
-
from mage_ai.shared.strings import camel_to_snake_case
|
|
4
|
-
import dateutil.parser
|
|
5
1
|
import json
|
|
2
|
+
import traceback
|
|
3
|
+
|
|
4
|
+
import dateutil.parser
|
|
6
5
|
import simplejson
|
|
7
6
|
import tornado.web
|
|
8
|
-
|
|
7
|
+
|
|
8
|
+
from mage_ai.api.middleware import OAuthMiddleware
|
|
9
|
+
from mage_ai.shared.parsers import encode_complex
|
|
10
|
+
from mage_ai.shared.strings import camel_to_snake_case
|
|
9
11
|
|
|
10
12
|
META_KEY_LIMIT = '_limit'
|
|
11
13
|
META_KEY_OFFSET = '_offset'
|
|
@@ -95,7 +97,15 @@ class BaseHandler(tornado.web.RequestHandler):
|
|
|
95
97
|
|
|
96
98
|
|
|
97
99
|
class BaseApiHandler(BaseHandler, OAuthMiddleware):
|
|
98
|
-
|
|
100
|
+
def initialize(self, **kwargs) -> None:
|
|
101
|
+
super().initialize(**kwargs)
|
|
102
|
+
self.is_health_check = kwargs.get('is_health_check', False)
|
|
103
|
+
|
|
104
|
+
def prepare(self):
|
|
105
|
+
from mage_ai.server.server import latest_user_activity
|
|
106
|
+
if not self.is_health_check:
|
|
107
|
+
latest_user_activity.update_latest_activity()
|
|
108
|
+
super().prepare()
|
|
99
109
|
|
|
100
110
|
|
|
101
111
|
class BaseDetailHandler(BaseHandler):
|
mage_ai/server/api/v1.py
CHANGED
|
@@ -69,8 +69,9 @@ class ApiListHandler(BaseApiHandler):
|
|
|
69
69
|
self,
|
|
70
70
|
resource: str,
|
|
71
71
|
bypass_oauth_check: bool = False,
|
|
72
|
+
is_health_check: bool = False,
|
|
72
73
|
):
|
|
73
|
-
super().initialize(bypass_oauth_check=bypass_oauth_check)
|
|
74
|
+
super().initialize(bypass_oauth_check=bypass_oauth_check, is_health_check=is_health_check)
|
|
74
75
|
self.resource = resource
|
|
75
76
|
|
|
76
77
|
async def get(self):
|
mage_ai/server/constants.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=0" name="viewport"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link href="/favicon.ico" rel="icon"/><link rel="preload" href="/_next/static/css/d1e8e64d0b07af2f.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d1e8e64d0b07af2f.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-69c488534b494a9b.js" defer=""></script><script src="/_next/static/chunks/framework-7c365855dab1bf41.js" defer=""></script><script src="/_next/static/chunks/main-77fe248a6fbd12d8.js" defer=""></script><script src="/_next/static/chunks/pages/_app-
|
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta content="width=device-width, initial-scale=1.0, maximum-scale=5.0, user-scalable=0" name="viewport"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><link href="/favicon.ico" rel="icon"/><link rel="preload" href="/_next/static/css/d1e8e64d0b07af2f.css" as="style"/><link rel="stylesheet" href="/_next/static/css/d1e8e64d0b07af2f.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-69c488534b494a9b.js" defer=""></script><script src="/_next/static/chunks/framework-7c365855dab1bf41.js" defer=""></script><script src="/_next/static/chunks/main-77fe248a6fbd12d8.js" defer=""></script><script src="/_next/static/chunks/pages/_app-752d991f239a128f.js" defer=""></script><script src="/_next/static/chunks/pages/_error-e989623bffcbf724.js" defer=""></script><script src="/_next/static/PBVuphyo_muEAj347ZP_b/_buildManifest.js" defer=""></script><script src="/_next/static/PBVuphyo_muEAj347ZP_b/_ssgManifest.js" defer=""></script><style data-styled="" data-styled-version="5.3.6">html{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-overflow-style:scrollbar;}/*!sc*/
|
|
2
2
|
*,*::before,*::after{-webkit-box-sizing:inherit;box-sizing:inherit;}/*!sc*/
|
|
3
3
|
data-styled.g4[id="sc-global-czSCUT1"]{content:"sc-global-czSCUT1,"}/*!sc*/
|
|
4
4
|
.kOVcuR .Toastify__toast-container{margin-top:24px;padding:0 !important;width:500px !important;}/*!sc*/
|
|
@@ -20,4 +20,4 @@ data-styled.g5[id="ToastWrapper-sc-1a33ph1-0"]{content:"kOVcuR,"}/*!sc*/
|
|
|
20
20
|
.next-error-h1 {
|
|
21
21
|
border-right: 1px solid rgba(255, 255, 255, .3);
|
|
22
22
|
}
|
|
23
|
-
}</style><h1 class="next-error-h1" style="display:inline-block;margin:0;margin-right:20px;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404<!-- --></h1><div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle"><h2 style="font-size:14px;font-weight:normal;line-height:49px;margin:0;padding:0">This page could not be found<!-- -->.<!-- --></h2></div></div></div><div></div><div></div><div></div><div class="ToastWrapper-sc-1a33ph1-0 kOVcuR"><div class="Toastify"></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404},"currentTheme":{"accent":{"alert":"#F6540B","blue":"#4877FF","blueLight":"rgba(72, 119, 255, 0.5)","contentDefaultTransparent":"rgba(174, 174, 174, 0.5)","cyan":"#65E3FF","cyanLight":"rgba(101, 227, 255, 0.3)","cyanTransparent":"rgba(101, 227, 255, 0.12)","dbt":"#fc6949","dbtLight":"rgba(252, 105, 73, 0.5)","info":"#00ABFF","infoTransparent":"rgba(0, 171, 255, 0.5)","negative":"#FF1E59","negativeTransparent":"rgba(255, 30, 89, 0.3)","pink":"#FF4FF8","pinkLight":"rgb(255, 79, 248, 0.5)","positive":"#00A81A","primaryTransparent":"rgba(155, 108, 167, 0.5)","purple":"#7D55EC","purpleLight":"rgba(125, 85, 236, 0.5)","rose":"#D1A2AB","roseLight":"rgba(209, 162, 171, 0.5)","sky":"#6AA1E0","skyLight":"rgba(106, 161, 224, 0.05)","teal":"#00B4CC","tealLight":"rgba(0, 180, 204, 0.5)","warning":"#DD9900","warningTransparent":"rgba(221, 153, 0, 0.5)","yellow":"#FFCC19","yellowLight":"rgba(255, 204, 25, 0.5)"},"background":{"chartBlock":"#2E3036","codeArea":"#1E1F24","codeTextarea":"#000000","content":"#1B1C20","danger":"#FFD0DB","dark":"#B1B8C3","dashboard":"#18181C","header":"#1B1B1B","menu":"#0F4CFF","muted":"#F9FAFC","navigation":"#EDEDED","output":"#2E3036","page":"#1E1F24","panel":"#232429","popup":"#27292E","row":"#2C2C2C","row2":"#51535C","scrollbarThumb":"rgba(100, 100, 100, 0.5)","scrollbarThumbHover":"rgba(255, 255, 255, 0.3)","scrollbarTrack":"#2E3036","success":"#8ADE00","successLight":"rgb(138, 222, 0, 0.3)","table":"#292A2F","tag":"#3A4550"},"borders":{"button":"#454850","contrast":"#FFFFFF","danger":"#FF144D","dark":"#000000","darkLight":"#2E3036","info":"#FFCC19","light":"#2F3034","medium":"#1C1C1C","medium2":"#141414","success":"#2FCB52"},"brand":{"earth100":"#C6EEDB","earth200":"#9DDFBF","earth300":"#6BBF96","earth400":"#37A46F","earth400Transparent":"rgba(55, 164, 111, 0.4)","earth500":"#00954C","energy100":"#FFF4BA","energy200":"#FFED92","energy300":"#FFE662","energy400":"#FFDA19","energy400Transparent":"rgba(255, 218, 25, 0.04)","energy500":"#F6C000","fire100":"#FFD7E0","fire200":"#FFA3B9","fire300":"#FF547D","fire400":"#FF144D","fire400Transparent":"rgba(255, 20, 77, 0.4)","fire500":"#EB0032","stone100":"#F3E6D7","stone200":"#E3D4C2","stone400":"#BFA78B","stone500":"#AF8859","water100":"#BDCEFF","water200":"#81A1FF","water300":"#517DFF","water400":"#2A60FE","water400Transparent":"rgba(42, 96, 254, 0.4)","water500":"#0F4CFF","wind100":"#EEEAFF","wind200":"#CCC1F4","wind300":"#A698DD","wind400":"#6B50D7","wind400SuperTransparent":"rgba(107, 80, 215, 0.12)","wind400Transparent":"rgba(107, 80, 215, 0.4)","wind500":"#4E32BC"},"chart":{"backgroundPrimary":"#7D55EC","backgroundSecondary":"#FF144D","backgroundTertiary":"#86E2FF","button1":"#4877FF","button2":"#FFCC19","button3":"#8ADE00","button4":"#FF4FF8","button5":"#B98D95","lines":"#9B6CA7","primary":"#6B50D7","secondary":"#FF144D","tertiary":"#2A60FE"},"content":{"active":"#FFFFFF","default":"#AEAEAE","disabled":"rgba(255, 255, 255, 0.3)","inverted":"#2C2C2C","muted":"#787A85"},"elevation":{"visualizationAccent":"#996CFF","visualizationAccentAlt":"#C1ACF7"},"feature":{"active":"rgba(250, 248, 254, 0.14)","disabled":"rgba(201, 206, 218, 0.12)"},"icons":{"neutral":"#787878"},"interactive":{"activeBorder":"#060606","checked":"#060606","dangerBorder":"#FF144D","defaultBackground":"#36383F","defaultBorder":"#ffffff1a","disabledBorder":"#B1B8C3","focusBackground":"#B1B8C3","focusBorder":"#86E2FF","hoverBackground":"#4E4E4E","hoverBorder":"#B9BFCA","hoverOverlay":"rgba(255, 255, 255, 0.1)","linkPrimary":"#1752FF","linkPrimaryHover":"#4877FF","linkPrimaryLight":"#5982ff","linkSecondary":"#6B50D7","linkSecondaryDisabled":"#C4B9EF","linkText":"#6AA1E0","linkTextLight":"#9ECBFF","purple":"#885EFF","rowHoverBackground":"rgba(0, 0, 0, 0.1)","transparent":"rgba(255, 255, 255, 0)"},"loader":{"color":"#EB0032","colorInverted":"#8ADE00"},"logo":{"color":"#FFFFFF"},"monotone":{"black":"#060606","blackTransparent":"rgba(0, 0, 0, 0.6)","gray":"#B1B8C3","grey100":"#F2F2F2","grey200":"#D5D7DC","grey300":"#B4B8C0","grey400":"#70747C","grey500":"#51535C","purple":"#6B50D7","white":"#FFFFFF","whiteTransparent":"rgba(255, 255, 255, 0.6)"},"neutral":{"n100":"#E7E8EA","n200":"#D8DADE","n300":"#CBCCD0","n400":"#BCBEC4","n500":"#AEB0B6"},"progress":{"negative":"#FF144D","positive":"#6B50D7"},"shadow":{"base":"12px 40px 120px rgba(106, 117, 139, 0.4)","frame":"0px 10px 40px rgba(0, 0, 0, 0.26)","menu":"4px 10px 20px rgba(6, 6, 6, 0.12)","popup":"10px 20px 40px rgba(0, 0, 0, 0.2)","small":"0px, 4px, rgba(0, 0, 0, 0.25)","window":"0px 10px 60px rgba(0, 0, 0, 0.7)"},"status":{"negative":"#FF144D","positive":"#24B400"},"text":{"fileBrowser":"#787A85"}}},"page":"/_error","query":{},"buildId":"
|
|
23
|
+
}</style><h1 class="next-error-h1" style="display:inline-block;margin:0;margin-right:20px;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404<!-- --></h1><div style="display:inline-block;text-align:left;line-height:49px;height:49px;vertical-align:middle"><h2 style="font-size:14px;font-weight:normal;line-height:49px;margin:0;padding:0">This page could not be found<!-- -->.<!-- --></h2></div></div></div><div></div><div></div><div></div><div class="ToastWrapper-sc-1a33ph1-0 kOVcuR"><div class="Toastify"></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404},"currentTheme":{"accent":{"alert":"#F6540B","blue":"#4877FF","blueLight":"rgba(72, 119, 255, 0.5)","contentDefaultTransparent":"rgba(174, 174, 174, 0.5)","cyan":"#65E3FF","cyanLight":"rgba(101, 227, 255, 0.3)","cyanTransparent":"rgba(101, 227, 255, 0.12)","dbt":"#fc6949","dbtLight":"rgba(252, 105, 73, 0.5)","info":"#00ABFF","infoTransparent":"rgba(0, 171, 255, 0.5)","negative":"#FF1E59","negativeTransparent":"rgba(255, 30, 89, 0.3)","pink":"#FF4FF8","pinkLight":"rgb(255, 79, 248, 0.5)","positive":"#00A81A","primaryTransparent":"rgba(155, 108, 167, 0.5)","purple":"#7D55EC","purpleLight":"rgba(125, 85, 236, 0.5)","rose":"#D1A2AB","roseLight":"rgba(209, 162, 171, 0.5)","sky":"#6AA1E0","skyLight":"rgba(106, 161, 224, 0.05)","teal":"#00B4CC","tealLight":"rgba(0, 180, 204, 0.5)","warning":"#DD9900","warningTransparent":"rgba(221, 153, 0, 0.5)","yellow":"#FFCC19","yellowLight":"rgba(255, 204, 25, 0.5)"},"background":{"chartBlock":"#2E3036","codeArea":"#1E1F24","codeTextarea":"#000000","content":"#1B1C20","danger":"#FFD0DB","dark":"#B1B8C3","dashboard":"#18181C","header":"#1B1B1B","menu":"#0F4CFF","muted":"#F9FAFC","navigation":"#EDEDED","output":"#2E3036","page":"#1E1F24","panel":"#232429","popup":"#27292E","row":"#2C2C2C","row2":"#51535C","scrollbarThumb":"rgba(100, 100, 100, 0.5)","scrollbarThumbHover":"rgba(255, 255, 255, 0.3)","scrollbarTrack":"#2E3036","success":"#8ADE00","successLight":"rgb(138, 222, 0, 0.3)","table":"#292A2F","tag":"#3A4550"},"borders":{"button":"#454850","contrast":"#FFFFFF","danger":"#FF144D","dark":"#000000","darkLight":"#2E3036","info":"#FFCC19","light":"#2F3034","medium":"#1C1C1C","medium2":"#141414","success":"#2FCB52"},"brand":{"earth100":"#C6EEDB","earth200":"#9DDFBF","earth300":"#6BBF96","earth400":"#37A46F","earth400Transparent":"rgba(55, 164, 111, 0.4)","earth500":"#00954C","energy100":"#FFF4BA","energy200":"#FFED92","energy300":"#FFE662","energy400":"#FFDA19","energy400Transparent":"rgba(255, 218, 25, 0.04)","energy500":"#F6C000","fire100":"#FFD7E0","fire200":"#FFA3B9","fire300":"#FF547D","fire400":"#FF144D","fire400Transparent":"rgba(255, 20, 77, 0.4)","fire500":"#EB0032","stone100":"#F3E6D7","stone200":"#E3D4C2","stone400":"#BFA78B","stone500":"#AF8859","water100":"#BDCEFF","water200":"#81A1FF","water300":"#517DFF","water400":"#2A60FE","water400Transparent":"rgba(42, 96, 254, 0.4)","water500":"#0F4CFF","wind100":"#EEEAFF","wind200":"#CCC1F4","wind300":"#A698DD","wind400":"#6B50D7","wind400SuperTransparent":"rgba(107, 80, 215, 0.12)","wind400Transparent":"rgba(107, 80, 215, 0.4)","wind500":"#4E32BC"},"chart":{"backgroundPrimary":"#7D55EC","backgroundSecondary":"#FF144D","backgroundTertiary":"#86E2FF","button1":"#4877FF","button2":"#FFCC19","button3":"#8ADE00","button4":"#FF4FF8","button5":"#B98D95","lines":"#9B6CA7","primary":"#6B50D7","secondary":"#FF144D","tertiary":"#2A60FE"},"content":{"active":"#FFFFFF","default":"#AEAEAE","disabled":"rgba(255, 255, 255, 0.3)","inverted":"#2C2C2C","muted":"#787A85"},"elevation":{"visualizationAccent":"#996CFF","visualizationAccentAlt":"#C1ACF7"},"feature":{"active":"rgba(250, 248, 254, 0.14)","disabled":"rgba(201, 206, 218, 0.12)"},"icons":{"neutral":"#787878"},"interactive":{"activeBorder":"#060606","checked":"#060606","dangerBorder":"#FF144D","defaultBackground":"#36383F","defaultBorder":"#ffffff1a","disabledBorder":"#B1B8C3","focusBackground":"#B1B8C3","focusBorder":"#86E2FF","hoverBackground":"#4E4E4E","hoverBorder":"#B9BFCA","hoverOverlay":"rgba(255, 255, 255, 0.1)","linkPrimary":"#1752FF","linkPrimaryHover":"#4877FF","linkPrimaryLight":"#5982ff","linkSecondary":"#6B50D7","linkSecondaryDisabled":"#C4B9EF","linkText":"#6AA1E0","linkTextLight":"#9ECBFF","purple":"#885EFF","rowHoverBackground":"rgba(0, 0, 0, 0.1)","transparent":"rgba(255, 255, 255, 0)"},"loader":{"color":"#EB0032","colorInverted":"#8ADE00"},"logo":{"color":"#FFFFFF"},"monotone":{"black":"#060606","blackTransparent":"rgba(0, 0, 0, 0.6)","gray":"#B1B8C3","grey100":"#F2F2F2","grey200":"#D5D7DC","grey300":"#B4B8C0","grey400":"#70747C","grey500":"#51535C","purple":"#6B50D7","white":"#FFFFFF","whiteTransparent":"rgba(255, 255, 255, 0.6)"},"neutral":{"n100":"#E7E8EA","n200":"#D8DADE","n300":"#CBCCD0","n400":"#BCBEC4","n500":"#AEB0B6"},"progress":{"negative":"#FF144D","positive":"#6B50D7"},"shadow":{"base":"12px 40px 120px rgba(106, 117, 139, 0.4)","frame":"0px 10px 40px rgba(0, 0, 0, 0.26)","menu":"4px 10px 20px rgba(6, 6, 6, 0.12)","popup":"10px 20px 40px rgba(0, 0, 0, 0.2)","small":"0px, 4px, rgba(0, 0, 0, 0.25)","window":"0px 10px 60px rgba(0, 0, 0, 0.7)"},"status":{"negative":"#FF144D","positive":"#24B400"},"text":{"fileBrowser":"#787A85"}}},"page":"/_error","query":{},"buildId":"PBVuphyo_muEAj347ZP_b","nextExport":true,"isFallback":false,"gip":true,"appGip":true,"scriptLoader":[]}</script></body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
self.__BUILD_MANIFEST=function(s,e,i,a,c,t,n,p,l,u,g,r,k,b,d,f,o,h,j,m,w,_,v,y,I,B,F,A,D,E,L,M,N,S,T,U,C,x,P,q,z,G,H,J,K,O,Q){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/chunks/pages/index-a22f976b85beef2d.js"],"/_error":["static/chunks/pages/_error-e989623bffcbf724.js"],"/block-layout":[I,t,r,k,f,j,_,B,D,s,e,i,o,m,E,N,"static/chunks/pages/block-layout-a27a28d2a615e364.js"],"/files":[a,t,k,S,"static/chunks/6750-3c4c9e36f3a27999.js",s,e,c,i,n,p,l,o,T,"static/chunks/pages/files-98e27a4d7bd0da47.js"],"/global-data-products":[a,t,s,e,c,i,n,p,v,L,x,"static/chunks/pages/global-data-products-26909dec66f00231.js"],"/global-data-products/[...slug]":[a,t,s,e,c,i,n,p,v,L,x,"static/chunks/pages/global-data-products/[...slug]-9eb5dad57da13efd.js"],"/manage":[a,t,k,s,e,c,i,n,p,o,"static/chunks/pages/manage-476c921d62f565fc.js"],"/manage/settings":[a,t,k,"static/chunks/2261-27a93815f4d82dfc.js",s,e,c,i,o,"static/chunks/pages/manage/settings-b9eea6abc676ca81.js"],"/manage/users":[a,t,s,e,c,i,n,p,"static/chunks/pages/manage/users-bfce0ee677d57206.js"],"/manage/users/new":[a,s,e,c,i,U,"static/chunks/pages/manage/users/new-ae6083077c9c1c41.js"],"/manage/users/[user]":[a,t,s,e,c,i,n,p,U,"static/chunks/pages/manage/users/[user]-11c601c6ef07fe86.js"],"/overview":[I,a,t,g,b,r,k,f,j,_,F,B,D,s,e,c,i,n,p,l,d,o,w,m,A,E,N,P,"static/chunks/pages/overview-2ec6b17e45a52be8.js"],"/pipeline-runs":[a,t,s,e,c,i,n,p,v,"static/chunks/pages/pipeline-runs-605918f3a5c1aac4.js"],"/pipelines":[a,t,g,b,r,k,f,F,s,e,c,i,n,p,l,d,o,w,m,A,P,q,"static/chunks/pages/pipelines-270b912e1ac189b5.js"],"/pipelines/[pipeline]":["static/chunks/pages/pipelines/[pipeline]-35fe7762cb83a733.js"],"/pipelines/[pipeline]/backfills":[a,t,s,e,c,i,n,p,u,"static/chunks/pages/pipelines/[pipeline]/backfills-2402004a19a6ad53.js"],"/pipelines/[pipeline]/backfills/[...slug]":[a,t,g,b,y,M,s,e,c,i,n,p,l,u,d,v,"static/chunks/pages/pipelines/[pipeline]/backfills/[...slug]-ee65a62ed166bd85.js"],"/pipelines/[pipeline]/dashboard":[I,a,t,r,k,f,j,_,B,D,s,e,c,i,u,o,m,E,N,"static/chunks/pages/pipelines/[pipeline]/dashboard-8781db69f19759a1.js"],"/pipelines/[pipeline]/edit":[I,a,t,g,b,r,k,f,j,_,y,F,B,D,S,"static/chunks/6563-5b3b97c9088baf69.js",s,e,c,i,n,p,l,d,w,A,E,T,z,"static/chunks/pages/pipelines/[pipeline]/edit-d7fd4857579e2b00.js"],"/pipelines/[pipeline]/logs":[a,t,g,f,M,s,e,c,i,n,p,l,u,m,"static/chunks/pages/pipelines/[pipeline]/logs-234007c99efdccf6.js"],"/pipelines/[pipeline]/monitors":[a,t,j,_,"static/chunks/9737-1456491f9fdb09d3.js",s,e,c,i,u,C,"static/chunks/pages/pipelines/[pipeline]/monitors-a057b17847b82468.js"],"/pipelines/[pipeline]/monitors/block-runs":[a,t,j,_,"static/chunks/9210-b26999bcfb636602.js",s,e,c,i,l,u,C,"static/chunks/pages/pipelines/[pipeline]/monitors/block-runs-da7510d4b277e47b.js"],"/pipelines/[pipeline]/monitors/block-runtime":[I,a,t,j,_,"static/chunks/6485-dbc1ca8f24401caf.js",s,e,c,i,l,u,C,"static/chunks/pages/pipelines/[pipeline]/monitors/block-runtime-eae853ff34b09481.js"],"/pipelines/[pipeline]/runs":[a,t,g,b,y,s,e,c,i,n,p,l,u,d,v,G,"static/chunks/pages/pipelines/[pipeline]/runs-3f0980d8810a540b.js"],"/pipelines/[pipeline]/runs/[run]":[a,t,g,b,f,j,y,B,s,e,c,i,n,p,l,u,d,m,G,"static/chunks/pages/pipelines/[pipeline]/runs/[run]-99d11c86f8b15369.js"],"/pipelines/[pipeline]/settings":[a,t,s,e,c,i,u,"static/chunks/pages/pipelines/[pipeline]/settings-9edf75d03460aaeb.js"],"/pipelines/[pipeline]/syncs":[a,t,s,e,c,i,n,p,u,"static/chunks/pages/pipelines/[pipeline]/syncs-e7692e54979f037d.js"],"/pipelines/[pipeline]/triggers":[a,t,g,b,r,y,M,H,s,e,c,i,n,p,l,u,d,w,L,J,q,"static/chunks/pages/pipelines/[pipeline]/triggers-5eff96c149584e87.js"],"/pipelines/[pipeline]/triggers/[...slug]":[a,t,g,b,r,y,M,H,s,e,c,i,n,p,l,u,d,w,v,J,"static/chunks/pages/pipelines/[pipeline]/triggers/[...slug]-cb6a3bcaf4fa1a81.js"],"/settings":["static/chunks/pages/settings-56f83205752b1323.js"],"/settings/account/profile":[a,s,e,c,i,h,U,"static/chunks/pages/settings/account/profile-2058d022972cdea4.js"],"/settings/workspace/permissions":[a,t,s,e,c,i,n,p,h,K,"static/chunks/pages/settings/workspace/permissions-cb1cdf5f8e5bf9c5.js"],"/settings/workspace/permissions/[...slug]":[a,t,s,e,c,i,n,p,h,K,"static/chunks/pages/settings/workspace/permissions/[...slug]-1a95628ea8d0d846.js"],"/settings/workspace/preferences":[a,s,e,c,i,h,"static/chunks/pages/settings/workspace/preferences-58978256db4efbda.js"],"/settings/workspace/roles":[a,t,s,e,c,i,n,p,h,O,"static/chunks/pages/settings/workspace/roles-1694c5eb1acbcf30.js"],"/settings/workspace/roles/[...slug]":[a,t,s,e,c,i,n,p,h,O,"static/chunks/pages/settings/workspace/roles/[...slug]-9ddd7eb842d5a911.js"],"/settings/workspace/sync-data":[a,s,e,c,i,h,"static/chunks/pages/settings/workspace/sync-data-6850e854fbedbb61.js"],"/settings/workspace/users":[a,t,s,e,c,i,n,p,h,Q,"static/chunks/pages/settings/workspace/users-f551c5665bfd3494.js"],"/settings/workspace/users/[...slug]":[a,t,s,e,c,i,n,p,h,Q,"static/chunks/pages/settings/workspace/users/[...slug]-5061c073e1c0de07.js"],"/sign-in":[a,s,e,c,"static/chunks/pages/sign-in-e779dbab123e626e.js"],"/templates":[a,t,g,b,r,k,f,F,s,e,c,i,n,p,l,d,o,w,m,A,"static/chunks/pages/templates-7079d637e396f2a8.js"],"/templates/[...slug]":[a,t,g,b,r,k,f,F,s,e,c,i,n,p,l,d,o,w,m,A,"static/chunks/pages/templates/[...slug]-935113d252ada806.js"],"/terminal":[a,s,e,c,i,"static/chunks/pages/terminal-67fdb4a3be93aa14.js"],"/test":[t,r,s,n,l,w,z,"static/chunks/pages/test-4a5ae8f9da088932.js"],"/triggers":[a,t,s,e,c,i,n,p,L,"static/chunks/pages/triggers-9c0374c7c783b34a.js"],"/version-control":[a,t,S,"static/chunks/8478-3f642f8420d9ef66.js",s,e,c,i,n,p,l,T,"static/chunks/pages/version-control-ea3a0d48e5822b42.js"],sortedPages:["/","/_app","/_error","/block-layout","/files","/global-data-products","/global-data-products/[...slug]","/manage","/manage/settings","/manage/users","/manage/users/new","/manage/users/[user]","/overview","/pipeline-runs","/pipelines","/pipelines/[pipeline]","/pipelines/[pipeline]/backfills","/pipelines/[pipeline]/backfills/[...slug]","/pipelines/[pipeline]/dashboard","/pipelines/[pipeline]/edit","/pipelines/[pipeline]/logs","/pipelines/[pipeline]/monitors","/pipelines/[pipeline]/monitors/block-runs","/pipelines/[pipeline]/monitors/block-runtime","/pipelines/[pipeline]/runs","/pipelines/[pipeline]/runs/[run]","/pipelines/[pipeline]/settings","/pipelines/[pipeline]/syncs","/pipelines/[pipeline]/triggers","/pipelines/[pipeline]/triggers/[...slug]","/settings","/settings/account/profile","/settings/workspace/permissions","/settings/workspace/permissions/[...slug]","/settings/workspace/preferences","/settings/workspace/roles","/settings/workspace/roles/[...slug]","/settings/workspace/sync-data","/settings/workspace/users","/settings/workspace/users/[...slug]","/sign-in","/templates","/templates/[...slug]","/terminal","/test","/triggers","/version-control"]}}("static/chunks/8013-e67c71ddea072a20.js","static/chunks/600-2b6bafe425cfd52c.js","static/chunks/8264-2743af6deab87497.js","static/chunks/844-1e171f361e63b36d.js","static/chunks/4636-84f545d1d238df13.js","static/chunks/2083-78a438dbdc57d1e4.js","static/chunks/4666-d8994abbc40b52ee.js","static/chunks/5499-b74459f6be5f9229.js","static/chunks/4839-e5fe343a369734bc.js","static/chunks/5457-97433bc45b42a88a.js","static/chunks/2851-dc553b2d9ee109c2.js","static/chunks/341-ef0f7b98b7f69802.js","static/chunks/8789-4f858e520d46973b.js","static/chunks/1124-d8fc76201b83b376.js","static/chunks/7055-17504ff848d2ce56.js","static/chunks/4913-24ccab3739f1c678.js","static/chunks/5810-7f576f7267788fe0.js","static/chunks/3684-e1a713b7c16f0151.js","static/chunks/5896-14e5a23b1c6a0769.js","static/chunks/3859-ba594d21a1260cd2.js","static/chunks/1769-613e23e361eb5bce.js","static/chunks/2714-1e79e9f2e998b544.js","static/chunks/3943-35659e0a3fc6bda5.js","static/chunks/9161-837b653aa849a76f.js","static/chunks/29107295-989a0767a635d9d5.js","static/chunks/2631-b9f9bea3f1cf906d.js","static/chunks/1821-953efd0da290d25f.js","static/chunks/9264-5730e4e059db40a8.js","static/chunks/4783-1a21d9be47574bba.js","static/chunks/976-9a0469f807d8a343.js","static/chunks/1743-fe9deb3242e0e587.js","static/chunks/4495-4f0340aa82e0c623.js","static/chunks/9440-0267f0e8690ea3c4.js","static/chunks/7011-81dd8269c4806d26.js","static/chunks/553-9a94dd8b33e381f8.js","static/chunks/6043-6ea109833b88eb1d.js","static/chunks/9242-4c61fd2e1018e626.js","static/chunks/2327-1a797c758f8b064a.js","static/chunks/2677-a85c5a72bb695304.js","static/chunks/3951-22dc3b7d6ec6f5d5.js","static/chunks/1749-a6bdce4ee8a09bce.js","static/chunks/3419-0df6c5ef72f2e672.js","static/chunks/9302-913007e2f801ad65.js","static/chunks/6333-ca4cd6a73a597a40.js","static/chunks/8146-941c5155c3bfcc35.js","static/chunks/7022-80d082a1d7fd1234.js","static/chunks/7361-25f211ef377e5958.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|