diff --git a/movie_manager/admin.py b/movie_manager/admin.py index 2bdc1b9..883114f 100644 --- a/movie_manager/admin.py +++ b/movie_manager/admin.py @@ -1,7 +1,4 @@ -from zoneinfo import ZoneInfo - from django.contrib import admin -from django.utils import timezone from movie_manager.models import Movie, MovieList, Schedule, Showing @@ -24,15 +21,4 @@ class ScheduleAdmin(admin.ModelAdmin): @admin.register(Showing) class ShowingAdmin(admin.ModelAdmin): - list_display = ["local_showtime", "movie"] - - def local_showtime(self, obj): - if obj.showtime: - target_tz = ZoneInfo("America/Chicago") - with timezone.override(target_tz): - local_time = timezone.localtime(obj.showtime) - return local_time.strftime("%Y-%m-%d %H:%M") - return "Invalid datetime" - - local_showtime.short_description = "Showtime (Local)" - local_showtime.admin_order_field = "showtime" + list_display = ["showtime", "movie"] diff --git a/movie_manager/tests.py b/movie_manager/tests.py index 09fcbb8..8ab499b 100644 --- a/movie_manager/tests.py +++ b/movie_manager/tests.py @@ -37,15 +37,14 @@ class ShowingViewsetTestCase(APITestCase): self.assertEqual(response_data.get("showtime"), showing_time) self.assertEqual(response_data.get("movie").get("title"), "Test Movie") - @freeze_time("2025-07-03 04:59:00") # 2025-07-02 23:59 CDT in UTC + @freeze_time("2025-07-02 23:59:00", tz_offset=-5) def test_it_returns_active_showings(self): self.client.force_authenticate(user=self.schedule.owner) showtimes_america_chicago_utc = [ - "2025-07-08T04:59:59.000Z", # 2025-07-07 11:59pm - "2025-07-03T04:59:59.000Z", # 2025-07-02 11:59pm - "2025-07-03T04:00:00.000Z", # 2025-07-02 11:00pm - "2025-07-01T04:59:00.000Z", # 2025-06-30 11:59pm + "2025-07-03T04:00:59.000Z", # 7/2/25 11:59pm + "2025-07-01T04:00:59.000Z", # 6/30/25 11:59pm + "2025-07-08T04:00:59.000Z", # 7/7/25 11:59pm ] for showtime in showtimes_america_chicago_utc: diff --git a/movie_manager/viewsets/schedule.py b/movie_manager/viewsets/schedule.py index 41d7364..57d5ec2 100644 --- a/movie_manager/viewsets/schedule.py +++ b/movie_manager/viewsets/schedule.py @@ -1,3 +1,5 @@ +import datetime + from django.http import JsonResponse from django.utils import timezone from knox.auth import TokenAuthentication @@ -23,8 +25,12 @@ class ScheduleViewset(viewsets.ModelViewSet): # Get the schedule instance instance = self.get_object() now = timezone.now() + # get time from start of day + today = timezone.make_aware(datetime.datetime(now.year, now.month, now.day)) - upcoming_showings = Showing.objects.filter(showtime__gte=now, schedule=instance) + upcoming_showings = Showing.objects.filter( + showtime__gte=today, schedule=instance + ) serializer = self.get_serializer(instance) data = serializer.data @@ -33,16 +39,18 @@ class ScheduleViewset(viewsets.ModelViewSet): data["showings"] = ShowingSerializer(upcoming_showings, many=True).data if request.GET.get("past_showings") == "true": - past_showings = Showing.objects.filter(showtime__lt=now, schedule=instance) + past_showings = Showing.objects.filter( + showtime__lt=today, schedule=instance + ) # Add both to the response data["past_showings"] = [ { - "id": past_showing.id, - "showtime": past_showing.showtime.isoformat(), - "movie": MovieSerializer(past_showing.movie).data, + "id": showing.id, + "showtime": showing.showtime.isoformat(), + "movie": MovieSerializer(showing.movie).data, } - for past_showing in past_showings + for showing in past_showings ] else: data["past_showings"] = []