@@ -662,7 +662,8 @@ def manual_revert_tasks(username, tier, task_id):
662662
663663
664664def update_imported_tasks (username : str , all_tasks : list , username2 : str ,
665- recorded_item_ids_by_tier : dict | None = None ):
665+ recorded_item_ids_by_tier : dict | None = None ,
666+ overwrite_temple_timestamps : bool = True ):
666667 coll = mydb ['taskLists' ]
667668 include = {'easy' , 'medium' , 'hard' , 'elite' }
668669 tasks_to_check = []
@@ -761,6 +762,40 @@ def sanitize_recorded_map(value):
761762 existing_recorded_hard = sanitize_recorded_map (diaries ['tiers' ]['hard' ].get ('recordedItemIdsByTask' , {}))
762763 existing_recorded_elite = sanitize_recorded_map (diaries ['tiers' ]['elite' ].get ('recordedItemIdsByTask' , {}))
763764
765+ def existing_completed_date_map (completed_tasks ):
766+ output = {}
767+ for entry in completed_tasks :
768+ task_id = entry .get ('id' )
769+ if not task_id :
770+ continue
771+ completed_date = entry .get ('completedDate' )
772+ if completed_date is None :
773+ continue
774+ normalized_date = __datetime_to_iso (completed_date )
775+ if normalized_date :
776+ output [task_id ] = normalized_date
777+ return output
778+
779+ existing_completed_dates_easy = existing_completed_date_map (diaries ['tiers' ]['easy' ].get ('completedTasks' , []))
780+ existing_completed_dates_medium = existing_completed_date_map (diaries ['tiers' ]['medium' ].get ('completedTasks' , []))
781+ existing_completed_dates_hard = existing_completed_date_map (diaries ['tiers' ]['hard' ].get ('completedTasks' , []))
782+ existing_completed_dates_elite = existing_completed_date_map (diaries ['tiers' ]['elite' ].get ('completedTasks' , []))
783+
784+ if overwrite_temple_timestamps :
785+ tier_existing_dates = [
786+ existing_completed_dates_easy ,
787+ existing_completed_dates_medium ,
788+ existing_completed_dates_hard ,
789+ existing_completed_dates_elite ,
790+ ]
791+ for tier_tasks , tier_date_map in zip (all_tasks , tier_existing_dates ):
792+ for imported_task in tier_tasks :
793+ task_id = imported_task .get ('id' )
794+ if not task_id :
795+ continue
796+ if task_id in tier_date_map :
797+ imported_task ['completedDate' ] = tier_date_map [task_id ]
798+
764799 imported_recorded_easy = sanitize_recorded_map (recorded_item_ids_by_tier .get ('easy' , {}))
765800 imported_recorded_medium = sanitize_recorded_map (recorded_item_ids_by_tier .get ('medium' , {}))
766801 imported_recorded_hard = sanitize_recorded_map (recorded_item_ids_by_tier .get ('hard' , {}))
0 commit comments