用于跟踪成员身份的成员数据库

betahaus.openmember的Python项目详细描述


内容

简介

betahaus.openmember 是用于管理成员和跟踪其个人信息更改的数据库。 这包括财政年度的会员资格、参加活动等。

安装

< DL>
构建:
> UL>
  • 在适当的构建配置文件中将 betahaus.openmember 条目添加到eggs和zcml中。(典型的buildout.cfg)
  • 重新运行Buildout。(./bin/buildout)
  • 重新启动实例
  • 通过门户快速安装程序或plone中的站点设置进行安装
  • 事件

    有四个事件可用:omemberEdevent、omemberwillbemodifiedevent、omemberModifiedevent和omemberDeletedevent。 像这样注册一个侦听器:

    <subscriber
      for="betahaus.openmember.interfaces.IOMemberAddedEvent"
      handler=".handlers.added"
      />
    

    handlers.py的格式如下:

    >>> def added(event):
    ...     contenttype_object = event.object
    ...     databse_object = event.om_object
    

    配置

    按照安装说明进行操作后,需要为要监视的内容和要监视的内容的字段配置数据库。 现在您可以选择使用名为memberPerson的附带内容类型。 或者您可以采用任何您喜欢的内容类型,并确保它实现接口betahaus.openmember.interfaces.iopenmember。 建议的方法是添加一个zcml five:implements 条目:

    <five:implements
        class="path.to.your.contentType"
        interface="betahaus.openmember.interfaces.IOpenMember"/>
    

    接下来,您需要配置要监视的内容类型上的哪些字段。 这是通过可从站点设置访问的OpenMember控制面板完成的。每个字段配置的结构应为:

    field_name | index_type | label
    
    < DL>
    字段名
    这是内容类型的字段名。
    索引类型
    这是要使用的索引类型,典型的索引是 zctextindex dateindex keywordindex
    标签
    此字段应显示的内容。此参数是可选的。

    您还可以设置哪些字段应该是标题字段。这些字段是显示在搜索Portlet和结果表中的字段。

    扩展控制面板

    开放成员可以通过额外的功能轻松扩展。有时扩展需要使用配置面板进行配置。 为了帮助用户在同一个地方拥有与 openmember 相关的所有配置,您可以向 打开成员配置面板。

    向配置面板注册扩展需要两个部分。一个模式定义组成配置面板的字段, 一个适配器实现模式并负责读/写值。

    架构应具有以下结构:

    >>> from betahaus.openmember.interfaces import IOMControlPanelForm
    >>> from zope import schema
    >>> class ExampleSchema(IOMControlPanelForm):
    ...     """Example schema for openmember sub control panel"""
    ...     example = schema.List(name='example')
    

    这里的关键点是模式必须继承 iomcontrolpanelform 并具有基于zope.schema的模式。

    适配器应具有以下结构:

    >>> from Products.CMFDefault.formlib.schema import SchemaAdapterBase
    >>> from Products.CMFPlone.interfaces import IPloneSiteRoot
    >>> from betahaus.openmember.browser.controlpanel import
    >>> from betahaus.exports.openmember import PROJECTNAME
    >>> class ExamplePanelAdapter(SchemaAdapterBase):
    ...     """Openmember control panel extension for examples settings."""
    ...     implements(ExampleSchema)
    ...     adapts(IPloneSiteRoot)
    ...
    ...     def getId(self):
    ...         """The Id must be lowercase"""
    ...         return 'example'
    ...
    ...     def getLabel(self):
    ...         """The label can be translated to any language"""
    ...         return _(u'Example')
    ...
        --- Getters and setters for the schema defined above. ---
    >>> registerForm(ExampleSchema, PROJECTNAME)
    
    < DL>
    这里的要点是: > UL>
  • 适配器应该继承自schemaadapterbase或继承链中的schemaadapterbase。
  • 适配器必须实现前面定义的模式,包括函数 getid getlabel
  • 在OpenMember控制面板中注册架构
  • 最后一步是在zcml中注册适配器:

    <adapter factory=".controlpanel.ExamplePanelAdapter" />
    

    现在您完成了。

    贡献者

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    javai是JAXB的新手。如何将两个具有不同名称空间的不同xml合并为一个具有根元素的xml并将其解组?   JDO中的java应该是可传递的DefaultFetchGroup吗   java服务器配置问题   java在理解JList时遇到困难   java何时将RequestContextFilter用于Jersey?   java从数据库中读取文本文件。jar文件   Java正则表达式,仅适用于不包括零的正数   爪哇番石榴。类路径中的jar   JavaEE:关于设计的问题   java GUI,在面板中排列按钮   java Android为什么使用接口被认为是活动和片段之间通信的最佳实践?   java如何获取wicket图像的url以在开放图元标记中使用它   从Java字节[]>Base64>Javascript数组缓冲>Base64>byte[]   java正则表达式帮助字符串JWE766。1.pdf格式摘录766   java Hibernate,JPA忽略@Formula