mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.6 KiB
90 lines
2.6 KiB
# -*- coding: utf-8 -*-
|
|
#
|
|
|
|
from django.views.generic import TemplateView, CreateView, \
|
|
UpdateView, DeleteView, DetailView
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from django.urls import reverse_lazy
|
|
|
|
from common.permissions import PermissionsMixin, IsOrgAdmin
|
|
from common.const import create_success_msg, update_success_msg
|
|
from ..models import Label
|
|
from ..forms import LabelForm
|
|
|
|
|
|
__all__ = (
|
|
"LabelListView", "LabelCreateView", "LabelUpdateView",
|
|
"LabelDetailView", "LabelDeleteView",
|
|
)
|
|
|
|
|
|
class LabelListView(PermissionsMixin, TemplateView):
|
|
template_name = 'assets/label_list.html'
|
|
permission_classes = [IsOrgAdmin]
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = {
|
|
'app': _('Assets'),
|
|
'action': _('Label list'),
|
|
}
|
|
kwargs.update(context)
|
|
return super().get_context_data(**kwargs)
|
|
|
|
|
|
class LabelCreateView(PermissionsMixin, CreateView):
|
|
model = Label
|
|
template_name = 'assets/label_create_update.html'
|
|
form_class = LabelForm
|
|
success_url = reverse_lazy('assets:label-list')
|
|
success_message = create_success_msg
|
|
disable_name = ['draw', 'search', 'limit', 'offset', '_']
|
|
permission_classes = [IsOrgAdmin]
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = {
|
|
'app': _('Assets'),
|
|
'action': _('Create label'),
|
|
'type': 'create'
|
|
}
|
|
kwargs.update(context)
|
|
return super().get_context_data(**kwargs)
|
|
|
|
def form_valid(self, form):
|
|
name = form.cleaned_data.get('name')
|
|
if name in self.disable_name:
|
|
msg = _(
|
|
'Tips: Avoid using label names reserved internally: {}'
|
|
).format(', '.join(self.disable_name))
|
|
form.add_error("name", msg)
|
|
return self.form_invalid(form)
|
|
return super().form_valid(form)
|
|
|
|
|
|
class LabelUpdateView(PermissionsMixin, UpdateView):
|
|
model = Label
|
|
template_name = 'assets/label_create_update.html'
|
|
form_class = LabelForm
|
|
success_url = reverse_lazy('assets:label-list')
|
|
success_message = update_success_msg
|
|
permission_classes = [IsOrgAdmin]
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = {
|
|
'app': _('Assets'),
|
|
'action': _('Update label'),
|
|
'type': 'update'
|
|
}
|
|
kwargs.update(context)
|
|
return super().get_context_data(**kwargs)
|
|
|
|
|
|
class LabelDetailView(PermissionsMixin, DetailView):
|
|
pass
|
|
|
|
|
|
class LabelDeleteView(PermissionsMixin, DeleteView):
|
|
model = Label
|
|
template_name = 'delete_confirm.html'
|
|
success_url = reverse_lazy('assets:label-list')
|
|
permission_classes = [IsOrgAdmin]
|