PearAdmin二次开发之防火墙封禁工具——资产管理篇

目录

一、菜单及按钮设计

二、资产表设计

2.1 资产数据表创建

2.2 数据序列化/反序列化的规则定义

2.3 生成数据表

三、前端页面设计

3.1 主页面代码

3.2 编辑页面代码

3.3 添加资产页面代码

四、后端代码

4.1 添加资产代码

4.2 编辑资产代码

4.2 删除资产代码

启用/禁用资产

五、功能测试

5.1 添加资产

5.2 编辑资产

5.3 启用资产

5.4 禁用资产

5.5 删除资产


一、菜单及按钮设计

登陆PearAdmin,登陆界面默认填写了账户admin密码123456,只需要输入验证码即可登录。

登陆PearAdmin后再【系统管理】-【权限管理】页面增加想要的菜单和按钮。建立资产管理目录如下:

在次产管理目录下增加【添加】、【编辑】、【删除】按钮,并设置相应的权限标识,状态选择按钮。

刷新页面后可以看到左侧目录树里【资产管理】目录。

二、资产表设计

2.1 资产数据表创建

在【PearAdmin】-【applications】-【modules】目录下创建admin_resourcees.py文件

数据模型代码

import datetime
from applications.extensions import db

class Resources(db.Model):
    __tablename__ = 'admin_resources'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='设备ID')
    hostname = db.Column(db.String(20), nullable=False, comment='设备名称')
    mgtip = db.Column(db.String(20), nullable=False, comment='管理IP地址')
    location = db.Column(db.String(20), nullable=False, comment='部署区域')
    loginmeth = db.Column(db.String(20), nullable=False, comment='登录方式')
    loginname = db.Column(db.String(20), nullable=False, comment='登录账户')
    loginpass = db.Column(db.String(20), nullable=False, comment='登录密码')
    apikey = db.Column(db.String(20), nullable=False, comment='api密码')
    vsys = db.Column(db.String(20),  comment='虚拟系统')
    vendor = db.Column(db.String(20), nullable=False, comment='厂家')
    enable = db.Column(db.Integer, default=0, comment='启用')
    remark = db.Column(db.String(255), comment='备注')
    create_at = db.Column(db.DateTime, default=datetime.datetime.now, comment='创建时间')

加载资产表数据模型

2.2 数据序列化/反序列化的规则定义

##admin_resouces.py

from flask_marshmallow.sqla import SQLAlchemyAutoSchema
from applications.models import Resources


class ResourcesOutSchema(SQLAlchemyAutoSchema):
    class Meta:
        model = Resources  # table = models.Album.__table__
        # include_relationships = True  # 输出模型对象时同时对外键,是否也一并进行处理
        include_fk = True  # 序列化阶段是否也一并返回主键
        # fields= ["id","name"] # 启动的字段列表
        # exclude = ["id","name"] # 排除字段列表

2.3 生成数据表
 

  • flask db migrate:依据模型定义和当前数据库架构之间的差异,生成迁移脚本。此脚本存于 migrations/versions 目录。
  • flask db upgrade:执行迁移脚本,把这些变更应用到数据库中。

三、前端页面设计

Pycharm打开项目,在【PearAdmin】项目的【templates】的【system】下建立【Resource】目录,并新建三个html文档。具体如下图:

3.1 主页面代码

<!DOCTYPE html>
<html>
<head>
    <title>资产管理</title>
    {% include 'system/common/header.html' %}
</head>
<body class="pear-container">
{# 资产查询 #}
<div class="layui-card">
    <div class="layui-card-body">
        <form class="layui-form" action="" lay-filter="resources-query-form">
            <div class="layui-form-item">
                <label class="layui-form-label">主机名</label>
                <div class="layui-input-inline">
                    <input type="text" name="hostname" placeholder="" class="layui-input">
                </div>

                <button class="layui-btn layui-btn-md" lay-submit lay-filter="resources-query">
                    <i class="layui-icon layui-icon-search"></i>
                    查询
                </button>
                <button type="reset" class="layui-btn layui-btn-primary layui-btn-md">
                    <i class="layui-icon layui-icon-refresh"></i>
                    重置
                </button>
            </div>
        </form>
    </div>
</div>
{# 资产表格 #}
<div class="resources-main resources-collasped">
    <div class="layui-card">
        <div class="layui-card-body">
            <table id="resources-table" lay-filter="resources-table"></table>
        </div>
    </div>
</div>
</body>

{% include 'system/common/footer.html' %}

{# 表格操作 #}
<script type="text/html" id="resources-toolbar">
    {% if authorize("system:resources:add") %}
        <button class="layui-btn layui-btn-md" lay-event="add">
            <i class="pear-icon pear-icon-add"></i>
            新增
        </button>
    {% endif %}

</script>

{# 设备修改操作 #}
<script type="text/html" id="resources-bar">
    {% if authorize("system:resources:edit") %}
         <button class="layui-btn layui-btn-xs" lay-event="edit"><i class="pear-icon pear-icon-edit"> 编辑</i>
        </button>
    {% endif %}
    {% if authorize("system:resources:remove") %}
        <button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="remove"><i
                class="pear-icon pear-icon-ashbin"> 删除</i>
        </button>
    {% endif %}
</script>


{% raw %}
<script type="text/html" id="resources-enable">
    <input type="checkbox" name="enable" value="{
  
  { d.id }}" lay-skin="switch" lay-text="启用|禁用"
           lay-filter="resources-enable"
            {
  
  {# if(d.enable==1){ }} checked {
  
  {# } }} />
</script>
<script type="text/html" id="resources-createTime">
    {
  
  {layui.util.toDateString(d.create_at,  "yyyy-MM-dd HH:mm:ss")}}
</script>

<script type="text/html" id="resources-updateTime">
    {
  
  {layui.util.toDateString(d.update_at,  "yyyy-MM-dd HH:mm:ss")}}
</script>
{% endraw %}



<script>
    layui.use(['table',  'form', 'jquery', 'popup'], function () {
        let table = layui.table
        let form = layui.form
        let $ = layui.jquery
        let popup = layui.popup
        let MODULE_PATH = "{
  
  { url_for('system.resources.main') }}"
        // 表格数据
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

候鸟-南飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值