def test_homepage(self): response = self.client.get(reverse('index')) self.assertEquals(response.status_code, 200) self.assertIn("Latest Observations", response.content) self.assertIn(moon_phase(timezone.now())[1], response.content) # Logged in login_result = self.client.login(username=self.user.username, password='******') self.assertTrue(login_result) response = self.client.get(reverse('index')) self.assertEquals(response.status_code, 200) self.assertIn("Latest Observations", response.content) self.assertIn(self.challenge.name, response.content)
def index(request): observations = Observation.objects.all() comments = CustomComment.objects.all()[:5] percentage, name, letter = moon_phase(timezone.now()) next_challenge = None if request.user.is_authenticated(): for challenge in Challenge.current_challenges().exclude( type='numeric'): if not CompletedChallenge.objects.filter( user_profile=request.user.userprofile, challenge=challenge).exists(): next_challenge = challenge break else: next_challenge = Challenge.current_challenges().exclude( type='numeric').first() # TODO: Change make this much more effecient userprofiles = UserProfile.objects.all().exclude(observation=None) leaderboard = list( sorted(userprofiles, key=lambda userprofile: userprofile.points, reverse=True)) latest_comet = SolarSystemObject.objects.filter( type='C').order_by('-date_added')[0] supernova = Supernova.brightest_supernova() popular_dso = AstroObject.objects.annotate( Count('observations')).order_by('-observations__count')[:5] popular_sso = SolarSystemObject.objects.annotate( Count('observations')).order_by('-observations__count')[:5] brightest_comets = SolarSystemObject.objects.filter( type='C').order_by('magnitude')[:5] context = { "comments": comments, "observations": observations, "moon_percentage": percentage, "moon_name": name, "moon_letter": letter, "time": timezone.now(), "next_challenge": next_challenge, "leaderboard": leaderboard, "latest_comet": latest_comet, "supernova": supernova, "popular_dso": popular_dso, "popular_sso": popular_sso, "brightest_comets": brightest_comets, } return render(request, 'accounts/index.html', context)
def index(request): observations = Observation.objects.all() comments = CustomComment.objects.all()[:5] percentage, name, letter = moon_phase(timezone.now()) next_challenge = None if request.user.is_authenticated(): for challenge in Challenge.current_challenges().exclude(type='numeric'): if not CompletedChallenge.objects.filter(user_profile=request.user.userprofile, challenge=challenge).exists(): next_challenge = challenge break else: next_challenge = Challenge.current_challenges().exclude(type='numeric').first() # TODO: Change make this much more effecient userprofiles = UserProfile.objects.all().exclude(observation=None) leaderboard = list(sorted(userprofiles, key=lambda userprofile: userprofile.points, reverse=True)) latest_comet = SolarSystemObject.objects.filter(type='C').order_by('-date_added')[0] supernova = Supernova.brightest_supernova() popular_dso = AstroObject.objects.annotate(Count('observations')).order_by('-observations__count')[:5] popular_sso = SolarSystemObject.objects.annotate(Count('observations')).order_by('-observations__count')[:5] brightest_comets = SolarSystemObject.objects.filter(type='C').order_by('magnitude')[:5] context = { "comments": comments, "observations": observations, "moon_percentage": percentage, "moon_name": name, "moon_letter": letter, "time": timezone.now(), "next_challenge": next_challenge, "leaderboard": leaderboard, "latest_comet": latest_comet, "supernova": supernova, "popular_dso": popular_dso, "popular_sso": popular_sso, "brightest_comets": brightest_comets, } return render(request, 'accounts/index.html', context)