Пример #1
0
 def test_items_language_cache(self):
     """
     [recommendation.filter.Language] Test item in language cache system
     """
     for i in ITEMS:
         item = Item.objects.get(external_id=i["external_id"])
         for loc in item.locales.all():
             assert loc.locale_id in Locale.get_item_locales(item.pk), \
                 "Locale %s for item %s is not in cache (%s)" % (loc, item, Locale.get_item_locales(item.pk))
Пример #2
0
 def test_users_language_cache(self):
     """
     [recommendation.filter.Language] Test user in language cache system
     """
     for u in USERS:
         user = User.objects.get(external_id=u["external_id"])
         for loc in user.locales.all():
             assert loc.locale_id in Locale.get_user_locales(user.pk), \
                 "Locale %s for user %s is not in cache (%s)" % (loc, user, Locale.get_user_locales(user.pk))
Пример #3
0
 def __call__(self, user, early_recommendation, size=None, **kwargs):
     """
     Call the filter
     """
     unsupported_langs = Locale.get_user_locales(user.pk).symmetric_difference(Locale.get_all_locales())
     #print list(Locale.items_by_locale[l] for l in unsupported_langs)
     unsupported_items = set(chain(*(Locale.get_items_by_locale(l) for l in unsupported_langs)))
     for item in unsupported_items:
         if not any(x in Locale.get_item_locales(item) for x in Locale.get_user_locales(user.pk)):
             early_recommendation[item-1] = -1000
     return early_recommendation
Пример #4
0
 def setup_class(cls, *args, **kwargs):
     """
     Put elements in db
     """
     path = resource_filename(recommendation.__name__, "/")
     fill.FillTool({"items": True, "--mozilla": True, "prod": True}).load()
     fill.FillTool({"users": True, "--mozilla": True, "<path>": path+"data/user"}).load()
     modelcrafter.main("train", "popularity")
     modelcrafter.main("train", "tensorcofi")
     # Load user and items
     Item.load_to_cache()
     User.load_to_cache()
     # Load main models
     Popularity.load_to_cache()
     TensorCoFi.load_to_cache()
     Locale.load_to_cache()
     Region.load_to_cache()
     Genre.load_to_cache()
     cls.client = Client()
Пример #5
0
 def setup_class(cls, *args, **kwargs):
     """
     Put elements in db
     """
     for language in LANGUAGES:
         Locale.objects.create(**language)
     for app in ITEMS:
         item = Item.objects.create(id=app["id"], name=app["name"], external_id=app["external_id"])
         for language in app["languages"]:
             l = Locale.objects.get(country_code=language)
             ItemLocale.objects.create(locale=l, item=item)
     for u in USERS:
         user = User.objects.create(id=u["id"], external_id=u["external_id"])
         for i in u["items"]:
             Inventory.objects.create(user=user, item=Item.get_item_by_external_id(i))
         for language in u["languages"]:
             l = Locale.objects.get(country_code=language)
             UserLocale.objects.create(locale=l, user=user)
     Item.load_to_cache()
     User.load_to_cache()
     Locale.load_to_cache()
Пример #6
0
application = get_wsgi_application()

from django.conf import settings
from recommendation.models import Item, User, TensorCoFi, Popularity
# Load user and items
Item.load_to_cache()
User.load_to_cache()

# Load main models
Popularity.load_to_cache()

TensorCoFi.load_to_cache()


if "recommendation.language" in settings.INSTALLED_APPS:
    from recommendation.language.models import Locale, Region
    Locale.load_to_cache()
    Region.load_to_cache()


#if "recommendation.simple_logging" in recommendation.settings.INSTALLED_APPS:
#    print("Loading logs to cache...")
#    from recommendation.simple_logging.models import LogEntry
#    LogEntry.load_to_cache()
#    print("done!")

if "recommendation.diversity" in settings.INSTALLED_APPS:
    from recommendation.diversity.models import ItemGenre, Genre
    Genre.load_to_cache()
    ItemGenre.load_to_cache()