Frappe

来自开放百科 - 灰狐
(版本间的差异)
跳转到: 导航, 搜索
(PostgreSQL)
(PostgreSQL)
第44行: 第44行:
 
.py源文件中有很多这样的语句:
 
.py源文件中有很多这样的语句:
 
  custom_roles = frappe.db.sql("""
 
  custom_roles = frappe.db.sql("""
select
+
select
`tabCustom Role`.{field} as name,
+
`tabCustom Role`.{field} as name,
`tabCustom Role`.modified,
+
`tabCustom Role`.modified,
`tabCustom Role`.ref_doctype
+
`tabCustom Role`.ref_doctype
from `tabCustom Role`, `tabHas Role`
+
from `tabCustom Role`, `tabHas Role`
where
+
where
`tabHas Role`.parent = `tabCustom Role`.name
+
`tabHas Role`.parent = `tabCustom Role`.name
and `tabCustom Role`.{field} is not null
+
and `tabCustom Role`.{field} is not null
and `tabHas Role`.role in ({roles})
+
and `tabHas Role`.role in ({roles})
""".format(field=parent.lower(), roles = ', '.join(['%s']*len(roles))), roles, as_dict=1)
+
""".format(field=parent.lower(), roles = ', '.join(['%s']*len(roles))), roles, as_dict=1)
  
 
==图集==
 
==图集==

2018年8月3日 (五) 02:22的版本

Frappe 是一个全堆栈的 Python & JavaScript web 应用框架,采用MIT许可协议。

ERPNext 基于 Frappe 构建。

目录

DocType

DocType 是一个Frappe应用的基础构建模块,包含MVC(模型-视图-控制器)三要素,表现为:

  • 数据库中的Table
  • 应用中的Form
  • Controller (class) 执行商业逻辑

在Frappe, 模型(models)被称为DocTypes

DocTypes = DocField(字段)/tabDocField + DocPerms(角色权限)/tabDocPerm

当DocType创建并保存,新的表就在数据库中被创建,命名为tab[doctype]。

DocType更新时,JSON模型文件也随着bench migrate命令的执行被更新并同步到数据库。

Module

app, module 模块化设计 Frappe Framework: Models (DocTypes)

  • Core
  • Website
  • Workflow
  • Email
  • Custom
  • Geo
  • Desk
  • Print
  • Integrations
  • Integration Broker

步骤

通过Frappe框架构建应用的步骤:

  • 构建一个新应用(App)
  • 构建模块(Models)
  • 创建用户和记录(Users and Records)
  • 创建控制器(Controllers)
  • 创建Web视图(Views)
  • 设置钩子和任务(Hooks and Tasks)

PostgreSQL

Hack Frappe 提供对 PostgreSQL 的支持。

.py源文件中有很多这样的语句:

custom_roles = frappe.db.sql("""

select `tabCustom Role`.{field} as name, `tabCustom Role`.modified, `tabCustom Role`.ref_doctype from `tabCustom Role`, `tabHas Role` where `tabHas Role`.parent = `tabCustom Role`.name and `tabCustom Role`.{field} is not null and `tabHas Role`.role in ({roles}) """.format(field=parent.lower(), roles = ', '.join(['%s']*len(roles))), roles, as_dict=1)

图集

链接

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱