Commit 8095a434 by Oláh István Gergely

dashboard: fix group permissions

parent 7304a967
...@@ -13,9 +13,11 @@ ...@@ -13,9 +13,11 @@
</div> </div>
{% endif %} {% endif %}
{% if perms.auth %}
<div class="col-lg-4 col-sm-6"> <div class="col-lg-4 col-sm-6">
{% include "dashboard/index-groups.html" %} {% include "dashboard/index-groups.html" %}
</div> </div>
{% endif %}
{% comment %} {% comment %}
<div class="col-lg-4 col-sm-6"> <div class="col-lg-4 col-sm-6">
......
...@@ -47,7 +47,7 @@ from vm.models import ( ...@@ -47,7 +47,7 @@ from vm.models import (
InterfaceTemplate, Lease, Node, NodeActivity, Trait, InterfaceTemplate, Lease, Node, NodeActivity, Trait,
) )
from firewall.models import Vlan, Host, Rule from firewall.models import Vlan, Host, Rule
from dashboard.models import Favourite, Profile from dashboard.models import Favourite, Profile, GroupProfile
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -124,11 +124,14 @@ class IndexView(LoginRequiredMixin, TemplateView): ...@@ -124,11 +124,14 @@ class IndexView(LoginRequiredMixin, TemplateView):
}) })
# groups # groups
groups = Group.objects.all() if user.has_module_perms('auth'):
context.update({ pks = [i[0] for i in GroupProfile.get_objects_with_level(
'groups': groups[:5], 'operator', user).values_list('pk')]
'more_groups': groups.count() - len(groups[:5]), groups = Group.objects.filter(groupprofile__in=pks)
}) context.update({
'groups': groups[:5],
'more_groups': groups.count() - len(groups[:5]),
})
# template # template
if user.has_perm('vm.create_template'): if user.has_perm('vm.create_template'):
...@@ -581,6 +584,7 @@ class NodeDetailView(LoginRequiredMixin, SuperuserRequiredMixin, DetailView): ...@@ -581,6 +584,7 @@ class NodeDetailView(LoginRequiredMixin, SuperuserRequiredMixin, DetailView):
class GroupDetailView(CheckedDetailView): class GroupDetailView(CheckedDetailView):
template_name = "dashboard/group-detail.html" template_name = "dashboard/group-detail.html"
model = Group model = Group
read_level = 'operator'
def get_has_level(self): def get_has_level(self):
return self.object.profile.has_level return self.object.profile.has_level
...@@ -747,7 +751,6 @@ class GroupAclUpdateView(AclUpdateView): ...@@ -747,7 +751,6 @@ class GroupAclUpdateView(AclUpdateView):
else: else:
self.set_levels(request, instance) self.set_levels(request, instance)
self.add_levels(request, instance) self.add_levels(request, instance)
# return redirect(self.profile)
return redirect(reverse("dashboard.views.group-detail", return redirect(reverse("dashboard.views.group-detail",
kwargs=self.kwargs)) kwargs=self.kwargs))
...@@ -1331,7 +1334,7 @@ class NodeCreate(LoginRequiredMixin, SuperuserRequiredMixin, TemplateView): ...@@ -1331,7 +1334,7 @@ class NodeCreate(LoginRequiredMixin, SuperuserRequiredMixin, TemplateView):
return redirect(path) return redirect(path)
class GroupCreate(LoginRequiredMixin, SuperuserRequiredMixin, TemplateView): class GroupCreate(LoginRequiredMixin, TemplateView):
form_class = GroupCreateForm form_class = GroupCreateForm
form = None form = None
...@@ -1343,6 +1346,8 @@ class GroupCreate(LoginRequiredMixin, SuperuserRequiredMixin, TemplateView): ...@@ -1343,6 +1346,8 @@ class GroupCreate(LoginRequiredMixin, SuperuserRequiredMixin, TemplateView):
return ['dashboard/nojs-wrapper.html'] return ['dashboard/nojs-wrapper.html']
def get(self, request, form=None, *args, **kwargs): def get(self, request, form=None, *args, **kwargs):
if not request.user.has_module_perms('auth'):
raise PermissionDenied()
if form is None: if form is None:
form = self.form_class() form = self.form_class()
context = self.get_context_data(**kwargs) context = self.get_context_data(**kwargs)
...@@ -1363,11 +1368,14 @@ class GroupCreate(LoginRequiredMixin, SuperuserRequiredMixin, TemplateView): ...@@ -1363,11 +1368,14 @@ class GroupCreate(LoginRequiredMixin, SuperuserRequiredMixin, TemplateView):
return context return context
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
if not request.user.has_module_perms('auth'):
raise PermissionDenied()
form = self.form_class(request.POST) form = self.form_class(request.POST)
if not form.is_valid(): if not form.is_valid():
return self.get(request, form, *args, **kwargs) return self.get(request, form, *args, **kwargs)
form.cleaned_data form.cleaned_data
savedform = form.save() savedform = form.save()
savedform.profile.set_level(request.user, 'owner')
messages.success(request, _('Group successfully created!')) messages.success(request, _('Group successfully created!'))
if request.is_ajax(): if request.is_ajax():
return HttpResponse(json.dumps({'redirect': return HttpResponse(json.dumps({'redirect':
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment