mirror of https://github.com/jumpserver/jumpserver
[Feature] 添加资产详情标签
parent
cb902362b5
commit
b2d6645f46
|
@ -418,6 +418,12 @@ class LabelForm(forms.ModelForm):
|
||||||
model = Label
|
model = Label
|
||||||
fields = ['name', 'value', 'assets']
|
fields = ['name', 'value', 'assets']
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
if kwargs.get('instance', None):
|
||||||
|
initial = kwargs.get('initial', {})
|
||||||
|
initial['assets'] = kwargs['instance'].assets.all()
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
label = super().save(commit=commit)
|
label = super().save(commit=commit)
|
||||||
assets = self.cleaned_data['assets']
|
assets = self.cleaned_data['assets']
|
||||||
|
|
|
@ -244,6 +244,33 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="panel panel-warning">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<i class="fa fa-info-circle"></i> {% trans 'Labels' %}
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
{# <table class="table">#}
|
||||||
|
{# <tbody>#}
|
||||||
|
{# {% for label in asset.labels.all %}#}
|
||||||
|
{# <tr {% if forloop.counter == 1 %} class="no-borders-tr" {% endif %}>#}
|
||||||
|
{# <td>{{ label.name }}</td>#}
|
||||||
|
{# <td>#}
|
||||||
|
{# <span class="pull-right">#}
|
||||||
|
{# {{ label.value }}#}
|
||||||
|
{# </span>#}
|
||||||
|
{# </td>#}
|
||||||
|
{# </tr>#}
|
||||||
|
{# {% endfor %}#}
|
||||||
|
{# </tbody>#}
|
||||||
|
{# </table>#}
|
||||||
|
<ul class="tag-list" style="padding: 0">
|
||||||
|
{% for label in asset.labels.all %}
|
||||||
|
<li ><a href=""><i class="fa fa-tag"></i> {{ label.name }}:{{ label.value }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -35,7 +35,7 @@ function initTable() {
|
||||||
}},
|
}},
|
||||||
|
|
||||||
{targets: 4, createdCell: function (td, cellData, rowData) {
|
{targets: 4, createdCell: function (td, cellData, rowData) {
|
||||||
var update_btn = '<a href="{% url "assets:cluster-update" pk=DEFAULT_PK %}" class="btn btn-xs btn-info">{% trans "Update" %}</a>'.replace('{{ DEFAULT_PK }}', cellData);
|
var update_btn = '<a href="{% url "assets:label-update" pk=DEFAULT_PK %}" class="btn btn-xs btn-info">{% trans "Update" %}</a>'.replace('{{ DEFAULT_PK }}', cellData);
|
||||||
var del_btn = '<a class="btn btn-xs btn-danger m-l-xs btn_cluster_delete" data-uid="{{ DEFAULT_PK }}">{% trans "Delete" %}</a>'.replace('{{ DEFAULT_PK }}', cellData);
|
var del_btn = '<a class="btn btn-xs btn-danger m-l-xs btn_cluster_delete" data-uid="{{ DEFAULT_PK }}">{% trans "Delete" %}</a>'.replace('{{ DEFAULT_PK }}', cellData);
|
||||||
$(td).html(update_btn + del_btn)
|
$(td).html(update_btn + del_btn)
|
||||||
}}],
|
}}],
|
||||||
|
|
|
@ -55,5 +55,6 @@ urlpatterns = [
|
||||||
|
|
||||||
url(r'^label/$', views.LabelListView.as_view(), name='label-list'),
|
url(r'^label/$', views.LabelListView.as_view(), name='label-list'),
|
||||||
url(r'^label/create/$', views.LabelCreateView.as_view(), name='label-create'),
|
url(r'^label/create/$', views.LabelCreateView.as_view(), name='label-create'),
|
||||||
|
url(r'^label/(?P<pk>[0-9a-zA-Z\-]{36})/update/$', views.LabelUpdateView.as_view(), name='label-update'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,8 @@ from django.utils.translation import ugettext_lazy as _
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
|
|
||||||
from common.mixins import AdminUserRequiredMixin
|
from common.mixins import AdminUserRequiredMixin
|
||||||
from common.const import create_success_msg
|
from common.const import create_success_msg, update_success_msg
|
||||||
|
from ..models import Label
|
||||||
from ..forms import LabelForm
|
from ..forms import LabelForm
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,6 +31,7 @@ class LabelListView(AdminUserRequiredMixin, TemplateView):
|
||||||
|
|
||||||
|
|
||||||
class LabelCreateView(AdminUserRequiredMixin, CreateView):
|
class LabelCreateView(AdminUserRequiredMixin, CreateView):
|
||||||
|
model = Label
|
||||||
template_name = 'assets/label_create_update.html'
|
template_name = 'assets/label_create_update.html'
|
||||||
form_class = LabelForm
|
form_class = LabelForm
|
||||||
success_url = reverse_lazy('assets:label-list')
|
success_url = reverse_lazy('assets:label-list')
|
||||||
|
@ -45,7 +47,19 @@ class LabelCreateView(AdminUserRequiredMixin, CreateView):
|
||||||
|
|
||||||
|
|
||||||
class LabelUpdateView(AdminUserRequiredMixin, UpdateView):
|
class LabelUpdateView(AdminUserRequiredMixin, UpdateView):
|
||||||
pass
|
model = Label
|
||||||
|
template_name = 'assets/label_create_update.html'
|
||||||
|
form_class = LabelForm
|
||||||
|
success_url = reverse_lazy('assets:label-list')
|
||||||
|
success_message = update_success_msg
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = {
|
||||||
|
'app': _('Assets'),
|
||||||
|
'action': _('Update label'),
|
||||||
|
}
|
||||||
|
kwargs.update(context)
|
||||||
|
return super().get_context_data(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
class LabelDetailView(AdminUserRequiredMixin, DetailView):
|
class LabelDetailView(AdminUserRequiredMixin, DetailView):
|
||||||
|
|
Loading…
Reference in New Issue