mirror of https://github.com/openspug/spug
add group perm
parent
b515d27c47
commit
f48594ac6f
|
@ -98,12 +98,6 @@ class Role(models.Model, ModelMixin):
|
||||||
self.deploy_perms = json.dumps(perms)
|
self.deploy_perms = json.dumps(perms)
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
def add_host_perm(self, value):
|
|
||||||
perms = json.loads(self.host_perms) if self.host_perms else []
|
|
||||||
perms.append(value)
|
|
||||||
self.host_perms = json.dumps(perms)
|
|
||||||
self.save()
|
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<Role name=%r>' % self.name
|
return '<Role name=%r>' % self.name
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,14 @@ def merge_children(data, prefix, childes):
|
||||||
data[item['key']] = name
|
data[item['key']] = name
|
||||||
|
|
||||||
|
|
||||||
|
def filter_by_perm(data, result, ids):
|
||||||
|
for item in data:
|
||||||
|
if item['key'] in ids:
|
||||||
|
result.append(item)
|
||||||
|
elif item['children']:
|
||||||
|
filter_by_perm(item['children'], result, ids)
|
||||||
|
|
||||||
|
|
||||||
class GroupView(View):
|
class GroupView(View):
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
with_hosts = request.GET.get('with_hosts')
|
with_hosts = request.GET.get('with_hosts')
|
||||||
|
@ -38,10 +46,13 @@ class GroupView(View):
|
||||||
if not data:
|
if not data:
|
||||||
grp = Group.objects.create(name='Default', sort_id=1)
|
grp = Group.objects.create(name='Default', sort_id=1)
|
||||||
data[grp.id] = grp.to_view()
|
data[grp.id] = grp.to_view()
|
||||||
|
if request.user.is_supper:
|
||||||
data = list(data.values())
|
tree_data = list(data.values())
|
||||||
merge_children(data2, '', data)
|
else:
|
||||||
return json_response({'treeData': data, 'groups': data2})
|
tree_data, ids = [], request.user.host_perms
|
||||||
|
filter_by_perm(data.values(), tree_data, ids)
|
||||||
|
merge_children(data2, '', tree_data)
|
||||||
|
return json_response({'treeData': tree_data, 'groups': data2})
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
form, error = JsonParser(
|
form, error = JsonParser(
|
||||||
|
|
|
@ -18,11 +18,6 @@ from openpyxl import load_workbook
|
||||||
|
|
||||||
class HostView(View):
|
class HostView(View):
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
host_id = request.GET.get('id')
|
|
||||||
if host_id:
|
|
||||||
if not request.user.has_host_perm(host_id):
|
|
||||||
return json_response(error='无权访问该主机,请联系管理员')
|
|
||||||
return json_response(Host.objects.get(pk=host_id))
|
|
||||||
hosts = {x.id: x.to_view() for x in Host.objects.select_related('hostextend').all()}
|
hosts = {x.id: x.to_view() for x in Host.objects.select_related('hostextend').all()}
|
||||||
for rel in Group.hosts.through.objects.all():
|
for rel in Group.hosts.through.objects.all():
|
||||||
hosts[rel.host_id]['group_ids'].append(rel.group_id)
|
hosts[rel.host_id]['group_ids'].append(rel.group_id)
|
||||||
|
@ -130,8 +125,6 @@ def post_import(request):
|
||||||
pass
|
pass
|
||||||
host = Host.objects.create(created_by=request.user, **data)
|
host = Host.objects.create(created_by=request.user, **data)
|
||||||
host.groups.add(group_id)
|
host.groups.add(group_id)
|
||||||
if request.user.role:
|
|
||||||
request.user.role.add_host_perm(host.id)
|
|
||||||
summary['success'].append(i)
|
summary['success'].append(i)
|
||||||
return json_response(summary)
|
return json_response(summary)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue