管理和自动化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
- 初始版本