创建完我们的模块,接下来我们就要为我们的模块添加一些对象.今天我们将要创建一个学生对象(tech.student)和一些基本的属性,并将用form和tree视图将其展示出来: 一. 创建tech.student对象: fields,models,api,_是基本上每个模块都需要引入的4个模块: fields是odoo自定义的字段集,在odoo中每个实例对象都要继承models.Model这个类,api是使用新API必须的装饰器类,_则是翻译函数. 关于odoo的字段类型,请参考:http://w…
[关于odoo新API的介绍,Internet上资料很少,或者不够完整详实,这会对初学者造成很大的困惑,本篇的目的就是希望能帮助新手了解新API的大概] odoo 新api的实现是借助于python装饰器,关于python装饰器的知识,请自行参考python相关手册. 新API的装饰器主要有以下几种: model,multi,one constrains,depends,onchange,returns 还有一些像 cr,cr_context,cr_uid,cr_uid_context,cr_u…
注:本篇及后续均以8.0为基础. 一. Odoo模块的构成 __init__.py 文件是python包导入所必须的文件,内容可以为空,通常情况下我们用来导入自己写的py文件. __openerp__.py odoo模块的必须文件,里边包含了关于本模块的一些基础信息,如,依赖,视图文件等等. static文件夹 存放模块图标.静态文件的地方,js和qweb视图也放于此文件夹内. test 单元测试的相关文件 views 一些区分的比较清楚的模块会将view文件单独存放起来,并起一个名字,但这并非…
一.只读和唯一性验证 只读的设置有两种方法,一种是实在字段定义时设置为只读,第二种是在页面视图中进行设置. 接前例,我们将学生(tech.student)的名字name字段设置成只读. 方法一:字段定义添加只读设置 方法二:视图上加只读设置 重启服务,升级模块,即可看到我们的修改生效了. 提示:修改了python代码(非字段内容)只需重启服务,修改了视图文件需要升级模块. 唯一性的验证也有两种方法,一种是利用_sql_constraint另一种是利用API的contraints装饰器. 方法一:…
一,安装的两种方式: 1) deb包安装: 此安装方式适用于简单不需要太多的人工干预,大多数插件都在deb中涵盖了.具体的步骤如下: 1.编辑 /etc/apt/source.list 文件,在末尾添加Odoo源:http://nightly.odoo.com/ deb http://nightly.odoo.com/8.0/nightly/deb/ ./ 2. sudo apt-get update 更新源列表,此过程中可能碰到key验证失败的问题,可到https://nightly.odoo…
一 . 在 mip-extensions 仓库中创建新的组件 二 . 预览调试组件 三 . 在 MIP 页中引用自己编写的 MIP 组件 四 . 组件提交到 GitHub 仓库时需要进行校验 站长开发的非通用组件,使用 组件上线平台 提交,上线后代码位于 GitHub/mip-extension-platform 仓库中. 一 . 在组件仓库中创建新的组件 在创建组件之前,需要确认 mip-cli 工具已经安装.在命令行执行: $ mip -V 如果返回版本号,则安装成功,可以进行下一步.如果报…
iOS 9应用开发教程之多行读写文本ios9文本视图 多行读写文本——ios9文本视图 文本视图也是输入控件,与文本框不同的是,文本视图可以让用户输入多行,如图2.23所示.在此图中字符串“说点什么吧”这一区域就是使用文本视图实现的,用户可以在此区域中写大量的文本内容.一般文本框视图使用UITextView实现.   图2.23  写日志 [示例2-9]以下将使用文本视图实现QQ中写说说并发表的功能.具体的操作步骤如下: (1)创建一个Single View Application模板类型的项目…
◆二次开发 1.什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核. 2.为什么要二次开发? 随着信息化技术的不断发展,IT行业涌现出了一系列优秀的开源作品,其作者或是个人,或是项目小组,或是软件公司.选择和应用这些优秀的开源软件,并在此基础上进行符合业务需求的二次开发,将给企业节省信息化成本(时间成本及开发成本)的同时,更能带来技术上的保障.这就是我们常听的:站在巨人的肩膀上,你将看的更远.所以国内很多…
◆二次开发 什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一 般来说都不会改变原有系统的内核. 为什么要二次开发? 随着信息化技术的不断发展,IT行业涌现出了一系列优秀的开源作品,其作者或是个人,或是项目小组,或 是软件公司.选择和应用这些优秀的开源软件,并在此基础上进行符合业务需求的二次开发,将给企业节省信息 化成本(时间成本及开发成本)的同时,更能带来技术上的保障.这就是我们常听的:站在巨人的肩膀上,你将看 的更远.所以国内很多…
<1>程序文件目录介绍: app – 应用目录 models – 模型目录 plugins – 插件目录 static – 静态文件 system – 系统目录 views – 模板目录 我们简单的页面二次开发主要还是关注static和views这两个文件. 下面在介绍一下这个文件里面对应的目录功能 static里面文件分别是: admin: 后台控制面板的css,js,图片这些文件: common: 网站公用的图片,比如社区默认的头像图片: css:主要介绍css/default里的css文…
转自:http://www.cnblogs.com/semcoding/p/3347600.html PHPCMS V9 结构设计 根目录 |–api  结构文件目录 |–caches 缓存文件目录    |– configs 系统配置文件目录    |– caches_* 系统缓存目录 |–phpcms  phpcms框架主目录    |– languages 框架语言包目录    |– libs 框架主类库.主函数库目录    |– model 框架数据库模型目录    |– modules…
PHPCMS V9 结构设计 根目录|–api  结构文件目录|–caches 缓存文件目录   |– configs 系统配置文件目录   |– caches_* 系统缓存目录|–phpcms  phpcms框架主目录   |– languages 框架语言包目录   |– libs 框架主类库.主函数库目录   |– model 框架数据库模型目录   |– modules 框架模块目录   |– templates 框架系统模板目录|–phpsso_server  phpsso主目录|–s…
PHPCMS V9 核心文件说明 模块与控制器 模块: phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块.即url访问中的m. 访问content模块示例:http://www.yourname.com/index.php?m=content 控制器: phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面.类名成就是文件名+.php,例如一个名为abc的控制器,那么他的命名为abc.php即可.控制器类默认继…
  来源:互联网 作者:佚名 时间:03-01 16:05:31 [大 中 小] Ecshop想必大家不会觉得陌生吧,大部分的B2C独立网店系统都用的是Ecshop系统,很受用户的喜爱,但是由于Ecshop模板自带有很多Ecshop的Logo和版权信息,和一些其他需要修改的地方,所以我们需要对Ecshop系统做二次开发,下面就来看看具体操作步骤吧     一.Ecshop简介: ECShop是Comsenz公司推出的一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店.系统是基于PHP语…
1.breakList的问题 ((PolygonBreak) aLS.breakList[0]).DrawFill=false; 新的类库将LegendScheme的breakList属性改为了LegendBreaks,应该这样用: ((PolygonBreak)aLS.LegendBreaks[0]).DrawFill = false; 2.Offset的问题 cityLayer.LabelSet.Offset = ; 需要改为以下两句: cityLayer.LabelSet.XOffset…
一:self是什么 目前新版的Odoo中使用到的self,是对  游标cr.用户ID.模型.上下文.记录集.缓存  的封装. 我们可以通过 self.XX 获取到这些封装的东西,比如:self.cr.self.uid. 二:通过直接设置属性来改变数据库中字段值 我们在查出某模型的记录后,可以通过  record.XX = value  来直接修改记录的字段内容. 同样,在重写模型的write方法中,也可以通过 self.XX = value 来指定新增记录中某字段的值. 这里需要注意两点: 1:…
环境准备: 一.Tomcat服务器     首先需要在本地搭建tomcat.tomcat搭建过程本人博客中有,不再重复纪录.因为开始没有搭建成功,浪费了一定时间.   二.Mysql服务器     在本地安装Mysql数据库.     此次安装在数据库中出现了问题,忘记了数据库的密码.因此对数据库密码进行了修改.     忘记Mysql数据库密码修改方法:     1.首先关闭mysql数据库     2.打开命令行           进入:cd /usr/local/mysql/bin/ 获…
NAGIOSQL数据库结构简介 个人觉得如果了解一个系统的架构,应该先从数据库着手,因为数据库是灵魂,当然前提是这个系统用到了数据库.刚才说到了架构,其实我还真不知架构到底是个什么东东,也不知第一句话说的是否在理,因为我确实不懂开发,更没了解过某个系统的架构.嘿嘿. 先来个mysql数据库表的截图,见1.4 这个截图中的表就是nagiosql所用到的表,在二次开发过程中请尽可能的使用系统默认的表,因为这样可以最少的减小系统的出错机率,但是如果在表中加字段时请慎重.因为一个主要原因就是 :nagi…
各种类型消息的封装 第一步:找到com.wtz.message.response包,新建类Image.java package com.wtz.message.response; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午8:38:37 * <p>version:1.0</p> * <p>description:图片的实体类</p> */ public class Image { /…
一.odoo中 页面上字段变化引起其他字段范围变化-onchange @api.onchange('company_id') def onchange_parent_id(self): return { 'domain': {'parent_id': [('company_id', '=', self.company_id.id)]}, } 二.odoo中 mail.message 的使用 使用mail.message,分三步走:  #在表的下面 继承这段话 _inherit = ['mail.…
Sketchup提供了两套API: C API,主要用于读写SU文件.我们的SU文件导入功能就是用这套API做的 Ruby API,用于开发SU插件 这次我们主要关注Ruby API,因为它是实现更丰富的SU扩展功能的主要方式 不得不承认Sketchup的Ruby API开发文档相对于React,或是Inventor/Revit这些都太不友好了.不过从这篇文档开始我们还是能按图索骥,找到门径. 如果不想读这篇文档,那么也可以遵循如下步骤: 去Github把官方tutorial教程项目clone下…
本节介绍信息系统开发中最常见的问题,引用关系,一对多关系,多对多关系. 以客户信息为例,客户通常需要客户分类,如VIP客户,普通客户,潜在客户.当然,我们可以定义枚举类型进行定义出这个类型,并在客户类上面定义对应的属性. 但枚举类型增加值需要修改程序,而客户分类很可能是会增加或是修改的,此时,我们就需要用到了引用类型.引用类型对应到数据库上,也就是外键关系. 既然是需要可以维护的客户分类,那么我们应该建立一张表出来,在XPO中就要新建出一个业务类,代码如下: [DefaultClassOptio…
1.model属性 每个对象(即class)一般由字段(变量)和函数组成,每个对象对应着数据库中的一张表,驼峰命名方式 models.Model 基础模块,会根据字段和模型名在后台数据库生成对应得表文件 models.TransientModel 临时模块,用于弹出信息的临时数据,会在后台生成对应得表,但是表的内容根据配置,一定时间后被清除,不会长时间保存,如向导时用 models.AbstractModel 抽象模块,类似于抽象类,常用于继承 2.model字段类型 odoo对象支持的字段类型…
在教程(五)的基础上加了Faded,Grid_Fill,Grid_Point,Raster,Vector,Barb,Streamline 1.同样注意修改LegendStyleEnum改为LegendStyles 2.DrawMeteoData.CreateShadedLayer()的参数是4个,Grid_Fill,Grid_Point的参数类似也是4个,但Raster的参数是3个,且参数顺序和前三个函数的略不同. 3.在画出Shaded图之后,发现陆地上区域被country1图层覆盖,这时需要…
1.ActiveMapFrame部分没有大问题,按教程来就行. private void SetMapView()和private void ActiveMapFrameChanged(object sender, EventArgs e)函数与public Form1()并列 语句: layersLegend1.ActiveMapFrameChanged += new EventHandler(ActiveMapFrameChanged); 在public Form1()中. 2.画Grads…
介绍 二开时模型创建完毕并配好视图后对于基本的CRUD操作不需要再在代码中实现,框架会自动提供这些功能,但如果我们的开发需求不仅仅是对当前对象的CRUD时,就需要在框架原来方法的基础上扩展出一些自己所需要的操作. odoo8以前与odoo8以后使用两种不同的model接口形式(odoo8两者都可使用),odoo8以前old api中,记录ids和上下文环境均通过参数传入def old_api (self, cr, uid, ids, context),比较凌乱,不建议使用.以下内容均为new a…
(ps:前两章我们已经把管理员登录和查看用户的功能实现了,那么今天我们将要实现:添加用户,删除用户,和修改用户功能) 由于Cusomer的POJO类型已经写好了,所以这次我们之前从CustomerController下手!!! 添加用户功能 ①在CutsomerController类中编写customerCreate方法,并在方法名上头写上请求映射路径(@RequestMapping("/customer/create.action")) ,和@ResponseBody. ②在cust…
在ArcGIS中,锁是一个经常遇到的东西,在打开一个该当时要锁定,编辑一个文档是再次锁定.要深入理解这个,要学习一下进程与线程.在CAD.NET中,也有Lock与Unlock. 获取一个文档,在进行处理前应当LockDocument,像官网帮助所说,因为修改或访问CAD的请求随时随地都在发生,为避免与其他请求冲突,我们有责任在修改前锁定文档.但是,某些情形下的锁定文档会导致在更新数据库过程中锁定犯规. 下列四种情况我们需要锁定: (1)从无模式对话框与CAD交互时: (2)访问已调入的文档不是当…
菜单的介绍 这篇我们介绍将菜单组建添加到上节中的布局中: 我们不对菜单做任何处理  只是在这里填充作为界面的一部分. 这里我们介绍的是dhtmlxMenu 组件. 这个组件的数据我们可以从XML或者JSON中加载 它有两种呈现类型: 1.源图片  它放在imgs文件夹中 2.自定义图片  任何你想使用的位置 添加菜单到布局中: 1.用dhtmlx.image_path 属性来设置源图片的全局路径 dhtmlx.image_path = "codebase/imgs/";dhtmlxEv…
1.复制文件cloud_1009271330.000,I-01.pal 2.改: GridData cloud = aDataInfo.GetGridData(""); 为: GridData cloud = aDataInfo.GetGridData("var"); 不然运行时会错误,虽然编辑脚本时没有提示错误. 3.在教程(九)中MaskOut没有成功实现,但是做完教程(十)后,MaskOut居然可以了.…