def compare_language(request, *args, **kwargs): me = 'language' def single_lang(request, lang, *args, **kwargs): kwargs['slug'] = lang.slug return True, show_language(request, *args, **kwargs) def multi_lang(request, langs, *args, **kwargs): return False, (langs, [l.slug for l in langs]) finished, payload = dispatch_langslugs(request, single_lang, multi_lang, *args, **kwargs) if finished: return payload langs, langslugs = payload if request.method == 'POST': comparison_type = request.POST.get('compare', kwargs.get('opt', None)) same, different = _generate_comparison_type(comparison_type) # remove slugs from langslugs remove_langs = request.POST.getlist('removelang') if remove_langs: langslugs = [l for l in langslugs if l not in remove_langs] redirect_to = _generate_comparison_url(langslugs, comparison_type) return HttpResponseRedirect(redirect_to) if not len(langslugs): # Nothing to compare raise Http404 # Add a slug to langslugs return _compare(request, langslugs, comparison_type) comparison_type = kwargs.get('opt', request.GET.get('compare', None)) same, different = _generate_comparison_type(comparison_type) cform = CompareTwoForm() _LOG.debug('0: %s', comparison_type) _LOG.debug('1: same %s, different %s', same, different) comparison = compare_languages(langs, same=same, different=different) _LOG.debug('Last: Features compared: %s (%s)', len(comparison), comparison_type) data = { 'comparison': comparison, 'me': me, 'cform': cform, 'langs': langs, 'comparison_type': comparison_type, } return render(request, 'language_compare.html', data)
def compare_language(request, *args, **kwargs): me = 'language' def single_lang(request, lang, *args, **kwargs): kwargs['slug'] = lang.slug return True, show_language(request, *args, **kwargs) def multi_lang(request, langs, *args, **kwargs): return False, (langs, [l.slug for l in langs]) finished, payload = dispatch_langslugs(request, single_lang, multi_lang, *args, **kwargs) if finished: return payload langs, langslugs = payload if request.method == 'POST': comparison_type = request.POST.get('compare', kwargs.get('opt', None)) same, different = _generate_comparison_type(comparison_type) # remove slugs from langslugs remove_langs = request.POST.getlist('removelang') if remove_langs: langslugs = [l for l in langslugs if l not in remove_langs] redirect_to = _generate_comparison_url(langslugs, comparison_type) return HttpResponseRedirect(redirect_to) if not len(langslugs): # Nothing to compare raise Http404 # Add a slug to langslugs return _compare(request, langslugs, comparison_type) comparison_type = kwargs.get('opt', request.REQUEST.get('compare', None)) same, different = _generate_comparison_type(comparison_type) cform = CompareTwoForm() _LOG.debug('0: %s', comparison_type) _LOG.debug('1: same %s, different %s', same, different) comparison = compare_languages(langs, same=same, different=different) _LOG.debug('Last: Features compared: %s (%s)', len(comparison), comparison_type) data = { 'comparison': comparison, 'me': me, 'cform': cform, 'langs': langs, 'comparison_type': comparison_type, } return render(request, 'language_compare.html', data)
def multi_lang(request, langs, *args, **kwargs): comparison = compare_languages(langs, same=True, different=False)[1:] fvlist = [featureline[1] for featureline in comparison] return True, create_language(request, fvlist=fvlist, clone=True)