def test_get_default_category_name_caching(tag_category_factory): category1 = tag_category_factory() category2 = tag_category_factory() db.session.add_all([category1, category2]) db.session.flush() tag_categories.get_default_category_name() db.session.delete(category1) db.session.flush() assert tag_categories.get_default_category_name() == category1.name cache.purge() assert tag_categories.get_default_category_name() == category2.name
def test_get_default_category_name(tag_category_factory): category1 = tag_category_factory() category2 = tag_category_factory(default=True) db.session.add_all([category1, category2]) db.session.flush() assert tag_categories.get_default_category_name() == category2.name category2.default = False db.session.flush() cache.purge() assert tag_categories.get_default_category_name() == category1.name db.session.query(db.TagCategory).delete() cache.purge() assert tag_categories.get_default_category_name() is None
def test_get_default_category_name(tag_category_factory): category1 = tag_category_factory() category2 = tag_category_factory(default=True) db.session.add_all([category1, category2]) db.session.flush() assert tag_categories.get_default_category_name() == category2.name category2.default = False db.session.flush() cache.purge() assert tag_categories.get_default_category_name() == category1.name db.session.query(model.TagCategory).delete() cache.purge() with pytest.raises(tag_categories.TagCategoryNotFoundError): tag_categories.get_default_category_name()
def get_or_create_tags_by_names( names: List[str], ) -> Tuple[List[model.Tag], List[model.Tag]]: names = util.icase_unique(names) existing_tags = get_tags_by_names(names) new_tags = [] tag_category_name = tag_categories.get_default_category_name() for name in names: found = False for existing_tag in existing_tags: if _check_name_intersection( _get_names(existing_tag), [name], False ): found = True break if not found: new_tag = create_tag( names=[name], category_name=tag_category_name, suggestions=[], implications=[], ) db.session.add(new_tag) new_tags.append(new_tag) return existing_tags, new_tags
def sort_tags(tags: List[model.Tag]) -> List[model.Tag]: default_category_name = tag_categories.get_default_category_name() return sorted( tags, key=lambda tag: ( default_category_name == tag.category.name, tag.category.name, tag.names[0].name) )
def sort_tags(tags): default_category_name = tag_categories.get_default_category_name() return sorted( tags, key=lambda tag: ( default_category_name == tag.category.name, tag.category.name, tag.names[0].name) )
def sort_tags(tags: List[model.Tag]) -> List[model.Tag]: default_category_name = tag_categories.get_default_category_name() return sorted( tags, key=lambda tag: ( default_category_name == tag.category.name, tag.category.name, tag.names[0].name, ), )
def get_or_create_tags_by_names(names): names = util.icase_unique(names) existing_tags = get_tags_by_names(names) new_tags = [] tag_category_name = tag_categories.get_default_category_name() for name in names: found = False for existing_tag in existing_tags: if _check_name_intersection( _get_names(existing_tag), [name], False): found = True break if not found: new_tag = create_tag( names=[name], category_name=tag_category_name, suggestions=[], implications=[]) db.session.add(new_tag) new_tags.append(new_tag) return existing_tags, new_tags