开源市场介绍

DTCloud开发者社区,赋能开发者,共建企业应用市场。

集体开发者,可在开源市场下载安装模块,也可将本人开发的模块,上传开源市场。

DTCloud模块开发标准

1.利用模块目录

  • 项目名称
  1. 对立的前缀 dt_
  2. 对立为英语字母小写
  3. 不必驼峰表示法,如果有多个单词,倡议以"_"分隔,比方 dictionary_management 这两个单词之间为_下划线。
  • 各目录含意
api 提供内部调用接口
controller 控制器
data 数据
demo 必须要有demo,用户须要晓得怎么操作
doc 放入相干文档,如doc等,用于介绍我的项目或其它
edi 数据交换
i18n 语言目录
models 模型定义
report 报表相干
security 权限相干
static 动态文件等
tests 寄存python或yml测试用例
views 视图模板
wizard 寄存长期的model和视图

2. __manifest__.py规范

  • 对立文件正文,除最初一行日期,其它不倡议更改

    # -*- coding: utf-8 -*-# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&# DTCloud v2.0# QQ: 35350428# 邮件: 35350428@qq.com# 手机: 13584935775# 作者: 'zyf_Amos'# 公司网址: http://www.dtcloud360.com# Copyright 中亿丰数字科技有限公司 2012-2022 Amos# 日期: 2022/5/29
  • manifest.py规范

    {  'name': "百度地图",  #  模块名称  'summary': """百度地图视图""",  # 模块介绍  'category': '中台利用/地图',  'author': "zyfd_Amos",  # 模块开发者名称  'website': "http://www.dtcloud360.com",  'depends': ['web'],  'version': '1.0',  # 版本号留神, 两位,初始版本为1.0  'installable': True,  'application': True,  'auto_install': False,  'license': 'LGPL-3',  'price': '10',  #   模块价格,在利用市场上会显示这里的价格  'currency': 'CNY',  # 价格以人民币为规范  'data': [      'security/data.xml',      'views/views.xml',      'views/templates.xml',  ],  'images': [      'static/description/static/images/map.png',      'static/description/banner.png',  ],  'assets': {      'web.assets_backend': [          'dt_map/static/src/js/bmap_model.js',          'dt_map/static/src/js/bmap_controller.js',          'dt_map/static/src/js/bmap_view.js',          'dt_map/static/src/js/bmap_render.js',          'dt_map/static/src/js/geolocation.js',          'dt_map/static/src/css/bmap.css',          'dt_map/static/src/css/bmap_view.scss',      ],      'web.assets_qweb': [          'dt_map/static/src/xml/bmap.xml',          'dt_map/static/src/xml/geolocation.xml',      ],  },  'description': """""",  # 相干模块介绍}
  • 分类
中台利用:根底,短信,邮件,地图
解决方案:XX智慧工地解决方案,XX公司ERP解决方案等
企业应用:销售,洽购,仓库,生产,会计,人事,我的项目等
工地利用:IOT设施(门禁,视频,门磁,升降机等),人员治理等
楼宇利用:IOT设施(空调,门禁),客房零碎,停车零碎等
城市利用:智慧社区,智慧园区,智慧城市等

3. Banner图片、icon文件文件等,可参照以下文档局部

https://blog.csdn.net/ekcchina/article/details/125080888

DTCloud罕用代码开发命名规定

罕用

  • 防止创立生成器和装璜器:仅应用DTCloud API已有的
  • 可应用filtered,mapped,sorted办法来晋升代码可读性和性能
  • 尽量应用ORM
    当ORM能够实现的时候尽量应用ORM而不要间接写sql,因为它可能会绕过orm的一些规定如权限、事务等,还会让代码变得难读且不平安。

    # 谬误的写法,注入危险,代码效率低self.env.cr.execute('SELECT id FROM auction_lots WHERE auction_id in (' + ','.join(map(str, ids))+') AND state=%s AND obj_price > 0', ('draft',))auction_lots_ids = [x[0] for x in self.env.cr.fetchall()]# 不会被注入,但依然是谬误的写法self.env.cr.execute('SELECT id FROM auction_lots WHERE auction_id in %s '\         'AND state=%s AND obj_price > 0', (tuple(ids), 'draft',))auction_lots_ids = [x[0] for x in self.env.cr.fetchall()]# 举荐的写法auction_lots_ids = self.search([('auction_id','in',ids), ('state','=','draft'), ('obj_price','>',0)])
  • 新增

    values = {  'name': '',}obj = self.env['models'].create(values)
  • 批改

    values = {  'state': '已审核',}self.sudo().write(values)
  • 删除

    self.unlink()
  • 查问

    obj = self.env['models'].search([('name', '=', '')], order="sequence, id desc", limit=1)或model_data = self.env['model'].search_read([('module', '=', 'amos')], ['res_id'])
  • 读取

    self.env['models'].browse(id)
  • 计数

    domain = [('company_id', '=', self.env.ref('base.main_company').id)]rows_count = self.env['account.account'].search_count(domain)
  • 避免注入

不要用python的+号连接符、%解释符来拼sql

# 谬误的写法self.env.cr.execute('SELECT distinct child_id FROM account_account_consol_rel ' +           'WHERE parent_id IN ('+','.join(map(str, ids))+')')# 举荐的写法self.env.cr.execute('SELECT DISTINCT child_id '\           'FROM account_account_consol_rel '\           'WHERE parent_id IN %s',           (tuple(ids),))
  • 不要手动提交事务

DTCloud有本人的一套机制用于事务处理,如self._cr.commit(),非凡场景除外

  • 符号和习惯

模型名-应用.分隔,模块名做前缀

  1. 定义DTCloud模型时,应用复数模式的名字如res.user,res.partner
  2. 定义wizard时,命名格局为<related_base_model>.<action>,related_base_model是关联模型名称,action是性能简称,如account.invoice.make
  3. 定义报表模型时,应用<related_base_model>.report.<action>,和wizard一样
  4. python类-应用驼峰命名形式AccountInvoice。 如果是DTCloud表对象应用account_invoice(小写)
  • 变量名
  1. 模型变量应用驼峰命名形式
  2. 一般变量用下划线+小写字母
  3. 因为新api中记录是汇合模式,当变量不蕴含id时不以id作后缀

    ResPartner = self.env['res.partner']partners = ResPartner.browse(ids)partner_id = partners[0].id
  4. One2Many, Many2Many字段个别以ids作为后缀如:sale_order_line_ids
  5. Many2One 个别以_id为后缀如:partner_id, user_id
  6. 办法命名

    计算字段 - 计算方法个别是_compute_<field_name>
    默认办法 - _default_<field_name>
    onchange办法 - _onchange_<field_name>
    束缚办法 - _check_<constraint_name>
    action办法 - 一个对象的动作办法个别以action_结尾,它的装璜器是@api.multi,如果它只应用单条计算,可在办法头增加self.ensure_one()

接口

  • 工作流
    _api_my_workflow :与零碎中的事件名称一一对应,APP的按钮有后盾接口提供动态显示
  • 一条记录
    _api_one :数据库中一条记录
  • 列表
    _api_page :带分页的数据集
  • 排序
    _api_page_order:列表显示程序
  • 过滤
    _api_page_domain :列表数据显示规定
  • 置顶
    _api_top_time :列表排序中退出

API接口罕用

  • 创立
    _api_create :因为非凡起因要对数据做解决,所以要给前端提供后盾解决
  • 批改
    _api_write :能够做更多判断操作,如果没有更多操作能够间接走零碎批改
  • 删除
    _api_unlink :次要是提供删除判断,能够提供软删除
  • 调配
    _api_distribution :单据上绑定相操作人
  • 支付
    _api_receive :单据认领