管理和自动化plone站点上的社交发布

collective.socialpublisher的Python项目详细描述


导言

为管理者提供一个viewlet(和一个隐藏的机器),允许将内容发布到社交网络(只有twitter atm)。通过对每个内容启用它,社会出版物可以实现自动化。

要启用viewlet,只需使用collective.socialpublisher.interfaces.ippublisheble标记所需的内容类型您可以从ZMI或槽ZMCL进行操作:

<class class="Products.ATContentTypes.content.event.ATEvent">
    <implements interface="collectinve.socialpublisher.interfaces.IPublishable" />
</class>

NOTE: this is already done by the package in this alpha stage.

Twitter帐户管理由collective.Twitter.accounts完成

您可以通过注册提供collective.socialpublisher.interfaces.isocialpublisherity的实用程序来提供发布者。有关详细信息,请参见collective.socialpublisher.utility。

要启用自动发布,必须对每个内容启用它(等待全局配置),并且必须创建一个cron调用@social auto publish您可以使用Products.cron4plone或像这样的槽构建:

[instance]
...
zope-conf-additional =
  <clock-server>
      method /plonesite/@@social-auto-publish
      period 1000
      user admin
      password admin
  </clock-server>

另请参见http://collective-docs.readthedocs.org/en/latest/misc/asyncronoustasks.html

测试时间

扑通一声4.1+4.2RC1

发布管理器

让我们创建一个事件

>>> from plone.app.testing import setRoles
>>> from plone.app.testing import TEST_USER_ID
>>> portal = layer['portal']
>>> setRoles(portal, TEST_USER_ID, ['Manager'])
>>> evid = portal.invokeFactory('Event', 'event')
>>> event = portal[evid]

并检查是否已启用发布

>>> from collective.socialpublisher.interfaces import IPublishable
>>> IPublishable.providedBy(event)
True

找经理

>>> from collective.socialpublisher.interfaces import IPublishStorageManager
>>> manager = IPublishStorageManager(event, None)
>>> manager is None
False

存储必须是persistentdict

>>> from persistent.dict import PersistentDict
>>> isinstance(manager.storage,PersistentDict)
True

帐户必须是空的dict,文本必须是空字符串。

>>> manager.get_accounts()
{}
>>> manager.get_text()
''

我们可以为给定的发布者保存帐户

>>> publisher = 'twitter'
>>> account_id = 'simahawk'
>>> manager.set_account(publisher,account_id)
>>> manager.get_account(publisher)
'simahawk'
>>> manager.get_accounts()
{'twitter': 'simahawk'}

让我们添加另一个发布者/帐户。

>>> publisher = 'facebook'
>>> account_id = 'simahawkfb'
>>> manager.set_account(publisher,account_id)
>>> manager.get_account(publisher)
'simahawkfb'
>>> manager.get_accounts()
{'twitter': 'simahawk', 'facebook': 'simahawkfb'}

我们还可以保存要发布的文本

>>> manager.set_text('foo bar')
>>> manager.get_text()
'foo bar'

然后我们可以像这样硬重置设置:

>>> manager._reset_storage()
>>> manager.get_accounts()
{}
>>> manager.get_text()
''

待办事项

  • 测试+文档
  • 添加对LinkedIn和Facebook的支持
  • 动态/可配置自动发布内容的查询

变更日志

1.0a3

  • [添加]test buildout.cfg
  • [imp]改进的测试
  • [imp]改进文档
  • [添加]使用p.a.registry+controlpanel进行全局配置
  • [imp]您现在可以关闭全局自动发布

1.0a2

  • [修复]旧的twitter导入
  • [imp]“更新”按钮,用于保存设置而不发布
  • [imp]“一次性文本”仅用于更改当前发布的文本而不覆盖存储的文本的标志
  • [imp]如果存在cron4plone,则显示任何可用的cron计划
  • [imp]改进了一些样式

1.0a1

  • 初始版本

学分

这个产品是由domsense开发的。

Domsense Website

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

推荐PyPI第三方库


热门话题
Grails2.1.0/Java7在Windows8.1上从何处获取当前用户名?   JavaSpringJMSActiveMQ   java异常处理,捕获导致while循环停止   sql server 2008将日期时间解析为JAVA日期   java是第一个servlet,但无法打开它   如何在Java中使用XML bean创建典型的XML头?   java将iOs应用程序转换为Android   java将jsp页面内容读取到其他jsp页面中的html   客户端计算机中小型数据库应用程序的java实现   java同步和ServletContextListener   安卓 Java将所有转义字符替换为双转义   当我在布局单元中实现ScrollView时,java GridView的setOnItemLongClickListener不起作用(使用适配器)   禁用Java web服务端点Wsdl   java如何编写一个程序来反转用户输入的数字