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