def test_recsys(request, gmac_slug=None): """ Testing recsys view """ from recsys.circuits.circuit_recsys import CircuitRecsys # Find GMAC gmacs = None gmac_id = None gmac_get_short_formatted_name = None filtered_circuits = None if gmac_slug is not None: try: gmacs = GMAC.objects.filter(slug=gmac_slug) filtered_circuits = Circuit.filter_by_gmacs(gmacs) gmac_get_short_formatted_name = gmacs[0].get_short_formatted_name() gmac_id = gmacs[0].pk except GMAC.DoesNotExist: pass except IndexError: pass categories = circuit_category_list() if request.user.is_authenticated(): # Recsys functionallity recsys = CircuitRecsys(request.user.pk) if gmac_id is None: gmac_id = request.session.get('gmac_id', None) if gmac_id is not None: recsys.Set_gmac(gmac_id) circuits_ids = recsys.Give_me_the_fun(top_n=15) circuits = Circuit.objects.filter(id__in=circuits_ids).\ filter(published=True) if filtered_circuits is not None : circuits = [val for val in filtered_circuits if val in circuits] else: if gmac_id is not None: gmac = GMAC.objects.get(pk=gmac_id) circuits = Circuit.filter_by_gmac(gmac) else: # case when gmac is not detected cpp = circuit_settings.DEFAULT_CIRCUITS_LIMIT circuits=Circuit.objects.all()[:cpp] return render(request, 'circuits/recommendations.html', { 'categories': categories, 'circuits': circuits, 'topbar_item': 'explore', 'page_type': 'recommendation', 'GOOGLE_API_KEY': settings.GOOGLE_API_KEY, 'gmac_slug': gmac_slug, 'gmacs': gmacs, 'gmac_get_short_formatted_name': gmac_get_short_formatted_name, }, )
def get_circuits(self): """ Returns a Queryset containing the circuits to display on CircuitCollection """ limit = self.cleaned_data.get('limit') offset = self.cleaned_data.get('offset') category = self.cleaned_data.get('category') gmac_id = self.cleaned_data.get('gmac_id') gmac_slug = self.cleaned_data.get('gmac_slug') if limit is None: limit = constants.API_DEFAULT_CIRCUITS_LIMIT if offset is None: offset = constants.API_DEFAULT_CIRCUITS_OFFSET # try to filter circuit by GMAC if gmac_id is not None: gmac = GMAC.objects.get(pk=gmac_id) circuits = Circuit.filter_by_gmac(gmac) # try to filter by gmac_slug elif gmac_slug is not None: gmacs = GMAC.objects.filter(slug=gmac_slug) circuits = Circuit.filter_by_gmacs(gmacs) # if not filtered by GMAC then filter by any other criteria else: circuits = Circuit.objects.all() circuits = circuits.order_by('-created') if category is not None and len(category)>0: if self.category_is_alphanumeric(): category = CircuitCategory(category) category = category.get_value() circuits = circuits.filter(category=category) return circuits[offset:offset + limit]