Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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)