예제 #1
0
    def test_get_charts(self):
        """
        Test filtering charts by id and query
        """
        r = get_charts_by_ids([1, 2])
        self.assertEqual(len(r), 2)

        r = get_charts_by_query(version=1)
        self.assertEqual(len(r), 2)

        r = get_charts_by_query(version=1, difficulty=10)
        self.assertEqual(len(r), 0)

        r = get_charts_by_query(version=1, play_style='DP')
        self.assertEqual(len(r), 0)
예제 #2
0
def chart_view(request):
    """
    Handle requests for individual chart pages (mostly collections of reviews)
    :param request: Request to handle
    """
    context = {}

    chart_id = request.GET.get('id')
    if not chart_id:
        return HttpResponseBadRequest()

    if request.GET.get('delete') == 'true' and request.user.is_authenticated():
        delete_review(request.user.id, chart_id)
        return HttpResponseRedirect(reverse('chart') + '?id=%s' % chart_id)

    # TODO remove all direct interaction with chart
    chart = get_charts_by_ids([chart_id])[0]

    # truncate long song title
    song_title = chart.song.title if len(
            chart.song.title) <= 15 else chart.song.title[:15] + '...'

    # assemble page title
    title_elements = [song_title,
                      chart.get_type_display(),
                      str(chart.difficulty) + '☆']
    create_page_title(context, title_elements)

    context['difficulty'] = chart.difficulty
    context['chart_id'] = chart_id

    form_data = request.POST if request.method == 'POST' else None
    context['form'], context['review_exists'] = generate_review_form(
            request.user, chart_id, form_data)

    # get reviews for this chart, cache users for username and playside lookup
    context['reviews'] = get_reviews_for_chart(chart_id)

    context['nav_links'] = make_nav_links(level=chart.difficulty,
                                          style=chart.get_type_display()[:2],
                                          version=chart.song.game_version)

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