diff --git a/calendar_utils/management/commands/update_callendars.py b/calendar_utils/management/commands/update_callendars.py index e837549834b9b47486aa9e4ad6c9d6a12a94318c..912faaf88948d2607b742c156ecb67bbe2bc3cf8 100644 --- a/calendar_utils/management/commands/update_callendars.py +++ b/calendar_utils/management/commands/update_callendars.py @@ -9,9 +9,25 @@ logger = logging.getLogger(__name__) class Command(BaseCommand): def handle(self, *args, **options): + self.stdout.write("Removing orphaned calendars...") + for cal in Calendar.objects.filter( + districtcenterpage=None, + districthomepage=None, + elections2021calendarpage=None, + senatcampaignhomepage=None, + uniwebhomepage=None, + ): + try: + self.stdout.write(f"- {cal.id} | {cal.url}") + cal.delete() + except Exception as e: + logger.error("Calendar delete failed for %s", cal.url, exc_info=True) + self.stdout.write(" - failed") + self.stdout.write(str(e)) + self.stdout.write("Updating calendars...") for cal in Calendar.objects.all(): - self.stdout.write(f"\n@ {cal.url}") + self.stdout.write(f"\n@ {cal.id} | {cal.url}") try: cal.update_source() self.stdout.write("+ ok") diff --git a/calendar_utils/models.py b/calendar_utils/models.py index b16d21378cf7478461bf648500fef989f009410d..335161250f7c8c763a9fb89a11f700035984b25a 100644 --- a/calendar_utils/models.py +++ b/calendar_utils/models.py @@ -99,8 +99,6 @@ class CalendarMixin(models.Model): # delete related Calendar when URL is cleared if not self.calendar_url and self.calendar: - # TODO handle revisions and maybe other live pages with the same calendar - # self.calendar.delete() self.calendar = None super().save(*args, **kwargs) diff --git a/tests/calendar_utils/test_models.py b/tests/calendar_utils/test_models.py index 7b2f62c4266be7ff70d8c66ab4427ec88c57e426..52743746ad4e377285480e3413511e38d0acc4b2 100644 --- a/tests/calendar_utils/test_models.py +++ b/tests/calendar_utils/test_models.py @@ -145,4 +145,3 @@ def test_calendar_mixin__clear_calendar_url(mocker): assert obj.calendar_url is None assert obj.calendar is None assert m_update.call_count == 0 - assert Calendar.objects.count() == 0