コード例 #1
0
ファイル: views.py プロジェクト: komsihon/shavida
def get_recommended_for_single_category(request, *args, **kwargs):
    category_id = request.GET.get('category_id')
    response = []
    if category_id:
        category = Category.objects.get(pk=category_id)
        member = request.user
        cache_key = member.email + ':recommended-' + category_id
        recommended = cache.get(cache_key)
        if not recommended:
            exclude_list_keys = cache.get(member.email + ':' + EXCLUDE_LIST_KEYS_KEY)
            exclude_list = []
            if not exclude_list_keys:
                exclude_list_keys = set()
            else:
                for key in exclude_list_keys:
                    items = cache.get(key)
                    if items:
                        exclude_list.extend(items)
            recommended = get_recommended_for_category(category, category.previews_length, exclude_list)
            exclude_list_keys.add(cache_key)
            cache.set(cache_key, recommended)
            cache.set(member.email + ':' + EXCLUDE_LIST_KEYS_KEY, exclude_list_keys)
        response = [item.to_dict() for item in recommended]
    return HttpResponse(
        json.dumps(response),
        'content-type: text/json'
    )
コード例 #2
0
 def test_get_recommended_for_category(self):
     category_id = '56eb6d04b37b3379b531e092'
     category_western = Category.objects.get(pk=category_id)
     for movie in Movie.objects.all():
         movie.categories.append(category_western)
         movie.save()
     for series in Series.objects.all():
         series.categories.append(category_western)
         series.save()
     items_to_exclude = [
         Movie.objects.get(pk=pk)
         for pk in ('56eb6d04b37b3379b531e085', '56eb6d04b37b3379b531e086')
     ]
     media = get_recommended_for_category(category_western, 5,
                                          items_to_exclude)
     expected_media = [
         Movie.objects.get(pk=pk)
         for pk in ('56eb6d04b37b3379b531e084', '56eb6d04b37b3379b531e083',
                    '56eb6d04b37b3379b531e082')
     ]
     expected_media.extend([
         Series.objects.get(pk=pk)
         for pk in ('56eb6d04b37b3379b531e074', '56eb6d04b37b3379b531e073')
     ])
     for item in media:
         self.assertIn(item, expected_media)
コード例 #3
0
ファイル: views.py プロジェクト: arthemis24/shavida
def get_recommended_for_single_category(request, *args, **kwargs):
    category_id = request.GET.get('category_id')
    response = []
    if category_id:
        category = Category.objects.get(pk=category_id)
        member = request.user
        cache_key = member.email + ':recommended-' + category_id
        recommended = cache.get(cache_key)
        if not recommended:
            exclude_list_keys = cache.get(member.email + ':' + EXCLUDE_LIST_KEYS_KEY)
            exclude_list = []
            if not exclude_list_keys:
                exclude_list_keys = set()
            else:
                for key in exclude_list_keys:
                    items = cache.get(key)
                    if items:
                        exclude_list.extend(items)
            recommended = get_recommended_for_category(category, category.previews_length, exclude_list)
            exclude_list_keys.add(cache_key)
            cache.set(cache_key, recommended)
            cache.set(member.email + ':' + EXCLUDE_LIST_KEYS_KEY, exclude_list_keys)
        response = [item.to_dict() for item in recommended]
    return HttpResponse(
        json.dumps(response),
        'content-type: text/json'
    )
コード例 #4
0
ファイル: tests_utils.py プロジェクト: komsihon/shavida
 def test_get_recommended_for_category(self):
     category_id = '56eb6d04b37b3379b531e092'
     category_western = Category.objects.get(pk=category_id)
     for movie in Movie.objects.all():
         movie.categories.append(category_western)
         movie.save()
     for series in Series.objects.all():
         series.categories.append(category_western)
         series.save()
     items_to_exclude = [Movie.objects.get(pk=pk) for pk in ('56eb6d04b37b3379b531e085', '56eb6d04b37b3379b531e086')]
     media = get_recommended_for_category(category_western, 5, items_to_exclude)
     expected_media = [Movie.objects.get(pk=pk) for pk in ('56eb6d04b37b3379b531e084', '56eb6d04b37b3379b531e083', '56eb6d04b37b3379b531e082')]
     expected_media.extend([Series.objects.get(pk=pk) for pk in ('56eb6d04b37b3379b531e074', '56eb6d04b37b3379b531e073')])
     for item in media:
         self.assertIn(item, expected_media)