作者:派森酱
来源:Python 技术
酱子们怎么看,文末留言,一起讨论
产登记,可能你想很简单,自己维护一份excel表不就行了吗?
但它和设备的采购、维护和管理息息相关。
反怼领导一句:这和我有什么关系?
好像是没什么关系,所以我坚持用excel登记了几千条IT资产信息,每次打开慢的一匹。不信的话,看看我的劳动成果:

看看我的资产登记表吧,可以下载 https://gitee.com/sswfit/asset/blob/master/api/asset.xlsx
累计电脑设备超过1000条,类型8种

型号如戴尔台式主机OptiPlex的3020,7040,7060,9020系类,品牌包括戴尔、三星、苹果、宏基等等。
这些有逻辑关系的数据,通过excel简单去添加,显然还是没有逻辑,说好的excel高效办公呢?我仔细看了会表格,又发现很多重复的内容,比如明明是相同型号,配置一样的,登记了几遍:

这不是优秀的桌面维护人员该有的表格,咱不是文员,花9块9去学那种“七天学会excel”、“文员办公必学五大函数”的课程价值不大。简单一点,该删则删,该改则改,所以我整理了一遍表格,设计字段,用django去管理这些信息:
演示地址 http://ssw.fit:8081/asset-0-0/
完整代码在这里 https://gitee.com/sswfit/asset.git

不吹不黑,立马轻松了很多:
编辑模式批量修改

“+”“-”按钮动态增删搜索条件

添加3个按钮“添加资产”、“添加型号”、“添加领用人”
这样简单直接,刷刷刷几下,登记资产就很轻松了。
有哪些值得注意的地方呢?
每条资产一行数据。
比如我领用了2个显示器,那就是2条资产,2行数据,而不是在excel中合并内容。
去掉配置等多余的列
型号
经过整理,1068条减少到340条,瘦身成功:

整理后的文件可以下载 https://gitee.com/sswfit/asset/blob/master/api/info.xlsx
xlrd模块将数据存入数据库
xlrd的2.0.1版本,只支持.xls文件,读取.xlsx会报错。所以安装旧版xlrd:
1.2.0
将整理后的info.xlsx写入django数据库:
import
fromimport
fromimport
'd:/asset/api/info.xlsx'
'Sheet1'
forin
if0isand1is
# x为表里的“购置时间”
00
# y为表里的“领用时间”
10
#把表里的'2015年12月11日'格式转换为'2015-12-11'
0'%Y-%m-%d'
1'%Y-%m-%d'
#django的Employee表
2
2
4
4
4
else
'xx'
data_list结果如下:
'2019-08-05''2019-08-19''空闲''SZMN1908006''戴尔 E2417H'880.0''
输出的值就是表格里的最后一行

型号表、资产类型表、部门表、员工表、配置表、资产表ModelsTypeConfiguration
models.py
#型号表
classModels(models.Model)
32
'Type''id''type_name''类别'
'Configuration''配置'TrueTrue
#资产类型表,如手机、显示器等不同的资产类型
classType(models.Model)
32'类别'
#部门表
classDepartment(models.Model)
32
#员工表
classEmployee(models.Model)
32'员工姓名'
'Department''部门'
#资产的配置(内存、cpu等)
classConfiguration(models.Model)
32TrueTrue
32TrueTrue'内存'
32TrueTrue'硬盘'
32TrueTrue'显卡'
32TrueTrue'显示器''N'
32TrueTrue'备注'
def__str__(self)
return'CPU:%s 内存:%s 硬盘:%s 显卡:%s 显示器:%s 备注:%s'
#资产表
classAsset(models.Model)
1'N'
2'戴尔'
3'苹果'
1'空闲'
2'使用'
3'报废'
4'待确认'
'Models''型号'
'购买时间'
32'价格'TrueTrue
'Employee''领用人'
TrueTrue'领用时间'
32'资产编号'
3'供应商'
128TrueTrue'售后联系方式'
1'状态'
64TrueTrue'备注'''
def__str__(self)
return
Type

Configuration

Models

Asset


红框内的姓名按abcd顺序排序用到pypinyin模块,在另一篇“我用django偷偷绑定员工MAC信息”用它给员工分配过邮箱
# recipient领用人
'id''name'
lambda'name'
逻辑还是比较简单的,后端先把需要的信息准备好,前端在页面初始化的时候拿到这些数据就可以做各种文章了。
举个,怎么让搜索条件在下拉框中显示呢?

首先,定义一个url,它的作用就是把所有需要的数据提前准备好,一个json大字典
r'asset-json''asset-json'
对应的处理函数AssetJsonView:

然后配置前端,一打开页面就获取这个json大字典

可以直接访问 http://ssw.fit:8081/asset-json 看到这些数据:

357 itmes
当然,光提供数据还不够,AssetJsonView还处理批量修改,保存按钮就是提交给它的put()方法:

put方法:

http://ssw.fit:8081/asset-0-0/, 它的url表示:
r'^asset-(?P<mod__type_id>\d+)-(?P<status>\d+)/$'"asset"
作用主要是根据搜索条件过滤资产结果。
对应的处理函数:
defhandle_asset(request,*args,**kwargs)
'username'
#取出所有资产类型
#资产当前的状态,空闲还是在使用
#搜索条件放到一个字典里
'asset'
forin
if'0'
pass
else
#分页
'p'1
#根据搜索条件过滤资产结果
if'GET'
'q'
if
if
return'asset.html''username''assets''type_list'
'status_list''arg_dict'
'q'
else
'无此用户'
return'asset.html''username''assets''type_list'
'status_list''arg_dict'
clone
#启动方法
#安装xlrd
#访问
这个案例挺实用的,因为增删改查的场景很多。
可以个人用,也可以帮同事朋友设计一个。
跟在电脑上打开一个记事本一样,随手记录资产,随手修改。
而且,可以作为IT信息管理体系的一部分,
向领导报告,我为规范企业IT设备管理做出了实际行动。