fractal-server 2.17.2__py3-none-any.whl → 2.18.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.
Files changed (108) hide show
  1. fractal_server/__init__.py +1 -1
  2. fractal_server/__main__.py +2 -1
  3. fractal_server/app/models/linkuserproject.py +40 -0
  4. fractal_server/app/models/security.py +7 -5
  5. fractal_server/app/models/v2/job.py +13 -2
  6. fractal_server/app/models/v2/resource.py +13 -0
  7. fractal_server/app/routes/admin/v2/__init__.py +11 -11
  8. fractal_server/app/routes/admin/v2/accounting.py +2 -2
  9. fractal_server/app/routes/admin/v2/job.py +34 -23
  10. fractal_server/app/routes/admin/v2/sharing.py +103 -0
  11. fractal_server/app/routes/admin/v2/task.py +9 -8
  12. fractal_server/app/routes/admin/v2/task_group.py +94 -16
  13. fractal_server/app/routes/admin/v2/task_group_lifecycle.py +20 -20
  14. fractal_server/app/routes/api/__init__.py +0 -9
  15. fractal_server/app/routes/api/v2/__init__.py +47 -47
  16. fractal_server/app/routes/api/v2/_aux_functions.py +65 -64
  17. fractal_server/app/routes/api/v2/_aux_functions_history.py +8 -3
  18. fractal_server/app/routes/api/v2/_aux_functions_sharing.py +97 -0
  19. fractal_server/app/routes/api/v2/_aux_functions_task_lifecycle.py +4 -4
  20. fractal_server/app/routes/api/v2/_aux_functions_tasks.py +2 -2
  21. fractal_server/app/routes/api/v2/dataset.py +89 -77
  22. fractal_server/app/routes/api/v2/history.py +28 -16
  23. fractal_server/app/routes/api/v2/images.py +22 -8
  24. fractal_server/app/routes/api/v2/job.py +40 -24
  25. fractal_server/app/routes/api/v2/pre_submission_checks.py +13 -6
  26. fractal_server/app/routes/api/v2/project.py +48 -25
  27. fractal_server/app/routes/api/v2/sharing.py +311 -0
  28. fractal_server/app/routes/api/v2/status_legacy.py +22 -33
  29. fractal_server/app/routes/api/v2/submit.py +76 -71
  30. fractal_server/app/routes/api/v2/task.py +15 -17
  31. fractal_server/app/routes/api/v2/task_collection.py +18 -18
  32. fractal_server/app/routes/api/v2/task_collection_custom.py +11 -13
  33. fractal_server/app/routes/api/v2/task_collection_pixi.py +9 -9
  34. fractal_server/app/routes/api/v2/task_group.py +18 -18
  35. fractal_server/app/routes/api/v2/task_group_lifecycle.py +26 -26
  36. fractal_server/app/routes/api/v2/task_version_update.py +12 -9
  37. fractal_server/app/routes/api/v2/workflow.py +41 -29
  38. fractal_server/app/routes/api/v2/workflow_import.py +25 -23
  39. fractal_server/app/routes/api/v2/workflowtask.py +25 -17
  40. fractal_server/app/routes/auth/_aux_auth.py +100 -0
  41. fractal_server/app/routes/auth/current_user.py +0 -63
  42. fractal_server/app/routes/auth/group.py +1 -30
  43. fractal_server/app/routes/auth/router.py +2 -0
  44. fractal_server/app/routes/auth/users.py +9 -0
  45. fractal_server/app/routes/auth/viewer_paths.py +43 -0
  46. fractal_server/app/schemas/user.py +29 -12
  47. fractal_server/app/schemas/user_group.py +0 -15
  48. fractal_server/app/schemas/v2/__init__.py +55 -48
  49. fractal_server/app/schemas/v2/dataset.py +35 -13
  50. fractal_server/app/schemas/v2/dumps.py +9 -9
  51. fractal_server/app/schemas/v2/job.py +11 -11
  52. fractal_server/app/schemas/v2/project.py +3 -3
  53. fractal_server/app/schemas/v2/resource.py +13 -4
  54. fractal_server/app/schemas/v2/sharing.py +99 -0
  55. fractal_server/app/schemas/v2/status_legacy.py +3 -3
  56. fractal_server/app/schemas/v2/task.py +6 -6
  57. fractal_server/app/schemas/v2/task_collection.py +4 -4
  58. fractal_server/app/schemas/v2/task_group.py +16 -16
  59. fractal_server/app/schemas/v2/workflow.py +16 -16
  60. fractal_server/app/schemas/v2/workflowtask.py +14 -14
  61. fractal_server/app/security/__init__.py +1 -1
  62. fractal_server/app/shutdown.py +6 -6
  63. fractal_server/config/__init__.py +0 -6
  64. fractal_server/config/_data.py +0 -79
  65. fractal_server/config/_main.py +6 -1
  66. fractal_server/data_migrations/2_18_0.py +30 -0
  67. fractal_server/images/models.py +1 -2
  68. fractal_server/main.py +72 -11
  69. fractal_server/migrations/versions/7910eed4cf97_user_project_dirs_and_usergroup_viewer_.py +60 -0
  70. fractal_server/migrations/versions/88270f589c9b_add_prevent_new_submissions.py +39 -0
  71. fractal_server/migrations/versions/bc0e8b3327a7_project_sharing.py +72 -0
  72. fractal_server/migrations/versions/f0702066b007_one_submitted_job_per_dataset.py +40 -0
  73. fractal_server/runner/config/_slurm.py +2 -0
  74. fractal_server/runner/executors/slurm_common/_batching.py +4 -10
  75. fractal_server/runner/executors/slurm_common/slurm_config.py +1 -0
  76. fractal_server/runner/executors/slurm_ssh/runner.py +1 -1
  77. fractal_server/runner/executors/slurm_sudo/runner.py +1 -1
  78. fractal_server/runner/v2/_local.py +4 -3
  79. fractal_server/runner/v2/_slurm_ssh.py +4 -3
  80. fractal_server/runner/v2/_slurm_sudo.py +4 -3
  81. fractal_server/runner/v2/runner.py +36 -17
  82. fractal_server/runner/v2/runner_functions.py +11 -14
  83. fractal_server/runner/v2/submit_workflow.py +22 -9
  84. fractal_server/tasks/v2/local/_utils.py +2 -2
  85. fractal_server/tasks/v2/local/collect.py +5 -6
  86. fractal_server/tasks/v2/local/collect_pixi.py +5 -6
  87. fractal_server/tasks/v2/local/deactivate.py +7 -7
  88. fractal_server/tasks/v2/local/deactivate_pixi.py +3 -3
  89. fractal_server/tasks/v2/local/delete.py +5 -5
  90. fractal_server/tasks/v2/local/reactivate.py +5 -5
  91. fractal_server/tasks/v2/local/reactivate_pixi.py +5 -5
  92. fractal_server/tasks/v2/ssh/collect.py +5 -5
  93. fractal_server/tasks/v2/ssh/collect_pixi.py +5 -5
  94. fractal_server/tasks/v2/ssh/deactivate.py +7 -7
  95. fractal_server/tasks/v2/ssh/deactivate_pixi.py +2 -2
  96. fractal_server/tasks/v2/ssh/delete.py +5 -5
  97. fractal_server/tasks/v2/ssh/reactivate.py +5 -5
  98. fractal_server/tasks/v2/ssh/reactivate_pixi.py +5 -5
  99. fractal_server/tasks/v2/utils_background.py +7 -7
  100. fractal_server/tasks/v2/utils_database.py +5 -5
  101. fractal_server/types/__init__.py +22 -0
  102. fractal_server/types/validators/__init__.py +3 -0
  103. fractal_server/types/validators/_common_validators.py +32 -0
  104. {fractal_server-2.17.2.dist-info → fractal_server-2.18.0.dist-info}/METADATA +3 -2
  105. {fractal_server-2.17.2.dist-info → fractal_server-2.18.0.dist-info}/RECORD +108 -98
  106. {fractal_server-2.17.2.dist-info → fractal_server-2.18.0.dist-info}/WHEEL +0 -0
  107. {fractal_server-2.17.2.dist-info → fractal_server-2.18.0.dist-info}/entry_points.txt +0 -0
  108. {fractal_server-2.17.2.dist-info → fractal_server-2.18.0.dist-info}/licenses/LICENSE +0 -0
@@ -5,6 +5,7 @@ from fastapi import status
5
5
  from pydantic.types import AwareDatetime
6
6
  from sqlalchemy.sql.operators import is_
7
7
  from sqlalchemy.sql.operators import is_not
8
+ from sqlmodel import func
8
9
  from sqlmodel import select
9
10
 
10
11
  from fractal_server.app.db import AsyncSession
@@ -16,12 +17,15 @@ from fractal_server.app.routes.auth import current_superuser_act
16
17
  from fractal_server.app.routes.auth._aux_auth import (
17
18
  _verify_user_belongs_to_group,
18
19
  )
19
- from fractal_server.app.schemas.v2 import TaskGroupActivityActionV2
20
- from fractal_server.app.schemas.v2 import TaskGroupActivityStatusV2
21
- from fractal_server.app.schemas.v2 import TaskGroupActivityV2Read
20
+ from fractal_server.app.routes.pagination import PaginationRequest
21
+ from fractal_server.app.routes.pagination import PaginationResponse
22
+ from fractal_server.app.routes.pagination import get_pagination_params
23
+ from fractal_server.app.schemas.v2 import TaskGroupActivityAction
24
+ from fractal_server.app.schemas.v2 import TaskGroupActivityRead
25
+ from fractal_server.app.schemas.v2 import TaskGroupActivityStatus
26
+ from fractal_server.app.schemas.v2 import TaskGroupOriginEnum
22
27
  from fractal_server.app.schemas.v2 import TaskGroupReadSuperuser
23
- from fractal_server.app.schemas.v2 import TaskGroupUpdateV2
24
- from fractal_server.app.schemas.v2 import TaskGroupV2OriginEnum
28
+ from fractal_server.app.schemas.v2 import TaskGroupUpdate
25
29
  from fractal_server.logger import set_logger
26
30
 
27
31
  router = APIRouter()
@@ -29,39 +33,78 @@ router = APIRouter()
29
33
  logger = set_logger(__name__)
30
34
 
31
35
 
32
- @router.get("/activity/", response_model=list[TaskGroupActivityV2Read])
36
+ @router.get(
37
+ "/activity/", response_model=PaginationResponse[TaskGroupActivityRead]
38
+ )
33
39
  async def get_task_group_activity_list(
34
40
  task_group_activity_id: int | None = None,
35
41
  user_id: int | None = None,
36
42
  taskgroupv2_id: int | None = None,
37
43
  pkg_name: str | None = None,
38
- status: TaskGroupActivityStatusV2 | None = None,
39
- action: TaskGroupActivityActionV2 | None = None,
44
+ status: TaskGroupActivityStatus | None = None,
45
+ action: TaskGroupActivityAction | None = None,
40
46
  timestamp_started_min: AwareDatetime | None = None,
47
+ pagination: PaginationRequest = Depends(get_pagination_params),
41
48
  superuser: UserOAuth = Depends(current_superuser_act),
42
49
  db: AsyncSession = Depends(get_async_db),
43
- ) -> list[TaskGroupActivityV2Read]:
44
- stm = select(TaskGroupActivityV2)
50
+ ) -> PaginationResponse[TaskGroupActivityRead]:
51
+ # Assign pagination parameters
52
+ page = pagination.page
53
+ page_size = pagination.page_size
54
+
55
+ stm = select(TaskGroupActivityV2).order_by(
56
+ TaskGroupActivityV2.timestamp_started.desc()
57
+ )
58
+ stm_count = select(func.count(TaskGroupActivityV2.id))
45
59
  if task_group_activity_id is not None:
46
60
  stm = stm.where(TaskGroupActivityV2.id == task_group_activity_id)
61
+ stm_count = stm_count.where(
62
+ TaskGroupActivityV2.id == task_group_activity_id
63
+ )
47
64
  if user_id:
48
65
  stm = stm.where(TaskGroupActivityV2.user_id == user_id)
66
+ stm_count = stm_count.where(TaskGroupActivityV2.user_id == user_id)
49
67
  if taskgroupv2_id:
50
68
  stm = stm.where(TaskGroupActivityV2.taskgroupv2_id == taskgroupv2_id)
69
+ stm_count = stm_count.where(
70
+ TaskGroupActivityV2.taskgroupv2_id == taskgroupv2_id
71
+ )
51
72
  if pkg_name:
52
73
  stm = stm.where(TaskGroupActivityV2.pkg_name.icontains(pkg_name))
74
+ stm_count = stm_count.where(
75
+ TaskGroupActivityV2.pkg_name.icontains(pkg_name)
76
+ )
53
77
  if status:
54
78
  stm = stm.where(TaskGroupActivityV2.status == status)
79
+ stm_count = stm_count.where(TaskGroupActivityV2.status == status)
55
80
  if action:
56
81
  stm = stm.where(TaskGroupActivityV2.action == action)
82
+ stm_count = stm_count.where(TaskGroupActivityV2.action == action)
57
83
  if timestamp_started_min is not None:
58
84
  stm = stm.where(
59
85
  TaskGroupActivityV2.timestamp_started >= timestamp_started_min
60
86
  )
87
+ stm_count = stm_count.where(
88
+ TaskGroupActivityV2.timestamp_started >= timestamp_started_min
89
+ )
90
+
91
+ # Find total number of elements
92
+ res_total_count = await db.execute(stm_count)
93
+ total_count = res_total_count.scalar()
94
+ if page_size is None:
95
+ page_size = total_count
96
+ else:
97
+ stm = stm.offset((page - 1) * page_size).limit(page_size)
61
98
 
62
99
  res = await db.execute(stm)
63
100
  activities = res.scalars().all()
64
- return activities
101
+
102
+ return dict(
103
+ total_count=total_count,
104
+ page_size=page_size,
105
+ current_page=page,
106
+ items=activities,
107
+ )
65
108
 
66
109
 
67
110
  @router.get("/{task_group_id}/", response_model=TaskGroupReadSuperuser)
@@ -79,21 +122,27 @@ async def query_task_group(
79
122
  return task_group
80
123
 
81
124
 
82
- @router.get("/", response_model=list[TaskGroupReadSuperuser])
125
+ @router.get("/", response_model=PaginationResponse[TaskGroupReadSuperuser])
83
126
  async def query_task_group_list(
84
127
  user_id: int | None = None,
85
128
  user_group_id: int | None = None,
86
129
  private: bool | None = None,
87
130
  active: bool | None = None,
88
131
  pkg_name: str | None = None,
89
- origin: TaskGroupV2OriginEnum | None = None,
132
+ origin: TaskGroupOriginEnum | None = None,
90
133
  timestamp_last_used_min: AwareDatetime | None = None,
91
134
  timestamp_last_used_max: AwareDatetime | None = None,
92
135
  resource_id: int | None = None,
136
+ pagination: PaginationRequest = Depends(get_pagination_params),
93
137
  user: UserOAuth = Depends(current_superuser_act),
94
138
  db: AsyncSession = Depends(get_async_db),
95
- ) -> list[TaskGroupReadSuperuser]:
139
+ ) -> PaginationResponse[TaskGroupReadSuperuser]:
140
+ # Assign pagination parameters
141
+ page = pagination.page
142
+ page_size = pagination.page_size
143
+
96
144
  stm = select(TaskGroupV2)
145
+ stm_count = select(func.count(TaskGroupV2.id))
97
146
 
98
147
  if user_group_id is not None and private is True:
99
148
  raise HTTPException(
@@ -105,43 +154,72 @@ async def query_task_group_list(
105
154
  )
106
155
  if user_id is not None:
107
156
  stm = stm.where(TaskGroupV2.user_id == user_id)
157
+ stm_count = stm_count.where(TaskGroupV2.user_id == user_id)
108
158
  if user_group_id is not None:
109
159
  stm = stm.where(TaskGroupV2.user_group_id == user_group_id)
160
+ stm_count = stm_count.where(TaskGroupV2.user_group_id == user_group_id)
110
161
  if private is not None:
111
162
  if private is True:
112
163
  stm = stm.where(is_(TaskGroupV2.user_group_id, None))
164
+ stm_count = stm_count.where(is_(TaskGroupV2.user_group_id, None))
113
165
  else:
114
166
  stm = stm.where(is_not(TaskGroupV2.user_group_id, None))
167
+ stm_count = stm_count.where(is_not(TaskGroupV2.user_group_id, None))
115
168
  if active is not None:
116
169
  if active is True:
117
170
  stm = stm.where(is_(TaskGroupV2.active, True))
171
+ stm_count = stm_count.where(is_(TaskGroupV2.active, True))
118
172
  else:
119
173
  stm = stm.where(is_(TaskGroupV2.active, False))
174
+ stm_count = stm_count.where(is_(TaskGroupV2.active, False))
120
175
  if origin is not None:
121
176
  stm = stm.where(TaskGroupV2.origin == origin)
177
+ stm_count = stm_count.where(TaskGroupV2.origin == origin)
122
178
  if pkg_name is not None:
123
179
  stm = stm.where(TaskGroupV2.pkg_name.icontains(pkg_name))
180
+ stm_count = stm_count.where(TaskGroupV2.pkg_name.icontains(pkg_name))
124
181
  if timestamp_last_used_min is not None:
125
182
  stm = stm.where(
126
183
  TaskGroupV2.timestamp_last_used >= timestamp_last_used_min
127
184
  )
185
+ stm_count = stm_count.where(
186
+ TaskGroupV2.timestamp_last_used >= timestamp_last_used_min
187
+ )
128
188
  if timestamp_last_used_max is not None:
129
189
  stm = stm.where(
130
190
  TaskGroupV2.timestamp_last_used <= timestamp_last_used_max
131
191
  )
192
+ stm_count = stm_count.where(
193
+ TaskGroupV2.timestamp_last_used <= timestamp_last_used_max
194
+ )
132
195
  if resource_id is not None:
133
196
  stm = stm.where(TaskGroupV2.resource_id == resource_id)
197
+ stm_count = stm_count.where(TaskGroupV2.resource_id == resource_id)
198
+
199
+ # Find total number of elements
200
+ res_total_count = await db.execute(stm_count)
201
+ total_count = res_total_count.scalar()
202
+ if page_size is None:
203
+ page_size = total_count
204
+ else:
205
+ stm = stm.offset((page - 1) * page_size).limit(page_size)
134
206
 
135
207
  stm = stm.order_by(TaskGroupV2.id)
136
208
  res = await db.execute(stm)
137
209
  task_groups_list = res.scalars().all()
138
- return task_groups_list
210
+
211
+ return dict(
212
+ total_count=total_count,
213
+ page_size=page_size,
214
+ current_page=page,
215
+ items=task_groups_list,
216
+ )
139
217
 
140
218
 
141
219
  @router.patch("/{task_group_id}/", response_model=TaskGroupReadSuperuser)
142
220
  async def patch_task_group(
143
221
  task_group_id: int,
144
- task_group_update: TaskGroupUpdateV2,
222
+ task_group_update: TaskGroupUpdate,
145
223
  user: UserOAuth = Depends(current_superuser_act),
146
224
  db: AsyncSession = Depends(get_async_db),
147
225
  ) -> list[TaskGroupReadSuperuser]:
@@ -26,10 +26,10 @@ from fractal_server.app.routes.aux.validate_user_profile import (
26
26
  validate_user_profile,
27
27
  )
28
28
  from fractal_server.app.schemas.v2 import ResourceType
29
- from fractal_server.app.schemas.v2 import TaskGroupActivityActionV2
30
- from fractal_server.app.schemas.v2 import TaskGroupActivityStatusV2
31
- from fractal_server.app.schemas.v2 import TaskGroupActivityV2Read
32
- from fractal_server.app.schemas.v2 import TaskGroupV2OriginEnum
29
+ from fractal_server.app.schemas.v2 import TaskGroupActivityAction
30
+ from fractal_server.app.schemas.v2 import TaskGroupActivityRead
31
+ from fractal_server.app.schemas.v2 import TaskGroupActivityStatus
32
+ from fractal_server.app.schemas.v2 import TaskGroupOriginEnum
33
33
  from fractal_server.logger import set_logger
34
34
  from fractal_server.tasks.v2.local import deactivate_local
35
35
  from fractal_server.tasks.v2.local import delete_local
@@ -46,7 +46,7 @@ logger = set_logger(__name__)
46
46
 
47
47
  @router.post(
48
48
  "/{task_group_id}/deactivate/",
49
- response_model=TaskGroupActivityV2Read,
49
+ response_model=TaskGroupActivityRead,
50
50
  )
51
51
  async def deactivate_task_group(
52
52
  task_group_id: int,
@@ -54,7 +54,7 @@ async def deactivate_task_group(
54
54
  response: Response,
55
55
  superuser: UserOAuth = Depends(current_superuser_act),
56
56
  db: AsyncSession = Depends(get_async_db),
57
- ) -> TaskGroupActivityV2Read:
57
+ ) -> TaskGroupActivityRead:
58
58
  """
59
59
  Deactivate task-group venv
60
60
  """
@@ -78,13 +78,13 @@ async def deactivate_task_group(
78
78
  await check_no_submitted_job(task_group_id=task_group.id, db=db)
79
79
 
80
80
  # Shortcut for task-group with origin="other"
81
- if task_group.origin == TaskGroupV2OriginEnum.OTHER:
81
+ if task_group.origin == TaskGroupOriginEnum.OTHER:
82
82
  task_group.active = False
83
83
  task_group_activity = TaskGroupActivityV2(
84
84
  user_id=task_group.user_id,
85
85
  taskgroupv2_id=task_group.id,
86
- status=TaskGroupActivityStatusV2.OK,
87
- action=TaskGroupActivityActionV2.DEACTIVATE,
86
+ status=TaskGroupActivityStatus.OK,
87
+ action=TaskGroupActivityAction.DEACTIVATE,
88
88
  pkg_name=task_group.pkg_name,
89
89
  version=(task_group.version or "N/A"),
90
90
  log=(
@@ -103,8 +103,8 @@ async def deactivate_task_group(
103
103
  task_group_activity = TaskGroupActivityV2(
104
104
  user_id=task_group.user_id,
105
105
  taskgroupv2_id=task_group.id,
106
- status=TaskGroupActivityStatusV2.PENDING,
107
- action=TaskGroupActivityActionV2.DEACTIVATE,
106
+ status=TaskGroupActivityStatus.PENDING,
107
+ action=TaskGroupActivityAction.DEACTIVATE,
108
108
  pkg_name=task_group.pkg_name,
109
109
  version=task_group.version,
110
110
  timestamp_started=get_timestamp(),
@@ -140,7 +140,7 @@ async def deactivate_task_group(
140
140
 
141
141
  @router.post(
142
142
  "/{task_group_id}/reactivate/",
143
- response_model=TaskGroupActivityV2Read,
143
+ response_model=TaskGroupActivityRead,
144
144
  )
145
145
  async def reactivate_task_group(
146
146
  task_group_id: int,
@@ -148,7 +148,7 @@ async def reactivate_task_group(
148
148
  response: Response,
149
149
  superuser: UserOAuth = Depends(current_superuser_act),
150
150
  db: AsyncSession = Depends(get_async_db),
151
- ) -> TaskGroupActivityV2Read:
151
+ ) -> TaskGroupActivityRead:
152
152
  """
153
153
  Deactivate task-group venv
154
154
  """
@@ -173,13 +173,13 @@ async def reactivate_task_group(
173
173
  await check_no_submitted_job(task_group_id=task_group.id, db=db)
174
174
 
175
175
  # Shortcut for task-group with origin="other"
176
- if task_group.origin == TaskGroupV2OriginEnum.OTHER:
176
+ if task_group.origin == TaskGroupOriginEnum.OTHER:
177
177
  task_group.active = True
178
178
  task_group_activity = TaskGroupActivityV2(
179
179
  user_id=task_group.user_id,
180
180
  taskgroupv2_id=task_group.id,
181
- status=TaskGroupActivityStatusV2.OK,
182
- action=TaskGroupActivityActionV2.REACTIVATE,
181
+ status=TaskGroupActivityStatus.OK,
182
+ action=TaskGroupActivityAction.REACTIVATE,
183
183
  pkg_name=task_group.pkg_name,
184
184
  version=(task_group.version or "N/A"),
185
185
  log=(
@@ -206,8 +206,8 @@ async def reactivate_task_group(
206
206
  task_group_activity = TaskGroupActivityV2(
207
207
  user_id=task_group.user_id,
208
208
  taskgroupv2_id=task_group.id,
209
- status=TaskGroupActivityStatusV2.PENDING,
210
- action=TaskGroupActivityActionV2.REACTIVATE,
209
+ status=TaskGroupActivityStatus.PENDING,
210
+ action=TaskGroupActivityAction.REACTIVATE,
211
211
  pkg_name=task_group.pkg_name,
212
212
  version=task_group.version,
213
213
  timestamp_started=get_timestamp(),
@@ -259,8 +259,8 @@ async def delete_task_group(
259
259
  task_group_activity = TaskGroupActivityV2(
260
260
  user_id=task_group.user_id,
261
261
  taskgroupv2_id=task_group.id,
262
- status=TaskGroupActivityStatusV2.PENDING,
263
- action=TaskGroupActivityActionV2.DELETE,
262
+ status=TaskGroupActivityStatus.PENDING,
263
+ action=TaskGroupActivityAction.DELETE,
264
264
  pkg_name=task_group.pkg_name,
265
265
  version=(task_group.version or "N/A"),
266
266
  timestamp_started=get_timestamp(),
@@ -8,7 +8,6 @@ from fastapi import Depends
8
8
  import fractal_server
9
9
  from fractal_server.app.models import UserOAuth
10
10
  from fractal_server.app.routes.auth import current_superuser_act
11
- from fractal_server.config import get_data_settings
12
11
  from fractal_server.config import get_db_settings
13
12
  from fractal_server.config import get_email_settings
14
13
  from fractal_server.config import get_oauth_settings
@@ -50,14 +49,6 @@ async def view_email_settings(
50
49
  return settings.model_dump()
51
50
 
52
51
 
53
- @router_api.get("/settings/data/")
54
- async def view_data_settings(
55
- user: UserOAuth = Depends(current_superuser_act),
56
- ):
57
- settings = Inject(get_data_settings)
58
- return settings.model_dump()
59
-
60
-
61
52
  @router_api.get("/settings/oauth/")
62
53
  async def view_oauth_settings(
63
54
  user: UserOAuth = Depends(current_superuser_act),
@@ -7,66 +7,66 @@ from fastapi import APIRouter
7
7
  from fractal_server.config import get_settings
8
8
  from fractal_server.syringe import Inject
9
9
 
10
- from .dataset import router as dataset_router_v2
11
- from .history import router as history_router_v2
12
- from .images import router as images_routes_v2
13
- from .job import router as job_router_v2
10
+ from .dataset import router as dataset_router
11
+ from .history import router as history_router
12
+ from .images import router as images_routes
13
+ from .job import router as job_router
14
14
  from .pre_submission_checks import router as pre_submission_checks_router
15
- from .project import router as project_router_v2
16
- from .status_legacy import router as status_legacy_router_v2
17
- from .submit import router as submit_job_router_v2
18
- from .task import router as task_router_v2
19
- from .task_collection import router as task_collection_router_v2
20
- from .task_collection_custom import router as task_collection_router_v2_custom
21
- from .task_collection_pixi import router as task_collection_pixi_router_v2
22
- from .task_group import router as task_group_router_v2
23
- from .task_group_lifecycle import router as task_group_lifecycle_router_v2
24
- from .task_version_update import router as task_version_update_router_v2
25
- from .workflow import router as workflow_router_v2
26
- from .workflow_import import router as workflow_import_router_v2
27
- from .workflowtask import router as workflowtask_router_v2
15
+ from .project import router as project_router
16
+ from .sharing import router as sharing_router
17
+ from .status_legacy import router as status_legacy_router
18
+ from .submit import router as submit_job_router
19
+ from .task import router as task_router
20
+ from .task_collection import router as task_collection_router
21
+ from .task_collection_custom import router as task_collection_router_custom
22
+ from .task_collection_pixi import router as task_collection_pixi_router
23
+ from .task_group import router as task_group_router
24
+ from .task_group_lifecycle import router as task_group_lifecycle_router
25
+ from .task_version_update import router as task_version_update_router
26
+ from .workflow import router as workflow_router
27
+ from .workflow_import import router as workflow_import_router
28
+ from .workflowtask import router as workflowtask_router
28
29
 
29
- router_api_v2 = APIRouter()
30
+ router_api = APIRouter()
30
31
 
31
- router_api_v2.include_router(dataset_router_v2, tags=["V2 Dataset"])
32
- router_api_v2.include_router(pre_submission_checks_router, tags=["V2 Job"])
33
- router_api_v2.include_router(job_router_v2, tags=["V2 Job"])
34
- router_api_v2.include_router(images_routes_v2, tags=["V2 Images"])
35
- router_api_v2.include_router(project_router_v2, tags=["V2 Project"])
36
- router_api_v2.include_router(submit_job_router_v2, tags=["V2 Job"])
37
- router_api_v2.include_router(history_router_v2, tags=["V2 History"])
38
- router_api_v2.include_router(status_legacy_router_v2, tags=["V2 Status Legacy"])
32
+ router_api.include_router(dataset_router, tags=["Dataset"])
33
+ router_api.include_router(pre_submission_checks_router, tags=["Job"])
34
+ router_api.include_router(job_router, tags=["Job"])
35
+ router_api.include_router(images_routes, tags=["Images"])
36
+ router_api.include_router(sharing_router, tags=["Project Sharing"])
37
+ router_api.include_router(project_router, tags=["Project"])
38
+ router_api.include_router(submit_job_router, tags=["Job"])
39
+ router_api.include_router(history_router, tags=["History"])
40
+ router_api.include_router(status_legacy_router, tags=["Status Legacy"])
39
41
 
40
42
 
41
43
  settings = Inject(get_settings)
42
- router_api_v2.include_router(
43
- task_collection_router_v2,
44
+ router_api.include_router(
45
+ task_collection_router,
44
46
  prefix="/task",
45
- tags=["V2 Task Lifecycle"],
47
+ tags=["Task Lifecycle"],
46
48
  )
47
- router_api_v2.include_router(
48
- task_collection_router_v2_custom,
49
+ router_api.include_router(
50
+ task_collection_router_custom,
49
51
  prefix="/task",
50
- tags=["V2 Task Lifecycle"],
52
+ tags=["Task Lifecycle"],
51
53
  )
52
- router_api_v2.include_router(
53
- task_collection_pixi_router_v2,
54
+ router_api.include_router(
55
+ task_collection_pixi_router,
54
56
  prefix="/task",
55
- tags=["V2 Task Lifecycle"],
57
+ tags=["Task Lifecycle"],
56
58
  )
57
- router_api_v2.include_router(
58
- task_group_lifecycle_router_v2,
59
+ router_api.include_router(
60
+ task_group_lifecycle_router,
59
61
  prefix="/task-group",
60
- tags=["V2 Task Lifecycle"],
62
+ tags=["Task Lifecycle"],
61
63
  )
62
64
 
63
- router_api_v2.include_router(task_router_v2, prefix="/task", tags=["V2 Task"])
64
- router_api_v2.include_router(task_version_update_router_v2, tags=["V2 Task"])
65
- router_api_v2.include_router(
66
- task_group_router_v2, prefix="/task-group", tags=["V2 TaskGroup"]
65
+ router_api.include_router(task_router, prefix="/task", tags=["Task"])
66
+ router_api.include_router(task_version_update_router, tags=["Task"])
67
+ router_api.include_router(
68
+ task_group_router, prefix="/task-group", tags=["TaskGroup"]
67
69
  )
68
- router_api_v2.include_router(workflow_router_v2, tags=["V2 Workflow"])
69
- router_api_v2.include_router(
70
- workflow_import_router_v2, tags=["V2 Workflow Import"]
71
- )
72
- router_api_v2.include_router(workflowtask_router_v2, tags=["V2 WorkflowTask"])
70
+ router_api.include_router(workflow_router, tags=["Workflow"])
71
+ router_api.include_router(workflow_import_router, tags=["Workflow Import"])
72
+ router_api.include_router(workflowtask_router, tags=["WorkflowTask"])