@@ -124,18 +124,25 @@ def upload(self, request, path):
124124 if repo_content .filter (filename = filename ).exists ():
125125 return HttpResponseBadRequest (reason = f"Package { filename } already exists in index" )
126126
127- return self .upload_package (repo , artifact , filename , request .session )
127+ if settings .PYTHON_GROUP_UPLOADS :
128+ return self .upload_package_group (repo , artifact , filename , request .session )
128129
129- def upload_package (self , repo , artifact , filename , session ):
130+ result = dispatch (tasks .upload , [artifact , repo ],
131+ kwargs = {"artifact_sha256" : artifact .sha256 ,
132+ "filename" : filename ,
133+ "repository_pk" : str (repo .pk )})
134+ return Response (data = {"task" : reverse ('tasks-detail' , args = [result .pk ], request = None )})
135+
136+ def upload_package_group (self , repo , artifact , filename , session ):
130137 """Steps 4 & 5, spawns tasks to add packages to index."""
131138 start_time = datetime .now (tz = timezone .utc ) + timedelta (seconds = 5 )
132139 task = "updated"
133140 if not session .get ("start" ):
134- task = self .create_upload_task (session , repo , artifact , filename , start_time )
141+ task = self .create_group_upload_task (session , repo , artifact , filename , start_time )
135142 else :
136143 sq = Session .objects .select_for_update (nowait = True ).filter (pk = session .session_key )
137- with transaction . atomic () :
138- try :
144+ try :
145+ with transaction . atomic () :
139146 sq .first ()
140147 try :
141148 current_start = datetime .fromisoformat (session ['start' ])
@@ -149,19 +156,19 @@ def upload_package(self, repo, artifact, filename, session):
149156 session .save ()
150157 else :
151158 raise DatabaseError
152- except DatabaseError :
153- session .cycle_key ()
154- task = self .create_upload_task (session , repo , artifact , filename , start_time )
159+ except DatabaseError :
160+ session .cycle_key ()
161+ task = self .create_group_upload_task (session , repo , artifact , filename , start_time )
155162 data = {"session" : session .session_key , "task" : task , "task_start_time" : start_time }
156163 return Response (data = data )
157164
158- def create_upload_task (self , cur_session , repository , artifact , filename , start_time ):
165+ def create_group_upload_task (self , cur_session , repository , artifact , filename , start_time ):
159166 """Creates the actual task that adds the packages to the index."""
160167 cur_session ['start' ] = str (start_time )
161168 cur_session ['artifacts' ] = [(str (artifact .sha256 ), filename )]
162169 cur_session .modified = False
163170 cur_session .save ()
164- result = dispatch (tasks .upload , [artifact , repository ],
171+ result = dispatch (tasks .upload_group , [artifact , repository ],
165172 kwargs = {"session_pk" : str (cur_session .session_key ),
166173 "repository_pk" : str (repository .pk )})
167174 return reverse ('tasks-detail' , args = [result .pk ], request = None )
0 commit comments