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)
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)