Example #1
0
    def test_get_chart_data(self):
        """
        Test review averaging and organizing
        """
        chart_data = get_chart_data(difficulty=1, user=self.users[0])
        self.assertEqual(len(chart_data), 2)

        song1 = chart_data[0]
        self.assertEqual(song1.get('title'), SAMPLE_SONG_DATA[0].get('title'))
        self.assertEqual(song1.get('id'), SAMPLE_SONG_DATA[0].get('music_id'))
        self.assertEqual(song1.get('avg_clear_rating'), 1.2)
        self.assertEqual(song1.get('avg_hc_rating'), 2.5)
        self.assertEqual(song1.get('avg_exhc_rating'), 3.5)
        self.assertEqual(song1.get('avg_score_rating'), 2.0)
        self.assertIsNone(song1.get('has_reviewed'))

        song2 = chart_data[1]
        self.assertEqual(song2.get('title'), SAMPLE_SONG_DATA[1].get('title'))
        self.assertEqual(song2.get('id'), SAMPLE_SONG_DATA[1].get('music_id'))
        self.assertIsNone(song2.get('avg_clear_rating'))
        self.assertIsNone(song2.get('has_reviewed'))
Example #2
0
def ratings_view(request):
    """
    Assemble ratings page. Possible filters include difficulty and version.
    :rtype dict: Context including chart data
    """
    difficulty = request.GET.get('difficulty')
    version = request.GET.get('version')
    play_style = request.GET.get('style', 'SP')
    user = request.user.id

    chart_data = get_chart_data(version, difficulty, play_style, user,
                                include_reviews=bool(request.GET.get('json')))

    if request.GET.get('json') == 'true':
        return HttpResponse(
            json.dumps({'data': chart_data}, indent=4, ensure_ascii=False))

    # assemble displayed info for each of the charts
    context = {
        'charts': chart_data
    }

    # assemble page title
    title_elements = []
    if version:
        title_elements.append(FULL_VERSION_NAMES[int(version)].upper())
    if difficulty or not (difficulty or version):
        title_elements.append('LV. ' + str(difficulty or 12))
    title_elements.append(play_style)
    create_page_title(context, title_elements)

    # create version/level navigator to display above songlist
    context['versions'] = generate_version_urls()
    context['levels'] = generate_level_urls()

    context['nav_links'] = make_nav_links()

    return render(request, 'ratings.html', context)