Skip to content

Commit 440567a

Browse files
committed
Fix delete logic with a comment
1 parent 5e9597a commit 440567a

File tree

1 file changed

+68
-34
lines changed

1 file changed

+68
-34
lines changed

readthedocs/projects/tasks.py

Lines changed: 68 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,8 @@ def update_app_instances(
741741
)
742742
hostname = socket.gethostname()
743743

744+
delete_unsynced_media = True
745+
744746
if getattr(storage, 'write_build_media', False):
745747
# Handle the case where we want to upload some built assets to our storage
746748
move_files.delay(
@@ -752,11 +754,13 @@ def update_app_instances(
752754
localmedia=localmedia,
753755
pdf=pdf,
754756
epub=epub,
757+
delete_unsynced_media=delete_unsynced_media,
755758
)
756759
# Set variables so they don't get synced in the next broadcast step
757760
localmedia = False
758761
pdf = False
759762
epub = False
763+
delete_unsynced_media = False
760764

761765
# Broadcast finalization steps to web application instances
762766
broadcast(
@@ -774,6 +778,7 @@ def update_app_instances(
774778
search=search,
775779
pdf=pdf,
776780
epub=epub,
781+
delete_unsynced_media=delete_unsynced_media,
777782
),
778783
callback=sync_callback.s(
779784
version_pk=self.version.pk,
@@ -930,6 +935,7 @@ def sync_files(
930935
search=False,
931936
pdf=False,
932937
epub=False,
938+
delete_unsynced_media=True
933939
):
934940
"""
935941
Sync build artifacts to application instances.
@@ -941,40 +947,6 @@ def sync_files(
941947
version = Version.objects.get_object_or_log(pk=version_pk)
942948
if not version:
943949
return
944-
if not pdf:
945-
remove_dirs([
946-
version.project.get_production_media_path(
947-
type_='pdf',
948-
version_slug=version.slug,
949-
),
950-
])
951-
952-
if getattr(storage, 'write_build_media', False):
953-
# Remove PDF from remote storage if it exists
954-
storage_path = version.project.get_storage_path(
955-
type_='pdf',
956-
version_slug=version.slug,
957-
)
958-
if storage.exists(storage_path):
959-
log.info('Removing %s from media storage', storage_path)
960-
storage.delete(storage_path)
961-
if not epub:
962-
remove_dirs([
963-
version.project.get_production_media_path(
964-
type_='epub',
965-
version_slug=version.slug,
966-
),
967-
])
968-
969-
if getattr(storage, 'write_build_media', False):
970-
# Remove ePub from remote storage if it exists
971-
storage_path = version.project.get_storage_path(
972-
type_='epub',
973-
version_slug=version.slug,
974-
)
975-
if storage.exists(storage_path):
976-
log.info('Removing %s from media storage', storage_path)
977-
storage.delete(storage_path)
978950

979951
# Sync files to the web servers
980952
move_files(
@@ -986,6 +958,7 @@ def sync_files(
986958
search=search,
987959
pdf=pdf,
988960
epub=epub,
961+
delete_unsynced_media=delete_unsynced_media,
989962
)
990963

991964
# Symlink project
@@ -1005,6 +978,7 @@ def move_files(
1005978
search=False,
1006979
pdf=False,
1007980
epub=False,
981+
delete_unsynced_media=True,
1008982
):
1009983
"""
1010984
Task to move built documentation to web servers.
@@ -1021,10 +995,70 @@ def move_files(
1021995
:type pdf: bool
1022996
:param epub: Sync ePub files
1023997
:type epub: bool
998+
:param delete_unsynced_media: Whether to try and delete files.
999+
:type delete_unsynced_media: bool
10241000
"""
10251001
version = Version.objects.get_object_or_log(pk=version_pk)
10261002
if not version:
10271003
return
1004+
1005+
# This is False if we have already synced media files to blob storage
1006+
# We set `epub=False` for example so data doesn't get re-uploaded on each web,
1007+
# so we need this to protect against deleting in those cases
1008+
if delete_unsynced_media:
1009+
if not pdf:
1010+
remove_dirs([
1011+
version.project.get_production_media_path(
1012+
type_='pdf',
1013+
version_slug=version.slug,
1014+
),
1015+
])
1016+
1017+
if getattr(storage, 'write_build_media', False):
1018+
# Remove PDF from remote storage if it exists
1019+
storage_path = version.project.get_storage_path(
1020+
type_='pdf',
1021+
version_slug=version.slug,
1022+
)
1023+
if storage.exists(storage_path):
1024+
log.info('Removing %s from media storage', storage_path)
1025+
storage.delete(storage_path)
1026+
if not epub:
1027+
remove_dirs([
1028+
version.project.get_production_media_path(
1029+
type_='epub',
1030+
version_slug=version.slug,
1031+
),
1032+
])
1033+
1034+
if getattr(storage, 'write_build_media', False):
1035+
# Remove ePub from remote storage if it exists
1036+
storage_path = version.project.get_storage_path(
1037+
type_='epub',
1038+
version_slug=version.slug,
1039+
)
1040+
if storage.exists(storage_path):
1041+
log.info('Removing %s from media storage', storage_path)
1042+
storage.delete(storage_path)
1043+
1044+
if not localmedia:
1045+
remove_dirs([
1046+
version.project.get_production_media_path(
1047+
type_='htmlzip',
1048+
version_slug=version.slug,
1049+
),
1050+
])
1051+
1052+
if getattr(storage, 'write_build_media', False):
1053+
# Remove ePub from remote storage if it exists
1054+
storage_path = version.project.get_storage_path(
1055+
type_='htmlzip',
1056+
version_slug=version.slug,
1057+
)
1058+
if storage.exists(storage_path):
1059+
log.info('Removing %s from media storage', storage_path)
1060+
storage.delete(storage_path)
1061+
10281062
log.debug(
10291063
LOG_TEMPLATE.format(
10301064
project=version.project.slug,

0 commit comments

Comments
 (0)