11
11
from onyx .configs .constants import OnyxCeleryTask
12
12
from onyx .db .document_set import check_document_sets_are_public
13
13
from onyx .db .document_set import fetch_all_document_sets_for_user
14
+ from onyx .db .document_set import get_document_set_by_id
14
15
from onyx .db .document_set import insert_document_set
15
16
from onyx .db .document_set import mark_document_set_as_to_be_deleted
16
17
from onyx .db .document_set import update_document_set
@@ -42,6 +43,7 @@ def create_document_set(
42
43
user = user ,
43
44
target_group_ids = document_set_creation_request .groups ,
44
45
object_is_public = document_set_creation_request .is_public ,
46
+ object_is_new = True ,
45
47
)
46
48
try :
47
49
document_set_db_model , _ = insert_document_set (
@@ -64,17 +66,25 @@ def create_document_set(
64
66
@router .patch ("/admin/document-set" )
65
67
def patch_document_set (
66
68
document_set_update_request : DocumentSetUpdateRequest ,
67
- user : User = Depends (current_curator_or_admin_user ),
69
+ user : User | None = Depends (current_curator_or_admin_user ),
68
70
db_session : Session = Depends (get_session ),
69
71
tenant_id : str = Depends (get_current_tenant_id ),
70
72
) -> None :
73
+ document_set = get_document_set_by_id (db_session , document_set_update_request .id )
74
+ if document_set is None :
75
+ raise HTTPException (
76
+ status_code = 404 ,
77
+ detail = f"Document set { document_set_update_request .id } does not exist" ,
78
+ )
79
+
71
80
fetch_ee_implementation_or_noop (
72
81
"onyx.db.user_group" , "validate_object_creation_for_user" , None
73
82
)(
74
83
db_session = db_session ,
75
84
user = user ,
76
85
target_group_ids = document_set_update_request .groups ,
77
86
object_is_public = document_set_update_request .is_public ,
87
+ object_is_owned_by_user = user and document_set .user_id == user .id ,
78
88
)
79
89
try :
80
90
update_document_set (
@@ -99,6 +109,22 @@ def delete_document_set(
99
109
db_session : Session = Depends (get_session ),
100
110
tenant_id : str = Depends (get_current_tenant_id ),
101
111
) -> None :
112
+ document_set = get_document_set_by_id (db_session , document_set_id )
113
+ if document_set is None :
114
+ raise HTTPException (
115
+ status_code = 404 ,
116
+ detail = f"Document set { document_set_id } does not exist" ,
117
+ )
118
+
119
+ fetch_ee_implementation_or_noop (
120
+ "onyx.db.user_group" , "validate_object_creation_for_user" , None
121
+ )(
122
+ db_session = db_session ,
123
+ user = user ,
124
+ object_is_public = document_set .is_public ,
125
+ object_is_owned_by_user = user and document_set .user_id == user .id ,
126
+ )
127
+
102
128
try :
103
129
mark_document_set_as_to_be_deleted (
104
130
db_session = db_session ,
0 commit comments