跳转到主要内容

TurboGears2应用标签支持

项目描述

关于Tagging

tgext.tagging是一个允许快速将标签添加到任何项目的TurboGears2库,它管理标签、标签云和小部件以列出、删除和添加实体标签。

安装

tgext.tagging可以从pypi或bitbucket安装

pip install tgext.tagging

应该对大多数用户有效

启用标签管理

对于TurboGears 2.2+,建议使用tgext.pluggables

from tgext.pluggable import plug
plug(base_config, 'tgext.tagging')

对于旧版本,编辑model/__init__.py并添加以下行

import tgext.tagging
Tag, Tagging = tgext.tagging.setup_model()

大多数用于管理标签的工具都由Tagging类公开

  • Tag.lookup(tag_name) -> 返回给定标签名称的Tag实例

  • Tag.lookup_list(comma_separated_tags) -> 返回标签列表中每个条目的标签实例。

  • Tagging.items_for_tags(Model, comma_separated_tags) -> 返回具有给定标签的项目列表

  • Tagging.tag_cloud_for_object(item) -> 返回给定对象的标签列表

  • Tagging.tag_cloud_for_set(Model, items=None) -> 返回给定项目集的标签云。如果传递了项目列表,则将检索给定列表的标签,否则将检索给定模型的所有项目。

  • Tagging.tag_cloud_for_user(user, Model=None) -> 返回给定用户设置的标签。如果传递了任何模型,则将仅检索该模型的标签。

  • Tagging.add_tags(item, comma_separated_tags) -> 将给定的标签添加到项目

  • Tagging.del_tags(item, comma_separated_tags) -> 从项目删除给定的标签

  • Tagging.set_tags(item, comma_separated_tags) -> 用新的列表替换项目的所有标签

标签控制器

tgext.tagging提供了一个用于管理标签的控制器。使用以下代码在您的项目中启用它:

from tgext.tagging.controllers import TaggingController

class RootController(BaseController):
    tagging = TaggingController(model=Group, session=DBSession, allow_edit=None)

您可以启用多个TaggingController,每个为您的应用程序中可用的每个模型一个。参数model表示要管理标签的模型对象,session是用于执行查询的sqlalchemy会话,而allow_edit是repoze.what谓词,用于检查是否显示编辑功能。

控制器提供tagsaddremovesearch操作

  • /tags/id -> 可由jQuery.load加载的局部视图,显示给定对象的标签列表以及添加/删除标签的表单。

  • /add/id?tags=tag1,tag2,tag3 -> 允许向项目添加一个或多个标签

  • /remove/id?tags=tag1,tag2 -> 允许从项目删除一个或多个标签

  • /search?tags=tag1,tag -> 搜索具有给定标签的项目,如果可用,将使用Model.tagging_display方法来显示结果。否则,执行str(Model)

标签小部件

tgext.tagging提供了一些用于管理标签的小部件。tgext.tagging.widgets.TagListtgext.tagging.widget.TagCloud被提供。两者在构造时都接受一个tagging_url参数,该参数指向小部件可以用来管理标签的标签控制器URL。默认情况下,它指向/tagging。TagList小部件还接受一个editmode参数,可以指定是否显示添加和删除标签的控制。

在渲染时,TagList接受一个对象作为参数,将显示给定对象的标签列表,而TagCloud接受由Tagging.tag_cloud_for_object、Tagging.tag_cloud_for_set或Tagging.tag_cloud_for_user返回的标签云,并将显示一个带权重的标签云。

与SQLITE一起使用

tgext.tagging严重依赖于SAVEPOINT来正确处理标签的唯一性。默认的SQLite行为与savepoints不兼容,需要一些额外的更改,而这些更改在用MySQL或Postgres工作时是不需要的。

通常,为了使SQLite和zope.sqlalchemy能够正确运行,在使用模型之前需要以下代码:

from sqlalchemy import event

@event.listens_for(engine, "connect")
def do_connect(dbapi_connection, connection_record):
    # Disable SQLITE automatic transactions
    dbapi_connection.isolation_level = None

@event.listens_for(engine, "begin")
def do_begin(conn):
    # Manually emit SQLITE transaction begin
    conn.execute("BEGIN")

# Tell zope.sqlalchemy that SQLITE now supports SAVEPOINT
from zope.sqlalchemy import datamanager
datamanager.NO_SAVEPOINT_SUPPORT = set()

忘记放置此代码通常会导致以下错误:

(OperationalError) no such savepoint: sa_savepoint_3 u'ROLLBACK TO SAVEPOINT sa_savepoint_3' ()

TypeError: ('Savepoints unsupported', <zope.sqlalchemy.datamanager.SessionDataManager object at 0x7fe9feae45d0>)

有关详细信息,请参阅SQLite Serializable

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

tgext.tagging-0.3.0.tar.gz (15.3 kB 查看散列)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面