network_inventory/src/users/views.py

102 lines
3.0 KiB
Python
Raw Permalink Normal View History

2020-01-10 00:01:06 +01:00
from django.contrib.auth.decorators import login_required
2020-08-03 17:14:54 +02:00
from django.contrib.auth.mixins import LoginRequiredMixin
2020-01-10 00:01:06 +01:00
from django.shortcuts import get_object_or_404
2021-12-30 20:51:39 +01:00
from django.shortcuts import redirect
2020-01-09 22:00:05 +01:00
from django.shortcuts import render
2021-12-30 20:51:39 +01:00
from django.template.response import TemplateResponse
2020-08-03 17:14:54 +02:00
from django.urls import reverse
from django.views.generic import DeleteView
2020-01-09 22:00:05 +01:00
2020-01-10 00:01:06 +01:00
from django_tables2 import RequestConfig
2021-12-30 20:51:39 +01:00
from core import utils
2020-01-10 00:01:06 +01:00
from customers.decorators import customer_view_permission
2022-03-23 22:29:38 +01:00
from customers.models import Customer
2020-01-12 14:36:44 +01:00
from computers.models import Computer
2020-01-12 13:18:51 +01:00
from licenses.models import LicenseWithUser
2020-01-10 00:01:06 +01:00
from .decorators import user_view_permission
2022-03-30 23:52:44 +02:00
from .models import Group
2020-01-10 00:01:06 +01:00
from .models import MailAlias
from .models import User
2022-03-30 23:52:44 +02:00
from .tables import GroupsTable
2020-01-10 00:01:06 +01:00
from .tables import UsersTable
@login_required
@customer_view_permission
def users_table_view(request, pk):
table = UsersTable(User.objects.filter(customer=pk))
RequestConfig(request).configure(table)
2022-03-27 14:45:47 +02:00
return render(request, "users/user_list.html", {"users": table})
2020-01-10 00:01:06 +01:00
@login_required
@user_view_permission
def user_detail_view(request, pk):
user = get_object_or_404(User, pk=pk)
2022-03-30 23:52:44 +02:00
groups = Group.objects.filter(user=user)
2020-01-10 00:01:06 +01:00
mail_alias = MailAlias.objects.filter(user=user)
computers = Computer.objects.filter(user=user)
licenses = LicenseWithUser.objects.filter(user=user)
2022-03-27 14:45:47 +02:00
return render(
request,
"users/user_details.html",
{
"user": user,
2022-03-30 23:52:44 +02:00
"groups": groups,
2022-03-27 14:45:47 +02:00
"mail_alias": mail_alias,
"computers": computers,
"licenses": licenses,
},
)
2020-08-03 17:14:54 +02:00
class UserDeleteView(LoginRequiredMixin, DeleteView): # type: ignore
2020-08-03 17:14:54 +02:00
model = User
def get_success_url(self):
2022-03-27 14:45:47 +02:00
return reverse("users", args=(self.object.customer.pk,))
2021-12-30 20:51:39 +01:00
@login_required
2022-03-23 22:29:38 +01:00
@customer_view_permission
def groups_table_view(request, pk):
customer = get_object_or_404(Customer, pk=pk)
2022-03-30 23:52:44 +02:00
groups_table = GroupsTable(
2023-07-10 16:47:01 +02:00
utils.get_objects_for_customer(Group, user=request.user, customer_pk=pk)
2022-03-27 14:45:47 +02:00
)
2022-03-30 23:52:44 +02:00
RequestConfig(request).configure(groups_table)
2022-03-27 14:45:47 +02:00
return TemplateResponse(
request,
"groups/group_list.html",
{
"customer": customer.name,
2022-03-30 23:52:44 +02:00
"groups": groups_table,
2022-03-27 14:45:47 +02:00
},
)
2021-12-30 20:51:39 +01:00
@login_required
2022-03-30 23:52:44 +02:00
def group_detail_view(request, pk):
2023-07-10 16:47:01 +02:00
group = utils.get_object_with_view_permission(Group, user=request.user, pk=pk)
users = group.user_set.all()
2022-04-04 09:57:46 +02:00
groups = Group.objects.filter(parent_group=group)
print(groups)
return render(
2022-04-04 09:57:46 +02:00
request,
"groups/group_details.html",
{"group": group, "users": users, "groups": groups},
)
2021-12-30 20:51:39 +01:00
@login_required
2022-03-30 23:52:44 +02:00
def delete_group(request, pk):
2023-07-10 16:47:01 +02:00
group = utils.get_object_with_view_permission(Group, user=request.user, pk=pk)
2022-03-27 14:45:47 +02:00
if request.method == "POST":
2021-12-30 20:51:39 +01:00
group.delete()
2022-03-30 23:52:44 +02:00
return redirect("groups", pk=group.customer.pk)
2022-03-27 14:45:47 +02:00
return TemplateResponse(
2022-03-30 23:52:44 +02:00
request, "groups/group_confirm_delete.html", {"object": group}
2022-03-27 14:45:47 +02:00
)