SQLALCHEMY-based not user/group/prop store.
pas.plugins.sqlalchem的Python项目详细描述
sqlalchemy pas插件
这个包提供了一个基于sqlalchemy数据库抽象层的zope 2 pas插件实现(可插入认证服务)。
它允许您使用SQL数据库存储和查询用户和组。
这个包取代了 sqlpasplugin 。产品。 从技术上讲,它是那个代码库的一个分支。 有些测试已被重写,但大多数都被保留。
虽然目前还没有稳定的版本,但它在生产中使用(仅针对 pysqlite 和postgresql数据库进行测试)。
设置
要使用数据库配置插件,请使用 z3c.saconfig 。 在构建中的 plone.recipe.zope2instance 配方的 configure.zcml 或 plone.recipe.zope2instance 参数中定义一个命名作用域会话。
示例:
<configure xmlns="http://namespaces.zope.org/db"> <include package="z3c.saconfig" file="meta.zcml"/> <engine name="pas" url="postgresql://localhost/pas" /> <session name="pas.plugins.sqlalchemy" engine="pas" /> </configure>
使用附带的genericsetup配置文件安装插件。 请注意,表将在安装时自动创建。
您可以随时重新安装以创建不存在的表。 请注意,卸载时会保留表。
plone的配置
除了在zcml中指定数据库连接信息之外,还可以使用collective.saconnect在plone控制面板上配置连接。
通过将软件包添加到构建中来安装它,然后通过plone的控制面板将其安装到plone站点中。 现在您有了一个新的控制面板,允许您创建和编辑数据库连接。
要添加与通用安装程序的连接,请将文件 saconnections.xml 添加到站点安装程序包的通用安装配置文件中,并使用 以下内容:
<?xml version="1.0"?> <connections> <connection name="pas.plugins.sqlalchemy" string="postgresql://USER:PASSWORD@localhost/DATABASE" /> </connections>
为了获得良好的性能,不要忘记在zmi中启用缓存。
包说明中提供了更多信息。
自定义主体、用户和组模型
您可以为所有三个类别注册自己的基于sqlalchemy的模型类。
必需的类接口(必需的方法和属性)在 接口 模块中描述。 请注意,您可以简单地从实现所需接口的默认模型中派生子类。
可以在zmi中访问这些设置。您也可以使用自定义设置处理程序。
示例:
def setup_pas_plugin(self): pas = self.acl_users plugin = pas['sql'] plugin.manage_changeProperties( user_model="my_package.model.User", principal_model="my_package.model.Principal", group_model="my_package.model.Group" )
您可能需要确保插件的优先级高于默认插件(通常基于zodb)。
愿望列表
这些项目在待办事项列表中:
- 仅邮政安全。
- 已实现接口的评审-实现是否完成?
- 处理组标题、说明和电子邮件,以匹配较新版本o扑通一声。
- 外部模型配置测试。
学分
作者
- rocky burt<; 服务器端软件的rocky @ 服务器端 com >;
- Nate Aune<; Jazkarta的natea @ Jazkarta com >;
- Stefan Eletzhofer<; Stefan Eletzhofer @ inquant de >;inquant
- Malthe Borch<; mborch @ gmail com >;
贡献者
- ruda porto filgueiras<; rudazz @ gmail com >;
- 丹尼尔·努里(Daniel Nouri)<;丹尼尔 Nouri @ Gmail com>;
- 多尔内尔斯·特雷姆a<; deo @ jarn com >;的jarn
- Wichert Akkerman<; Wichert @ Wiggy Simplon的网络 >;
- Riccardo Lemmi<; Riccardo @ reflab 它是reflab srl的 >;
- derek broughton<; auspex @ 指针停止 ca >;
- 里格尔迪斯卡拉<;zedr>;
- Sune Broendum Woeller<; HeadNet AP的Woeller @ HeadNet dk >;
赞助商
- 感谢chemindustry.com Inc.为开发sqlpasplugin提供资金
- 感谢statens byggeforskninginstitute(http://www.sbi.dk" rel="nofollow">http://www.sbi.dk)赞助缓存支持。
- 感谢gis&web s.r.l.(http://www.gisweb.it" rel="nofollow">http://www.gisweb.it)赞助集团管理支持。
- 感谢海洋跟踪网络(http://ocean tracking network.org/" rel="nofollow">http://oceantrackingnetwork.org/)添加了组功能并迁移了现有用户。
许可证
GNU GPL v2(详见license.txt)
更改日志
0.4.2(2017-10-23)
- 在0.4.1版中未修复清单(仍为棕色包版本) [Keul]
- 固定棕色袋释放(再次)。 [马尔特]
0.4.1(2017-10-23)
- 固定棕色袋释放。 [马尔特]
0.4(2016-03-31)
在zmi中添加到缓存设置视图的链接 [搅拌器]
修复: getpropertiesforuser 现在使用主体属性映射 要映射到用于 zope_id id的列,这是必需的。 [詹森]
插件安装时不需要在中配置数据库连接 为了和collective.saconnect玩得好。如果有的话也不要太冗长 未配置连接。 [詹森]
修复:安装和卸载的不同自定义安装卸载标记 [詹森]
将安装配置文件的名称标准化为默认值。 [詹森]
现代化:PEP8,特拉维斯… [詹森]
使用"按ID获取主体"在DoChangeuser中获取主体, dodeletueuser和allowpasswordset方法 [GBorelli]
使用"映射器"而不是"表"检查列类型。 它允许在另一个类中自定义用户模型 多态性 [GBorelli]
修复了用户的GetProperties,如果主体不存在,则返回None [GBorelli]
在更新主体的属性之前检查主体是否存在 [GBorelli]
固定方法dosetproperty和 为用户设置属性 他们接受一般的主体而不一定是实例 插件的主要类。 [马尔] < /P>
在实际可变的用户属性表中包装用户属性 (将更改写回插件)。以前,易变的 属性表已返回,但这是不正确的,因为更改了 不会持久化。
而pas接口指定 一个不变的结果,我们选择了一个混合:一个dict感知的用户属性 不保证易变性的纸张。其动机是 可插拔身份验证服务只支持 属性值类型,而不是python自己的日期和 时间课。通过返回属性表,我们可以提供一个模式 显式且不强制身份验证服务"猜测" (推断)它。 [马尔] < /P>
0.3(2011-10-13)
在用户的setproperties上启动iproperties updated(from pas)事件 允许组件在更新用户属性时执行操作。 [马尔] < /P>
将svn存储库(选择分支)合并到现有的github中 整合改进的存储库。 [马尔] < /P>
向组添加标题和说明。
GetRolesForPrincipal需要听"忽略组角色"和 _忽略请求中的直接角色以使用plone 4。 GetRolesForPrincipal需要将组角色考虑为 违约. [Sune] < /P>
合并了许多分支的变化:wichert flexible, wichert灵活的pw加密,zedr mysql优化,auspex。
版本0.3与早期版本不兼容,正在升级 将需要一些迁移(不包括在内)。 [Sune] < /P>
在pas中,将用户id和登录名分开。(不完整?) [威瑟特]
重构用户、组和主体类以实现更多共享 组和用户之间的功能。 [威瑟特]
要与mysql兼容的varchars的长度 [Auspex、Wichert、Sunew、Zedr]
清理属性-只有plone属性在 现在型号。如果需要更多字段,请重写模型。 [Sune] < /P>
密码和salt只读。 [威瑟特,苏纽]
删除与iupdateplugin相关的内容。不使用。 [威瑟特]
通过点路径zmi属性使模型可配置。 [威瑟特]
还可以配置主体类。 [Sune] < /P>
添加缺少的安全声明(与相同方法的安全声明匹配 在Plonepas和PluggableauthService中)。 [Sune] < /P>
完全实现iroleassignerplugin:missed doremoverolefromprincipal。 [
更多的测试,通过了plone 4.0.7的测试。 [Sune] < /P>
0.2.1(未发布)
- 修正了一些测试。现在测试通过了plone 4.0.7。 [太阳] < /LI>
- 转换为UTF-8和Unicode。plone内部使用utf-8 大多数python部署都会强制使用ascii编码, 导致Unicode解码错误。[mborch]
0.2(2009/7/17发布)
- 将"listed"和"ext_editor"列类型更改为"integer"匹配 巴隆模型。[选择]
0.1(2009/7/17发布)
- 首次公开发行。