在plone网站上发布房地产对象的简单而专业的方法
collective.realestatebroker的Python项目详细描述
房地产经纪人
房地产经纪产品把plone变成了一个房地产经纪网站。 展示你的商业和住宅房地产与两个房地产 内容类型。允许访问者使用提供的表单搜索数据库。 注册访客的电子邮件更新。谷歌地图支持。容易的 大量添加图像。PDF导出。
已验证的文档
文档应该是正确的和最新的。为了保证 文档用于测试软件。所以软件和 确保文件正确无误。这就是为什么你会看到代码 本文档中的示例。
首先进行一点设置:添加一个管理员用户和一个注册访客。
< Buff行情>>>> self.loginAsPortalOwner() >>> self.portal.portal_membership.addMember('admin', 'secret', ... ['Manager'], []) >>> self.portal.portal_membership.addMember('visitor', 'secret', ... ['Reader'], [])
安装房地产经纪人
在您的鸡蛋和zcml中添加collective.realestatebroker 建造。如果您想要开发buildout,请在 https://github.com/collective/collective.realestatebroker
如果您有旧的1.0内容,可以通过在 建筑,如图所示,并加上注释。
在plone中,使用管理员帐户登录并安装房地产 通过quickinstaller进行代理(在plone控制面板中:"add/remove 产品")。
< Buff行情>>>> self.login('admin') >>> qi = self.portal.portal_quickinstaller >>> qi.installProduct('collective.realestatebroker')
附加产品
RealestateBroker利用地图产品集成谷歌地图。检查 在Realestabroker拥有 已安装。
< Buff行情>>>> self.portal.portal_quickinstaller.isProductInstalled('Maps') True
ploneflashupload用于轻松地批量上传图像。
< Buff行情>>>> self.portal.portal_quickinstaller.isProductInstalled('PloneFlashUpload') True
在幕后,reportlab库用于导出pdf。
商业和住宅房地产内容类型
有两种内容类型,住宅和商业。它们有几处不同 字段.
< Buff行情>>>> self.portal.invokeFactory('Residential', id='home1') 'home1' >>> self.portal.invokeFactory('Commercial', id='office1') 'office1'
对旧版本1.0到2.0的迁移支持
如果使用迁移构建安装,则重新安装realestatebroker 将执行迁移。迁移执行以下操作:
- 用住宅/商业对象替换旧的住宅/商务对象。
- Rehome/Rebusiness有带CMFPhotos的CMFPhotoAlbums,这些照片 直接进入(folderish)住宅/商业对象 常规图像。
- 将旧工作流状态或旧状态字段迁移到新工作流状态。
- 如果新内容类型中仍然存在,请复制所有字段。
最好在3.0中创建一个新站点并有选择地移动 结束。无论如何,您不能直接执行2.0到3.0的plone迁移。它适用于 把旧房子和办公室出口到 3.0站点,假设您安装了迁移构建:该构建 包括旧realestatebroker产品、cmfphoto和 允许您加载旧对象的cmfphotoalbum。
定制
几乎可以肯定的是,房地产经纪人将需要适应当地 情况。在荷兰,航空公司并不常见,但在南部 美国可能是你想追踪的地方。
archetypes.schemaextender是一个很好的工具,可以很好地调整模式。见 RealestateBroker的"操作方法"部分的文档
此外,pdf导出还需要像添加页眉/页脚这样的工作。安D选择 另一种字体。这里还有:请参见plone.org 文档
房地产工作流程
房地产经纪人提供了一个名为"房地产工作流"的特殊工作流 它映射到住宅和商业内容类型。
< Buff行情>>>> home1 = self.portal.home1 >>> wftool = self.portal.portal_workflow >>> self.failUnless('realestate_workflow' in wftool.objectIds()) >>> wftool.getChainForPortalType('Commercial') ('realestate_workflow',) >>> wftool.getChainForPortalType('Residential') ('realestate_workflow',)
房地产内容的初始状态应该是离线的,这意味着 Anonymous不能查看它,只有所有者、编辑器和管理器可以编辑它。从 此状态我们可以发布内容,这将使其进入"新"状态。
< Buff行情>>>> wftool.getInfoFor(home1, 'review_state') 'offline' >>> wftool.doActionFor(home1, 'publish', wf_id='realestate_workflow') >>> wftool.getInfoFor(home1, 'review_state') 'new'
两周后,新项目将成为常规项目,以便新项目可以 在列表中显示得更突出。同样地,售出的物品将保留 两周内可见(这对获得"本地产"非常重要 经纪人真的卖了不少房子的"印象"。
门户属性
RealestateBroker在门户属性下安装属性表 默认属性。
< Buff行情>>>> pptool = self.portal.portal_properties >>> self.failUnless('realestatebroker_properties' in pptool.objectIds())
站点属性
不要在导航树中显示基本或特殊对象。
< Buff行情>>>> navtree_props = pptool.navtree_properties >>> types_not_to_list = navtree_props.getProperty('metaTypesNotToList') >>> self.failUnless('Residential' in types_not_to_list) >>> self.failUnless('Commercial' in types_not_to_list)
词汇表
对于城市领域,我们使用一个词汇表来读取 属性表。
< Buff行情>>>> self.loginAsPortalOwner() >>> self.portal.portal_membership.addMember('admin', 'secret', ... ['Manager'], []) >>> self.portal.portal_membership.addMember('visitor', 'secret', ... ['Reader'], [])0
对于house type字段,我们使用一个词汇表,它从 属性表。
< Buff行情>>>> self.loginAsPortalOwner() >>> self.portal.portal_membership.addMember('admin', 'secret', ... ['Manager'], []) >>> self.portal.portal_membership.addMember('visitor', 'secret', ... ['Reader'], [])1
对于rooms字段,我们使用一个词汇表来读取 属性表。
< Buff行情>>>> self.loginAsPortalOwner() >>> self.portal.portal_membership.addMember('admin', 'secret', ... ['Manager'], []) >>> self.portal.portal_membership.addMember('visitor', 'secret', ... ['Reader'], [])2
门户目录索引
测试索引是否已在门户目录工具中创建。
< Buff行情>>>> self.loginAsPortalOwner() >>> self.portal.portal_membership.addMember('admin', 'secret', ... ['Manager'], []) >>> self.portal.portal_membership.addMember('visitor', 'secret', ... ['Reader'], [])3
谷歌地图支持
RealestateBroker使用"地图"产品来支持谷歌地图。我们的 内容类型可由地图使用:
< Buff行情>>>> self.loginAsPortalOwner() >>> self.portal.portal_membership.addMember('admin', 'secret', ... ['Manager'], []) >>> self.portal.portal_membership.addMember('visitor', 'secret', ... ['Reader'], [])4
maps javascripts没有加载到 性能原因:
< Buff行情>>>> self.loginAsPortalOwner() >>> self.portal.portal_membership.addMember('admin', 'secret', ... ['Manager'], []) >>> self.portal.portal_membership.addMember('visitor', 'secret', ... ['Reader'], [])5
我们在"编辑"窗体和"地图"选项卡上显示它:
< Buff行情>>>> self.loginAsPortalOwner() >>> self.portal.portal_membership.addMember('admin', 'secret', ... ['Manager'], []) >>> self.portal.portal_membership.addMember('visitor', 'secret', ... ['Reader'], [])6
作者
由Ahmad Hadi和Jean Paul Ladage制作的原始1.0版本。
2.0由Jean Paul重新编写 ladage, 弗雷德·范 dijk 和mirellavanteulingen" rel="nofollow">mirella van Teulingen,所有的 软件