예제 #1
0
def assign_owner_hosts(request, selected_hosts, add_only=False):
    user = request.user

    # User must have global change perm or object owner perm.
    if not user.has_perm("hosts.change_host") and not change_perms_check(
        user, selected_hosts
    ):
        messages.error(
            request,
            "You do not have permissions to perform this action on one or more the selected hosts. "
            "Please contact an IPAM administrator.",
        )
    else:
        owner_form = HostOwnerForm(request.POST)

        if owner_form.is_valid():
            user_owners = owner_form.cleaned_data["user_owners"]
            group_owners = owner_form.cleaned_data["group_owners"]

            for host in selected_hosts:
                # Delete user and group permissions first
                if not add_only:
                    host.remove_owners()

                # Re-assign users
                for user_onwer in user_owners:
                    host.assign_owner(user_onwer)

                # Re-assign groups
                for group_owner in group_owners:
                    host.assign_owner(group_owner)

                data = [user_owners, group_owners]

                LogEntry.objects.log_action(
                    user_id=request.user.pk,
                    content_type_id=ContentType.objects.get_for_model(host).pk,
                    object_id=host.pk,
                    object_repr=force_unicode(host),
                    action_flag=CHANGE,
                    change_message="Owners assigned to host: \n\n %s" % data,
                )

            messages.success(request, "Ownership for selected hosts has been updated.")

        else:
            error_list = []
            for key, errors in owner_form.errors.items():
                for error in errors:
                    error_list.append(error)
            messages.error(
                request,
                mark_safe(
                    "There was an error updating the ownership of the selected hosts. "
                    "<br/>%s" % "<br />".join(error_list)
                ),
            )
예제 #2
0
def assign_owner_hosts(request, selected_hosts, add_only=False):
    user = request.user

    # User must have global change perm or object owner perm.
    if not user.has_perm("hosts.change_host") and not change_perms_check(
        user, selected_hosts
    ):
        messages.error(
            request,
            "You do not have permissions to perform this action on one or more the selected hosts. "
            "Please contact an IPAM administrator.",
        )
    else:
        owner_form = HostOwnerForm(request.POST)

        if owner_form.is_valid():
            user_owners = owner_form.cleaned_data["user_owners"]
            group_owners = owner_form.cleaned_data["group_owners"]

            for host in selected_hosts:
                # Delete user and group permissions first
                if not add_only:
                    host.remove_owners()

                # Re-assign users
                for user_onwer in user_owners:
                    host.assign_owner(user_onwer)

                # Re-assign groups
                for group_owner in group_owners:
                    host.assign_owner(group_owner)

                data = [user_owners, group_owners]

                LogEntry.objects.log_action(
                    user_id=request.user.pk,
                    content_type_id=ContentType.objects.get_for_model(host).pk,
                    object_id=host.pk,
                    object_repr=force_text(host),
                    action_flag=CHANGE,
                    change_message="Owners assigned to host: \n\n %s" % data,
                )

            messages.success(request, "Ownership for selected hosts has been updated.")

        else:
            error_list = []
            for key, errors in list(owner_form.errors.items()):
                for error in errors:
                    error_list.append(error)
            messages.error(
                request,
                mark_safe(
                    "There was an error updating the ownership of the selected hosts. "
                    "<br/>%s" % "<br />".join(error_list)
                ),
            )
예제 #3
0
def change_owners(request):
    form = HostOwnerForm(request.POST or None)

    if form.is_valid:
        pass

    context = {"form": form}

    return render(request, "hosts/change_owners.html", context)
예제 #4
0
    def get_context_data(self, **kwargs):
        context = super(HostListView, self).get_context_data(**kwargs)

        owner_filter = self.request.COOKIES.get("owner_filter", None)
        context["owner_filter"] = self.request.GET.get("mine", owner_filter)
        search_filter = self.request.COOKIES.get("search_filter")
        search_filter = urlunquote(search_filter).split(
            ",") if search_filter else []
        context["search_filter"] = search_filter
        context["owners_form"] = HostOwnerForm()
        context["renew_form"] = HostRenewForm(user=self.request.user)
        context["rename_form"] = HostRenameForm()
        context["attribute_add_from"] = HostAttributesCreateForm()
        context["dhcp_group_form"] = HostDhcpGroupForm()
        context["attribute_delete_from"] = HostAttributesDeleteForm()

        return context