def chose_ware_ids_with_requirement(wares, categories, moderation, stock): """ Делаем пересечение условия для существующих товаров. :param wares: список товаров :param categories: список категорий :param moderation: модерирование :param stock: сток :return: список товаров с пересечениями """ # делаем пересечение условий w_c = [funky.pluck(funcy.where(wares, managed_category=x), 'ware_id') for x in categories] w_m = [funky.pluck(funcy.where(wares, moderation_state=x), 'ware_id') for x in moderation] w_s = [funky.pluck(funcy.where(wares, stock_state=x), 'ware_id') for x in stock] return intersection_lists(w_c + w_m + w_s)
def test_getWaresBatch(self, count_wares): """ Проверка метода getWaresBatch. Берём из БД Cassandra список из нескольких товаров. Берём из воркера Warehouse товары с идентификаторами товаров из БД. Сравниваем количество товаров общее количество товаров из БД и от воркера. Сравниваем товары с одинаковыми идентификаторами из БД и воркера. """ service_log.run(self) # делаем выборку товаров из Cassandra wares_cassandra = databases.db1.warehouse.get_wares_with_limit(count_wares) self.deserialize_and_update_all_contents(wares_cassandra) # делаем выборку товаров из воркера service_log.put("Get ware, ware_id=%s from Cassandra." % str(funky.pluck(wares_cassandra, "ware_id"))) wares_warehouse = services.warehouse.root.tframed.getWaresBatch(funky.pluck(wares_cassandra, "ware_id")) service_log.put("Data ware from worker Warehouse: %s" % str(wares_warehouse)) self.check_wares(wares_worker=wares_warehouse, wares_cassandra=wares_cassandra)
def clear_fav_users(user_id, fav_type, users): """ Очистить избранные товары пользователя, если таковые имеются. :param user_id: идентификатор пользователя :param fav_type: тип избранного :param users: список идентификаторов товаров """ if users is not None: ware_ids = set(funky.pluck(users, "fav_usr_id")) param = FavoritesCheckMethods.get_FavoritesRemoveRequest(user_id, fav_type, fav_usr_ids=ware_ids) services.favorites.root.tframed.removeFavorites(param)
def get_random_filtered_values(source, key): """ Делаем выборку значений из словаря по ключу. Из выборки составляем список уникальных элементов. Список может варьироваться от 1 до всех элементов. :param source: исходный словарь с данными :param key: ключ по которому происходит выборка :return: список значений """ elements = list(set(funky.pluck(source, key))) p = list(set(map(lambda x: random.choice(elements), range(random.randint(1, len(elements)))))) service_log.put("Get random values %s form filtered key (%s)" % (str(p), key)) return p
def test_remove_fav_users(self): """ Проверка удаления товаров в Избранное через метод removeFavorites. """ service_log.run(self) before_fav_users = databases.db1.favorites.get_fav_users_by_user_id(self.user_id) self.assertIsNotNone(before_fav_users) user_ids = set(funky.pluck(before_fav_users, "fav_usr_id")) param = self.get_FavoritesRemoveRequest(self.user_id, fav_type=self.fav_type_user, fav_usr_ids=user_ids) result = services.favorites.root.tframed.removeFavorites(param) after_fav_users = databases.db1.favorites.get_fav_users_by_user_id(self.user_id) self.assertIsNone(result) self.assertIsNone(after_fav_users)
def recent_contributors(self, n=None, branch=None): n = n or 10 return funky.pluck(self.commit_info(end=n, branch=branch), "author")
def recent_contributors(self, n=None, branch=None): n = n or 10 return funky.pluck(self.commit_info(end=n, branch=branch), 'author')