odoo中常用功能代码小片段
一、去除字符串的中文、英文
def remove_letters_and_chinese(self,text):
"""字符串去除字母与中文"""
import re
pattern = r'[\u4e00-\u9fa5a-zA-Z]'
result = re.sub(pattern, '', text)
return result
二、根据时分来判断是当天还是第二天
def set_format_datetime(self,type, date1, date2):
"""
str_date1='2023-06-27'
str_date2='23:30'
"""
from datetime import datetime, timedelta
str_date1 = self.remove_letters_and_chinese(date1)
str_date2 = self.remove_letters_and_chinese(date2)
if type == 'next':
dt = datetime.strptime(f"{str_date1} {str_date2}", "%Y-%m-%d %H:%M")
else:
ql_house = int(str_date2.split(':')[0])
if 13 < ql_house < 24:
date_obj = datetime.strptime(str_date1, '%Y-%m-%d')
next_day = date_obj - timedelta(days=1)
dt = datetime.strptime(f"{next_day.strftime('%Y-%m-%d')} {str_date2}", "%Y-%m-%d %H:%M")
else:
dt = datetime.strptime(f"{str_date1} {str_date2}", "%Y-%m-%d %H:%M")
print('=====dt====----------9999---------------===', dt)
return dt.strftime("%Y-%m-%d %H:%M:%S")
三、获取两个时分的时间差
def get_on_bed_time(self, start_time, end_time):
from datetime import datetime, timedelta
# 将时间字符串转换为datetime对象
start_time = self.remove_letters_and_chinese(start_time)
end_time = self.remove_letters_and_chinese(end_time)
dt1 = datetime.strptime(start_time, '%H:%M')
dt2 = datetime.strptime(end_time, '%H:%M')
# 如果dt2比dt1大,说明时间跨越了一天,需要将dt2加上一天
if dt2 < dt1:
dt2 += timedelta(days=1)
# 计算时间差
delta = dt2 - dt1
# 将时间差转换为小时数
hours = delta.seconds // 3600
# # 将时间差转换为分钟数
minutes = delta.seconds // 60
print(f"时间差为{hours}小时或{minutes}分钟")
return delta.seconds
四、日期的加减加一天减一天
def set_report_date(self, date1):
"""获取日期"""
from datetime import datetime, timedelta
date_obj = datetime.strptime(date1, '%Y-%m-%d')
next_day = date_obj - timedelta(days=1)
return next_day.strftime("%Y-%m-%d")
五、获取区间中的日期
def get_dates_between(self, start_date, end_date):
"""获取区间中的日期"""
from datetime import datetime, timedelta
dates = []
current_date = datetime.strptime(str(start_date), "%Y-%m-%d")
end_date = datetime.strptime(str(end_date), "%Y-%m-%d")
while current_date <= end_date:
dates.append(current_date.strftime("%Y-%m-%d"))
current_date += timedelta(days=1)
return dates
六、write与create常见的操作
class Job(models.Model):
_inherit = 'hr.job' group_id = fields.Many2one('res.groups', string=u'岗位权限', domain=[('is_job_group', '=', True)])
job_user_ids = fields.Many2many('res.users', 'zimo_m2m_job_user', string=u'岗位人员') @api.model
def _on_create_job_user_changed(self, job):
if job.group_id and job.job_user_ids:
job.group_id.write({'users': [(4, job_user.id) for job_user in job.job_user_ids]}) @api.model
def _on_write_job_user_changed(self, job, add_user_list, remove_user_list):
if job.group_id:
# 获取当前岗位下已有的用户列表
# 根据新增的岗位人员将人员添加到权限组中
added_users = add_user_list
if added_users:
job.group_id.write({'users': [(4, user.id) for user in added_users]})
# 根据删除的岗位人员将人员从权限组中删除
removed_users = remove_user_list
if removed_users:
job.group_id.write({'users': [(3, user.id) for user in removed_users]}) @api.model_create_multi
def create(self, vals_list):
jobs = super(Job, self).create(vals_list)
for job in jobs:
group_vals = {
'name': job.name,
'category_id': self.env.ref('zimo_increment_base.module_zimo_job_title').id,
'implied_ids': [(6, 0, [self.env.ref('base.group_user').id])],
'is_job_group': True,
'users': [(4, user.id) for user in job.job_user_ids if job.job_user_ids],
}
job.group_id = self.env['res.groups'].create(group_vals)
self._on_create_job_user_changed(job)
return jobs def write(self, vals):
old_job_user_ids = self.job_user_ids
res = super(Job, self).write(vals)
new_job_user_ids = self.job_user_ids
add_user_list = [i for i in new_job_user_ids if i not in old_job_user_ids]
remove_user_list = [i for i in old_job_user_ids if i not in new_job_user_ids]
# 分别做操作
if 'group_id' in vals or 'job_user_ids' in vals:
for job in self:
self._on_write_job_user_changed(job, add_user_list, remove_user_list)
return res
odoo中常用功能代码小片段的更多相关文章
- IOS开发-OC学习-常用功能代码片段整理
IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是 ...
- NC65在日常开发中常用的代码写法
标题 NC65开发相关代码 版本 1.0.1 作者 walton 说明 收集NC在日常开发中常用的代码写法,示例展示 1.查询 1.1 通过BaseDAO查询结果集并转换 //通过BaseDAO进行查 ...
- Apache运维中常用功能配置笔记梳理
Apache 是一款使用量排名第一的 web 服务器,LAMP 中的 A 指的就是它.由于其开源.稳定.安全等特性而被广泛使用.下边记录了使用 Apache 以来经常用到的功能,做此梳理,作为日常运维 ...
- 项目中常用功能,如:流媒体、健康数据(步数等)等-b
整理iOS开发中使用的各种流媒体和常用的高级功能.由于时间关系,目前只写了一部分功能,全部都采用的是系统方法,没用第三方,截图如下: screen1.png screen2.png 个人比较懒,不爱多 ...
- 【DRP】-Dao层常用功能代码:增删改查
本系列博客内容为:做DRP系统中Dao层常用功能. 该项目采用MVC架构 C(Controller)控制器,主要职责;1.取得表单参数:2.调用业务逻辑:3.转向页面 M(Model)模型,主要职责: ...
- VS中常用C#代码段快速输入总结
转自:https://blog.csdn.net/a980433875/article/details/12231673 Visual Studio 中有很多代码段都可以直接简写然后按TAB快速输入编 ...
- WebApp 开发中常用的代码片段
其实这里面的多数都是 iOS 上面的代码.其他平台的就没有去验证了. HTML, 从HTML文档的开始到结束排列: <meta name=”viewport” content=”width=de ...
- jquery代码小片段
1. 使用jQuery来切换样式表 //找出你希望切换的媒体类型(media-type),然后把href设置成新的样式表. $(‘link[media="screen"]‘).at ...
- SEO中常用HTML代码大全,及权重排序
做SEO必须要懂HTML,说的是一点都没错,不过其实是不需要全部都懂,最重点的你懂了会用,基本上都是事半功倍了.可以这么说一个不懂代码的优化人员不算是一个合格的好优化.下面就总结一下做优化,必须要懂得 ...
- Android开发中常用的一些小技巧(转载)
http://www.jb51.net/article/61135.htm Activity.startActivities() 常用于在应用程序中间启动其他的Activity. TextUtils. ...
随机推荐
- dx12学习之旅-
记录一下,第一篇博客2024年7月26日下午. 计划在毕业后从事游戏开发的工作,现在在学习龙书dx12,平时会写一些对龙书内容上的一些理解.在读完全书之后,会考虑进行一次龙书相关的总结,不过这应该要很 ...
- Ai 文本生成式大模型 基础知识
提示工程-RAG-微调 工程当中也是这个次序 提示词工程 RAG 微调 先问好问题 再补充知识 最后微调模型 RAG相关技术细节 选择合适的 Chunk 大小对 RAG 流程至关重要. Chunk 过 ...
- 非容器环境中使用Selenium,提升Chrome与ChromeDiver兼容性
背景 在 Windows 环境下使用 Selenium 时,Chrome 浏览器版本与 ChromeDriver 版本的兼容性问题是一个常见的困扰. 由于 Chrome 频繁更新,而 ChromeDr ...
- 【Bug记录】defineEmits 在 TS 项目报错
前言 单文件组件 <script setup> 是 Vue3.2 版本后非常流行的写法. 但是在开发过程中,按照官网使用 defineEmits ,结果项目报错,无法运行. 错误截图 Un ...
- 程序员必看 Linux 常用命令(重要)
文件操作命令 find find 用于在指定目录下查找文件或子目录,如果不指定查找目录,则在当前目录下查找 命令格式:find path -option [-print] [ -exec/-ok co ...
- 妙用PHP函数处理数组
PHP的数组是一种很强大的数据类型,与此同时PHP内置了一系列与数组相关的函数可以轻松地实现日常开发功能. 1. 取数组指定键名列 对于某些关联数组,有时候我们只想取指定键名的那部分,比如数组为 [' ...
- IvorySQL 4.0 之 Invisible Column 功能解析
前言 随着数据库应用场景的多样化,用户对数据管理的灵活性和隐私性提出了更高要求.IvorySQL 作为一款基于 PostgreSQL 并兼容 Oracle 的开源数据库,始终致力于在功能上保持领先和创 ...
- pandas(进阶操作)-- 政治献金项目数据分析
博客地址:https://www.cnblogs.com/zylyehuo/ 开发环境 anaconda 集成环境:集成好了数据分析和机器学习中所需要的全部环境 安装目录不可以有中文和特殊符号 jup ...
- oracle怎么查询重复的数据
在oracle中,可以利用count()函数配合select查询语句来查询重复的数据,语法为"select userCode from user group by userCode havi ...
- 性能优化之使用HTTP2.0
HTTP2.0 的优势 配置 测试 怎么查看当前网站http版本 chrome HTTP协议版本检测 Chrome 控制台 window.chrome.loadTimes() { commitLoad ...