mirror of https://github.com/jumpserver/jumpserver
asset:add assets_bulk
parent
80baecc8be
commit
cdb1602e06
|
@ -0,0 +1,23 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from rest_framework import viewsets, serializers,generics
|
||||
from .models import AssetGroup, Asset, IDC, AssetExtend
|
||||
from common.mixins import BulkDeleteApiMixin
|
||||
from rest_framework_bulk import BulkListSerializer, BulkSerializerMixin
|
||||
|
||||
class AssetBulkUpdateSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
||||
# group_display = serializers.SerializerMethodField()
|
||||
# active_display = serializers.SerializerMethodField()
|
||||
#groups = serializers.PrimaryKeyRelatedField(many=True, queryset=AssetGroup.objects.all())
|
||||
|
||||
class Meta(object):
|
||||
model = Asset
|
||||
list_serializer_class = BulkListSerializer
|
||||
fields = ['id', 'is_active', 'hostname']
|
||||
|
||||
# def get_group_display(self, obj):
|
||||
# return " ".join([group.name for group in obj.groups.all()])
|
||||
#
|
||||
# def get_active_display(self, obj):
|
||||
# # TODO: user ative state
|
||||
# return not (obj.is_expired and obj.is_active)
|
|
@ -0,0 +1,82 @@
|
|||
{% extends '_modal.html' %}
|
||||
{% load i18n %}
|
||||
{% block modal_id %}asset_bulk_update_modal{% endblock %}
|
||||
{% block modal_class %}modal-lg{% endblock %}
|
||||
{% block modal_title%}{% trans "Update Asset" %}{% endblock %}
|
||||
{% block modal_body %}
|
||||
{% load bootstrap %}
|
||||
<p class="text-success text-center">{% trans "Hint: only change the field you want to update." %}</p>
|
||||
|
||||
<div class="ydxbd" id="ydxbd" style="display: block;">
|
||||
<div>
|
||||
<p id="tags_p">
|
||||
<a href="/assets/asset-by-tag/5">
|
||||
<span class="label label-default">三年质保(0)</span>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<form method="post" class="form-horizontal" action="" id="fm_asset_bulk_update">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2 col-lg-2 " for="id_role">{% trans "Role" %}</label>
|
||||
<div class=" col-sm-9 col-lg-9 ">
|
||||
<select class=" select2 form-control" id="id_role" name="role">
|
||||
<option value="">---------</option>
|
||||
<option value="Admin">{% trans "Admin" %}</option>
|
||||
<option value="User">{% trans "User" %}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
<label for="groups" class="col-sm-2 control-label">{% trans 'Groups' %}</label>
|
||||
<div class="col-sm-9" id="select2-container">
|
||||
<select name="groups" id="select2_groups" data-placeholder="{% trans 'Select Group' %}" class="select2 form-control m-b" multiple>
|
||||
{% for group in groups %}
|
||||
<option value="{{ group.id }}">{{ group.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-9 col-lg-9 col-sm-offset-2">
|
||||
<div class="checkbox checkbox-success">
|
||||
<input type="checkbox" name="enable_otp" checked id="id_enable_otp"><label for="id_enable_otp">{% trans 'Enable-OTP' %}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
|
||||
|
||||
<label class="control-label col-sm-2 col-lg-2 " for="id_tags">标签集合</label>
|
||||
|
||||
|
||||
<div class=" col-sm-9 col-lg-9 ">
|
||||
<select multiple="multiple" class="select2 form-control" data-placeholder="Select asset tags" id="tags" name="tags">
|
||||
<option value="1">物理机</option>
|
||||
<option value="2">虚拟机</option>
|
||||
<option value="3">数据库备份</option>
|
||||
<option value="4">亦庄机房</option>
|
||||
<option value="5">三年质保</option>
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="help-block">
|
||||
最多5个标签,单个标签最长8个汉字,按回车确认
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
{% block modal_confirm_id %}btn_asset_bulk_update{% endblock %}
|
|
@ -0,0 +1,65 @@
|
|||
{% extends '_base_create_update.html' %}
|
||||
{% load static %}
|
||||
{% load bootstrap %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block form %}
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
<div class="ydxbd" id="ydxbd" style="display: block;">
|
||||
<div>
|
||||
<p id="tags_p">
|
||||
<a>
|
||||
</a>
|
||||
{% for f in form %}
|
||||
<span class="label label-default">{{ f.hostname }}</span>
|
||||
|
||||
{% endfor %}
|
||||
<a href="{% url 'assets:asset-list' %}" ><span class="label label-default">移除选择</span></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hr-line-dashed"></div>
|
||||
<form action="" method="post" class="form-horizontal">
|
||||
{% csrf_token %}
|
||||
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
{{ form.hostname|bootstrap_horizontal }}
|
||||
{{ form.ip|bootstrap_horizontal }}
|
||||
{{ form.port|bootstrap_horizontal }}
|
||||
{{ form.type|bootstrap_horizontal }}
|
||||
|
||||
{{ form.idc|bootstrap_horizontal }}
|
||||
{{ form.groups|bootstrap_horizontal }}
|
||||
|
||||
{{ form.admin_user|bootstrap_horizontal }}
|
||||
{{ form.system_users|bootstrap_horizontal }}
|
||||
|
||||
{{ form.tags|bootstrap_horizontal }}
|
||||
{{ form.comment|bootstrap_horizontal }}
|
||||
|
||||
<div class="hr-line-dashed"></div>
|
||||
<div class="form-group">
|
||||
<div class="col-sm-4 col-sm-offset-2">
|
||||
<button class="btn btn-white" type="reset">{% trans 'Reset' %}</button>
|
||||
<button id="submit_button" class="btn btn-primary" type="submit">{% trans 'Submit' %}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block custom_foot_js %}
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$('.select2').select2();
|
||||
$("#tags").select2({
|
||||
tags: true,
|
||||
maximumSelectionLength: 8, //最多能够选择的个数
|
||||
closeOnSelect: false
|
||||
});
|
||||
})
|
||||
|
||||
</script>
|
||||
{% endblock %}
|
Loading…
Reference in New Issue