@@ -189,20 +189,37 @@ def _get_item_submissions_from_synced_batch(self) -> list[ItemSubmission]:
189189 )
190190 continue
191191
192+ # track identifier as 'seen'
192193 seen_item_identifiers .append (item_identifier )
193- item_submissions .append (
194- ItemSubmission (
195- batch_id = self .batch_id ,
196- item_identifier = item_identifier ,
197- workflow_name = self .workflow_name ,
198- status = (
199- ItemSubmissionStatus .CREATE_SUCCESS
200- if theses_subfolder in ["replacement-theses" , "new-theses" ]
201- else ItemSubmissionStatus .CREATE_SKIPPED
202- ),
203- )
194+
195+ # create an instance of ItemSubmission
196+ item_submission = ItemSubmission (
197+ batch_id = self .batch_id ,
198+ item_identifier = item_identifier ,
199+ workflow_name = self .workflow_name ,
204200 )
205201
202+ if theses_subfolder == "replacement-theses" :
203+ try :
204+ dspace_item = self ._get_item_from_dspace (
205+ item_submission .item_identifier
206+ )
207+ except exceptions .DSpaceClientSearchError as exception :
208+ item_submission .status = ItemSubmissionStatus .CREATE_SKIPPED
209+ item_submission .status_details = str (exception )
210+ else :
211+ if dspace_item :
212+ item_submission .dspace_handle = dspace_item .handle
213+ item_submission .status = ItemSubmissionStatus .CREATE_SUCCESS
214+ item_submission .status_details = "Replacement thesis"
215+ elif theses_subfolder == "new-theses" :
216+ item_submission .status = ItemSubmissionStatus .CREATE_SUCCESS
217+ item_submission .status_details = "New thesis"
218+ else :
219+ item_submission .status = ItemSubmissionStatus .CREATE_SKIPPED
220+ item_submission .status = "Skipped thesis"
221+ item_submissions .append (item_submission )
222+
206223 return item_submissions
207224
208225 def _create_batch_in_s3 (self ) -> list [ItemSubmission ]:
@@ -273,20 +290,19 @@ def _create_batch_in_s3(self) -> list[ItemSubmission]:
273290 # check if item submission is a 'Replacement thesis'
274291 if dspace_item and not self ._is_replacement_thesis (dspace_item ):
275292 item_submission .dspace_handle = dspace_item .handle
276- item_submission .status = "create_skipped"
293+ item_submission .status = ItemSubmissionStatus . CREATE_SKIPPED
277294 item_submission .status_details = "Cannot replace the electronic version submitted by the student author." # noqa: E501
278295 item_submissions .append (item_submission )
279296 continue
280297
281298 if dspace_item and self ._is_replacement_thesis (dspace_item ):
282299 item_submission .dspace_handle = dspace_item .handle
283- item_submission .status = "create_success"
300+ item_submission .status = ItemSubmissionStatus . CREATE_SUCCESS
284301 item_submission .status_details = "Replacement thesis"
285- item_submissions .append (item_submission )
286302 else :
287- item_submission .status = "create_success"
303+ item_submission .status = ItemSubmissionStatus . CREATE_SUCCESS
288304 item_submission .status_details = "New thesis"
289- item_submissions .append (item_submission )
305+ item_submissions .append (item_submission )
290306
291307 self ._move_batch_files_to_theses_subfolders (
292308 item_submissions , batch_location = tmp_batch_path
0 commit comments