mirror of https://github.com/jumpserver/jumpserver
[Update] 修改用户view
parent
28e47f33c1
commit
5648dcd7e7
|
@ -37,19 +37,19 @@ class AdminUserViewSet(IDInFilterMixin, BulkModelViewSet):
|
|||
"""
|
||||
Admin user api set, for add,delete,update,list,retrieve resource
|
||||
"""
|
||||
queryset = AdminUser.objects
|
||||
queryset = AdminUser.objects.all()
|
||||
serializer_class = serializers.AdminUserSerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
||||
class AdminUserAuthApi(generics.UpdateAPIView):
|
||||
queryset = AdminUser.objects
|
||||
queryset = AdminUser.objects.all()
|
||||
serializer_class = serializers.AdminUserAuthSerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
||||
class ReplaceNodesAdminUserApi(generics.UpdateAPIView):
|
||||
queryset = AdminUser.objects
|
||||
queryset = AdminUser.objects.all()
|
||||
serializer_class = serializers.ReplaceNodeAdminUserSerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
@ -74,7 +74,7 @@ class AdminUserTestConnectiveApi(generics.RetrieveAPIView):
|
|||
"""
|
||||
Test asset admin user connectivity
|
||||
"""
|
||||
queryset = AdminUser.objects
|
||||
queryset = AdminUser.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
def retrieve(self, request, *args, **kwargs):
|
||||
|
|
|
@ -36,7 +36,7 @@ class AssetViewSet(IDInFilterMixin, LabelFilter, BulkModelViewSet):
|
|||
filter_fields = ("hostname", "ip")
|
||||
search_fields = filter_fields
|
||||
ordering_fields = ("hostname", "ip", "port", "cpu_cores")
|
||||
queryset = Asset.objects
|
||||
queryset = Asset.objects.all()
|
||||
serializer_class = serializers.AssetSerializer
|
||||
pagination_class = LimitOffsetPagination
|
||||
permission_classes = (IsSuperUserOrAppUser,)
|
||||
|
@ -65,7 +65,7 @@ class AssetViewSet(IDInFilterMixin, LabelFilter, BulkModelViewSet):
|
|||
if node_id and not show_current_asset:
|
||||
node = get_object_or_404(Node, id=node_id)
|
||||
if node.is_root():
|
||||
queryset = Asset.objects
|
||||
queryset = Asset.objects.all()
|
||||
else:
|
||||
queryset = queryset.filter(
|
||||
nodes__key__regex='^{}(:[0-9]+)*$'.format(node.key),
|
||||
|
@ -77,7 +77,7 @@ class AssetListUpdateApi(IDInFilterMixin, ListBulkCreateUpdateDestroyAPIView):
|
|||
"""
|
||||
Asset bulk update api
|
||||
"""
|
||||
queryset = Asset.objects
|
||||
queryset = Asset.objects.all()
|
||||
serializer_class = serializers.AssetSerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
@ -86,7 +86,7 @@ class AssetRefreshHardwareApi(generics.RetrieveAPIView):
|
|||
"""
|
||||
Refresh asset hardware info
|
||||
"""
|
||||
queryset = Asset.objects
|
||||
queryset = Asset.objects.all()
|
||||
serializer_class = serializers.AssetSerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
@ -101,7 +101,7 @@ class AssetAdminUserTestApi(generics.RetrieveAPIView):
|
|||
"""
|
||||
Test asset admin user connectivity
|
||||
"""
|
||||
queryset = Asset.objects
|
||||
queryset = Asset.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
def retrieve(self, request, *args, **kwargs):
|
||||
|
@ -112,7 +112,7 @@ class AssetAdminUserTestApi(generics.RetrieveAPIView):
|
|||
|
||||
|
||||
class AssetGatewayApi(generics.RetrieveAPIView):
|
||||
queryset = Asset.objects
|
||||
queryset = Asset.objects.all()
|
||||
permission_classes = (IsSuperUserOrAppUser,)
|
||||
|
||||
def retrieve(self, request, *args, **kwargs):
|
||||
|
|
|
@ -18,7 +18,7 @@ __all__ = ['DomainViewSet', 'GatewayViewSet', "GatewayTestConnectionApi"]
|
|||
|
||||
|
||||
class DomainViewSet(BulkModelViewSet):
|
||||
queryset = Domain.objects
|
||||
queryset = Domain.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
serializer_class = serializers.DomainSerializer
|
||||
|
||||
|
@ -36,7 +36,7 @@ class DomainViewSet(BulkModelViewSet):
|
|||
class GatewayViewSet(BulkModelViewSet):
|
||||
filter_fields = ("domain",)
|
||||
search_fields = filter_fields
|
||||
queryset = Gateway.objects
|
||||
queryset = Gateway.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
serializer_class = serializers.GatewaySerializer
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ __all__ = [
|
|||
|
||||
|
||||
class NodeViewSet(BulkModelViewSet):
|
||||
queryset = Node.objects
|
||||
queryset = Node.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
serializer_class = serializers.NodeSerializer
|
||||
|
||||
|
@ -79,7 +79,7 @@ class NodeViewSet(BulkModelViewSet):
|
|||
|
||||
|
||||
class NodeChildrenApi(mixins.ListModelMixin, generics.CreateAPIView):
|
||||
queryset = Node.objects
|
||||
queryset = Node.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
serializer_class = serializers.NodeSerializer
|
||||
instance = None
|
||||
|
@ -166,7 +166,7 @@ class NodeAssetsApi(generics.ListAPIView):
|
|||
|
||||
|
||||
class NodeAddChildrenApi(generics.UpdateAPIView):
|
||||
queryset = Node.objects
|
||||
queryset = Node.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
serializer_class = serializers.NodeAddChildrenSerializer
|
||||
instance = None
|
||||
|
@ -184,7 +184,7 @@ class NodeAddChildrenApi(generics.UpdateAPIView):
|
|||
|
||||
class NodeAddAssetsApi(generics.UpdateAPIView):
|
||||
serializer_class = serializers.NodeAssetsSerializer
|
||||
queryset = Node.objects
|
||||
queryset = Node.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
instance = None
|
||||
|
||||
|
@ -196,7 +196,7 @@ class NodeAddAssetsApi(generics.UpdateAPIView):
|
|||
|
||||
class NodeRemoveAssetsApi(generics.UpdateAPIView):
|
||||
serializer_class = serializers.NodeAssetsSerializer
|
||||
queryset = Node.objects
|
||||
queryset = Node.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
instance = None
|
||||
|
||||
|
@ -212,7 +212,7 @@ class NodeRemoveAssetsApi(generics.UpdateAPIView):
|
|||
|
||||
class NodeReplaceAssetsApi(generics.UpdateAPIView):
|
||||
serializer_class = serializers.NodeAssetsSerializer
|
||||
queryset = Node.objects
|
||||
queryset = Node.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
instance = None
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ class SystemUserViewSet(BulkModelViewSet):
|
|||
"""
|
||||
System user api set, for add,delete,update,list,retrieve resource
|
||||
"""
|
||||
queryset = SystemUser.objects
|
||||
queryset = SystemUser.objects.all()
|
||||
serializer_class = serializers.SystemUserSerializer
|
||||
permission_classes = (IsSuperUserOrAppUser,)
|
||||
|
||||
|
@ -44,7 +44,7 @@ class SystemUserAuthInfoApi(generics.RetrieveUpdateDestroyAPIView):
|
|||
"""
|
||||
Get system user auth info
|
||||
"""
|
||||
queryset = SystemUser.objects
|
||||
queryset = SystemUser.objects.all()
|
||||
permission_classes = (IsSuperUserOrAppUser,)
|
||||
serializer_class = serializers.SystemUserAuthSerializer
|
||||
|
||||
|
@ -58,7 +58,7 @@ class SystemUserPushApi(generics.RetrieveAPIView):
|
|||
"""
|
||||
Push system user to cluster assets api
|
||||
"""
|
||||
queryset = SystemUser.objects
|
||||
queryset = SystemUser.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
def retrieve(self, request, *args, **kwargs):
|
||||
|
@ -74,7 +74,7 @@ class SystemUserTestConnectiveApi(generics.RetrieveAPIView):
|
|||
"""
|
||||
Push system user to cluster assets api
|
||||
"""
|
||||
queryset = SystemUser.objects
|
||||
queryset = SystemUser.objects.all()
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
def retrieve(self, request, *args, **kwargs):
|
||||
|
|
|
@ -93,7 +93,7 @@ class AssetUpdateForm(forms.ModelForm):
|
|||
class AssetBulkUpdateForm(forms.ModelForm):
|
||||
assets = forms.ModelMultipleChoiceField(
|
||||
required=True, help_text='* required',
|
||||
label=_('Select assets'), queryset = Asset.objects,
|
||||
label=_('Select assets'), queryset=Asset.objects.all(),
|
||||
widget=forms.SelectMultiple(
|
||||
attrs={
|
||||
'class': 'select2',
|
||||
|
|
|
@ -11,7 +11,7 @@ __all__ = ['DomainForm', 'GatewayForm']
|
|||
|
||||
class DomainForm(forms.ModelForm):
|
||||
assets = forms.ModelMultipleChoiceField(
|
||||
queryset = Asset.objects, label=_('Asset'), required=False,
|
||||
queryset=Asset.objects.all(), label=_('Asset'), required=False,
|
||||
widget=forms.SelectMultiple(
|
||||
attrs={'class': 'select2', 'data-placeholder': _('Select assets')}
|
||||
)
|
||||
|
|
|
@ -10,7 +10,7 @@ __all__ = ['LabelForm']
|
|||
|
||||
class LabelForm(forms.ModelForm):
|
||||
assets = forms.ModelMultipleChoiceField(
|
||||
queryset = Asset.objects, label=_('Asset'), required=False,
|
||||
queryset=Asset.objects.all(), label=_('Asset'), required=False,
|
||||
widget=forms.SelectMultiple(
|
||||
attrs={'class': 'select2', 'data-placeholder': _('Select assets')}
|
||||
)
|
||||
|
|
|
@ -58,7 +58,7 @@ class ReplaceNodeAdminUserSerializer(serializers.ModelSerializer):
|
|||
管理用户更新关联到的集群
|
||||
"""
|
||||
nodes = serializers.PrimaryKeyRelatedField(
|
||||
many=True, queryset = Node.objects
|
||||
many=True, queryset = Node.objects.all()
|
||||
)
|
||||
|
||||
class Meta:
|
||||
|
|
|
@ -78,7 +78,7 @@ class NodeSerializer(serializers.ModelSerializer):
|
|||
|
||||
|
||||
class NodeAssetsSerializer(serializers.ModelSerializer):
|
||||
assets = serializers.PrimaryKeyRelatedField(many=True, queryset = Asset.objects)
|
||||
assets = serializers.PrimaryKeyRelatedField(many=True, queryset = Asset.objects.all())
|
||||
|
||||
class Meta:
|
||||
model = Node
|
||||
|
|
|
@ -90,7 +90,7 @@ class AdminUserAssetsView(AdminUserRequiredMixin, SingleObjectMixin, ListView):
|
|||
object = None
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.object = self.get_object(queryset = AdminUser.objects)
|
||||
self.object = self.get_object(queryset=AdminUser.objects.all())
|
||||
return super().get(request, *args, **kwargs)
|
||||
|
||||
def get_queryset(self):
|
||||
|
|
|
@ -9,6 +9,6 @@ from .serializers import FTPLogSerializer
|
|||
|
||||
|
||||
class FTPLogViewSet(viewsets.ModelViewSet):
|
||||
queryset = FTPLog.objects
|
||||
queryset = FTPLog.objects.all()
|
||||
serializer_class = FTPLogSerializer
|
||||
permission_classes = (IsSuperUserOrAppUser,)
|
||||
|
|
|
@ -78,6 +78,7 @@ INSTALLED_APPS = [
|
|||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
'orgs.middleware.OrgPreMiddleware',
|
||||
'django.middleware.security.SecurityMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.locale.LocaleMiddleware',
|
||||
|
|
|
@ -16,13 +16,13 @@ from .tasks import run_ansible_task
|
|||
|
||||
|
||||
class TaskViewSet(viewsets.ModelViewSet):
|
||||
queryset = Task.objects
|
||||
queryset = Task.objects.all()
|
||||
serializer_class = TaskSerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
||||
class TaskRun(generics.RetrieveAPIView):
|
||||
queryset = Task.objects
|
||||
queryset = Task.objects.all()
|
||||
serializer_class = TaskViewSet
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
@ -33,7 +33,7 @@ class TaskRun(generics.RetrieveAPIView):
|
|||
|
||||
|
||||
class AdHocViewSet(viewsets.ModelViewSet):
|
||||
queryset = AdHoc.objects
|
||||
queryset = AdHoc.objects.all()
|
||||
serializer_class = AdHocSerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
@ -46,7 +46,7 @@ class AdHocViewSet(viewsets.ModelViewSet):
|
|||
|
||||
|
||||
class AdHocRunHistorySet(viewsets.ModelViewSet):
|
||||
queryset = AdHocRunHistory.objects
|
||||
queryset = AdHocRunHistory.objects.all()
|
||||
serializer_class = AdHocRunHistorySerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
@ -68,7 +68,7 @@ class CeleryTaskLogApi(generics.RetrieveAPIView):
|
|||
permission_classes = (IsSuperUser,)
|
||||
buff_size = 1024 * 10
|
||||
end = False
|
||||
queryset = CeleryTask.objects
|
||||
queryset = CeleryTask.objects.all()
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
mark = request.query_params.get("mark") or str(uuid.uuid4())
|
||||
|
|
|
@ -2,6 +2,17 @@
|
|||
#
|
||||
|
||||
from .utils import get_org_from_request, set_current_org
|
||||
from .models import Organization
|
||||
|
||||
|
||||
class OrgPreMiddleware:
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
set_current_org(Organization.root())
|
||||
response = self.get_response(request)
|
||||
return response
|
||||
|
||||
|
||||
class OrgMiddleware:
|
||||
|
|
|
@ -2,18 +2,26 @@
|
|||
#
|
||||
from django.db import models
|
||||
from django.shortcuts import redirect
|
||||
import warnings
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.forms import ModelForm
|
||||
|
||||
from common.utils import get_logger
|
||||
from .utils import get_current_org, get_model_by_db_table
|
||||
from .utils import get_current_org, get_model_by_db_table, set_current_org
|
||||
|
||||
logger = get_logger(__file__)
|
||||
|
||||
|
||||
__all__ = ['OrgManager', 'OrgViewGenericMixin', 'OrgModelMixin']
|
||||
__all__ = [
|
||||
'OrgManager', 'OrgViewGenericMixin', 'OrgModelMixin', 'OrgModelForm'
|
||||
]
|
||||
|
||||
|
||||
class OrgManager(models.Manager):
|
||||
def __init__(self, *args, **kwargs):
|
||||
print("INit manager")
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def get_queryset(self):
|
||||
print("GET CURR")
|
||||
current_org = get_current_org()
|
||||
|
@ -22,9 +30,9 @@ class OrgManager(models.Manager):
|
|||
print("Get queryset ")
|
||||
print(current_org)
|
||||
|
||||
print(self.model)
|
||||
if not current_org:
|
||||
return super().get_queryset().filter(**kwargs)
|
||||
kwargs['id'] = None
|
||||
pass
|
||||
elif current_org.is_real():
|
||||
kwargs['org'] = current_org
|
||||
elif current_org.is_default():
|
||||
|
@ -34,6 +42,19 @@ class OrgManager(models.Manager):
|
|||
print(queryset)
|
||||
return queryset
|
||||
|
||||
def all(self):
|
||||
current_org = get_current_org()
|
||||
if not current_org:
|
||||
msg = 'You should `objects.set_current_org(org).all()` then run it'
|
||||
warnings.warn(msg)
|
||||
return self
|
||||
else:
|
||||
return super().all()
|
||||
|
||||
def set_current_org(self, org):
|
||||
set_current_org(org)
|
||||
return self
|
||||
|
||||
|
||||
class OrgModelMixin(models.Model):
|
||||
org = models.ForeignKey('orgs.Organization', on_delete=models.PROTECT, null=True)
|
||||
|
@ -55,3 +76,17 @@ class OrgViewGenericMixin:
|
|||
if not current_org:
|
||||
return redirect('orgs:switch-a-org')
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
|
||||
class OrgModelForm(ModelForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
if 'initial' not in kwargs:
|
||||
return
|
||||
for name, field in self.fields.items():
|
||||
if not hasattr(field, 'queryset'):
|
||||
continue
|
||||
print(field)
|
||||
model = field.queryset.model
|
||||
field.queryset = model.objects.all()
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ class AssetPermissionViewSet(viewsets.ModelViewSet):
|
|||
"""
|
||||
资产授权列表的增删改查api
|
||||
"""
|
||||
queryset = AssetPermission.objects
|
||||
queryset = AssetPermission.objects.all()
|
||||
serializer_class = serializers.AssetPermissionCreateUpdateSerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
@ -268,7 +268,7 @@ class AssetPermissionRemoveUserApi(RetrieveUpdateAPIView):
|
|||
"""
|
||||
permission_classes = (IsSuperUser,)
|
||||
serializer_class = serializers.AssetPermissionUpdateUserSerializer
|
||||
queryset = AssetPermission.objects
|
||||
queryset = AssetPermission.objects.all()
|
||||
|
||||
def update(self, request, *args, **kwargs):
|
||||
perm = self.get_object()
|
||||
|
@ -285,7 +285,7 @@ class AssetPermissionRemoveUserApi(RetrieveUpdateAPIView):
|
|||
class AssetPermissionAddUserApi(RetrieveUpdateAPIView):
|
||||
permission_classes = (IsSuperUser,)
|
||||
serializer_class = serializers.AssetPermissionUpdateUserSerializer
|
||||
queryset = AssetPermission.objects
|
||||
queryset = AssetPermission.objects.all()
|
||||
|
||||
def update(self, request, *args, **kwargs):
|
||||
perm = self.get_object()
|
||||
|
@ -305,7 +305,7 @@ class AssetPermissionRemoveAssetApi(RetrieveUpdateAPIView):
|
|||
"""
|
||||
permission_classes = (IsSuperUser,)
|
||||
serializer_class = serializers.AssetPermissionUpdateAssetSerializer
|
||||
queryset = AssetPermission.objects
|
||||
queryset = AssetPermission.objects.all()
|
||||
|
||||
def update(self, request, *args, **kwargs):
|
||||
perm = self.get_object()
|
||||
|
@ -322,7 +322,7 @@ class AssetPermissionRemoveAssetApi(RetrieveUpdateAPIView):
|
|||
class AssetPermissionAddAssetApi(RetrieveUpdateAPIView):
|
||||
permission_classes = (IsSuperUser,)
|
||||
serializer_class = serializers.AssetPermissionUpdateAssetSerializer
|
||||
queryset = AssetPermission.objects
|
||||
queryset = AssetPermission.objects.all()
|
||||
|
||||
def update(self, request, *args, **kwargs):
|
||||
perm = self.get_object()
|
||||
|
|
|
@ -108,7 +108,7 @@ class AssetPermissionUserView(AdminUserRequiredMixin,
|
|||
object = None
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.object = self.get_object(queryset = AssetPermission.objects)
|
||||
self.object = self.get_object(queryset = AssetPermission.objects.all())
|
||||
return super().get(request, *args, **kwargs)
|
||||
|
||||
def get_queryset(self):
|
||||
|
@ -138,7 +138,7 @@ class AssetPermissionAssetView(AdminUserRequiredMixin,
|
|||
object = None
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
self.object = self.get_object(queryset = AssetPermission.objects)
|
||||
self.object = self.get_object(queryset = AssetPermission.objects.all())
|
||||
return super().get(request, *args, **kwargs)
|
||||
|
||||
def get_queryset(self):
|
||||
|
|
|
@ -102,7 +102,7 @@ class TerminalTokenApi(APIView):
|
|||
|
||||
|
||||
class StatusViewSet(viewsets.ModelViewSet):
|
||||
queryset = Status.objects
|
||||
queryset = Status.objects.all()
|
||||
serializer_class = StatusSerializer
|
||||
permission_classes = (IsSuperUserOrAppUser,)
|
||||
session_serializer_class = SessionSerializer
|
||||
|
@ -174,7 +174,7 @@ class StatusViewSet(viewsets.ModelViewSet):
|
|||
|
||||
|
||||
class SessionViewSet(viewsets.ModelViewSet):
|
||||
queryset = Session.objects
|
||||
queryset = Session.objects.all()
|
||||
serializer_class = SessionSerializer
|
||||
permission_classes = (IsSuperUserOrAppUser,)
|
||||
|
||||
|
@ -192,7 +192,7 @@ class SessionViewSet(viewsets.ModelViewSet):
|
|||
|
||||
|
||||
class TaskViewSet(BulkModelViewSet):
|
||||
queryset = Task.objects
|
||||
queryset = Task.objects.all()
|
||||
serializer_class = TaskSerializer
|
||||
permission_classes = (IsSuperUserOrAppUser,)
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ from rest_framework import generics
|
|||
from rest_framework.permissions import AllowAny, IsAuthenticated
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework import viewsets
|
||||
from rest_framework_bulk import BulkModelViewSet
|
||||
|
||||
from .serializers import UserSerializer, UserGroupSerializer, \
|
||||
|
@ -53,7 +52,7 @@ class UserViewSet(IDInFilterMixin, BulkModelViewSet):
|
|||
|
||||
class ChangeUserPasswordApi(generics.RetrieveUpdateAPIView):
|
||||
permission_classes = (IsSuperUser,)
|
||||
queryset = User.objects
|
||||
queryset = User.objects.all()
|
||||
serializer_class = ChangeUserPasswordSerializer
|
||||
|
||||
def perform_update(self, serializer):
|
||||
|
@ -63,13 +62,13 @@ class ChangeUserPasswordApi(generics.RetrieveUpdateAPIView):
|
|||
|
||||
|
||||
class UserUpdateGroupApi(generics.RetrieveUpdateAPIView):
|
||||
queryset = User.objects
|
||||
queryset = User.objects.all()
|
||||
serializer_class = UserUpdateGroupSerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
||||
class UserResetPasswordApi(generics.UpdateAPIView):
|
||||
queryset = User.objects
|
||||
queryset = User.objects.all()
|
||||
serializer_class = UserSerializer
|
||||
permission_classes = (IsAuthenticated,)
|
||||
|
||||
|
@ -84,7 +83,7 @@ class UserResetPasswordApi(generics.UpdateAPIView):
|
|||
|
||||
|
||||
class UserResetPKApi(generics.UpdateAPIView):
|
||||
queryset = User.objects
|
||||
queryset = User.objects.all()
|
||||
serializer_class = UserSerializer
|
||||
permission_classes = (IsAuthenticated,)
|
||||
|
||||
|
@ -97,7 +96,7 @@ class UserResetPKApi(generics.UpdateAPIView):
|
|||
|
||||
|
||||
class UserUpdatePKApi(generics.UpdateAPIView):
|
||||
queryset = User.objects
|
||||
queryset = User.objects.all()
|
||||
serializer_class = UserPKUpdateSerializer
|
||||
permission_classes = (IsCurrentUserOrReadOnly,)
|
||||
|
||||
|
@ -108,13 +107,13 @@ class UserUpdatePKApi(generics.UpdateAPIView):
|
|||
|
||||
|
||||
class UserGroupViewSet(IDInFilterMixin, OrgViewGenericMixin, BulkModelViewSet):
|
||||
queryset = UserGroup.objects
|
||||
queryset = UserGroup.objects.all()
|
||||
serializer_class = UserGroupSerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
||||
class UserGroupUpdateUserApi(generics.RetrieveUpdateAPIView):
|
||||
queryset = UserGroup.objects
|
||||
queryset = UserGroup.objects.all()
|
||||
serializer_class = UserGroupUpdateMemeberSerializer
|
||||
permission_classes = (IsSuperUser,)
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@ from django.utils.translation import gettext_lazy as _
|
|||
from captcha.fields import CaptchaField
|
||||
|
||||
from common.utils import validate_ssh_public_key
|
||||
from orgs.mixins import OrgModelForm
|
||||
from orgs.utils import get_current_org
|
||||
from .models import User, UserGroup
|
||||
|
||||
|
||||
|
@ -39,7 +41,7 @@ class UserCheckOtpCodeForm(forms.Form):
|
|||
otp_code = forms.CharField(label=_('MFA code'), max_length=6)
|
||||
|
||||
|
||||
class UserCreateUpdateForm(forms.ModelForm):
|
||||
class UserCreateUpdateForm(OrgModelForm):
|
||||
role_choices = ((i, n) for i, n in User.ROLE_CHOICES if i != User.ROLE_APP)
|
||||
password = forms.CharField(
|
||||
label=_('Password'), widget=forms.PasswordInput,
|
||||
|
@ -54,15 +56,6 @@ class UserCreateUpdateForm(forms.ModelForm):
|
|||
widget=forms.Textarea(attrs={'placeholder': _('ssh-rsa AAAA...')}),
|
||||
help_text=_('Paste user id_rsa.pub here.')
|
||||
)
|
||||
# groups = forms.ModelMultipleChoiceField(
|
||||
# queryset=UserGroup.objects, required=False, label=_("Groups"),
|
||||
# widget=forms.SelectMultiple(
|
||||
# attrs={
|
||||
# 'class': 'select2',
|
||||
# 'data-placeholder': _('Join user groups')
|
||||
# }
|
||||
# )
|
||||
# )
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
|
@ -77,6 +70,12 @@ class UserCreateUpdateForm(forms.ModelForm):
|
|||
}
|
||||
widgets = {
|
||||
'otp_level': forms.RadioSelect(),
|
||||
'groups': forms.SelectMultiple(
|
||||
attrs={
|
||||
'class': 'select2',
|
||||
'data-placeholder': _('Join user groups')
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
def clean_public_key(self):
|
||||
|
@ -240,7 +239,7 @@ class UserBulkUpdateForm(forms.ModelForm):
|
|||
required=True,
|
||||
help_text='* required',
|
||||
label=_('Select users'),
|
||||
queryset = User.objects,
|
||||
queryset = User.objects.all(),
|
||||
widget=forms.SelectMultiple(
|
||||
attrs={
|
||||
'class': 'select2',
|
||||
|
@ -279,6 +278,11 @@ class UserBulkUpdateForm(forms.ModelForm):
|
|||
return users
|
||||
|
||||
|
||||
def user_limit_to():
|
||||
org = get_current_org()
|
||||
return {"orgs": org}
|
||||
|
||||
|
||||
class UserGroupForm(forms.ModelForm):
|
||||
users = forms.ModelMultipleChoiceField(
|
||||
queryset=User.objects.exclude(role=User.ROLE_APP),
|
||||
|
@ -290,6 +294,7 @@ class UserGroupForm(forms.ModelForm):
|
|||
}
|
||||
),
|
||||
required=False,
|
||||
limit_choices_to=user_limit_to
|
||||
)
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
|
@ -318,30 +323,12 @@ class UserGroupForm(forms.ModelForm):
|
|||
}
|
||||
|
||||
|
||||
# class UserGroupPrivateAssetPermissionForm(forms.ModelForm):
|
||||
# def save(self, commit=True):
|
||||
# self.instance = super(UserGroupPrivateAssetPermissionForm, self)\
|
||||
# .save(commit=commit)
|
||||
# self.instance.user_groups = [self.user_group]
|
||||
# self.instance.save()
|
||||
# return self.instance
|
||||
#
|
||||
# class Meta:
|
||||
# model = AssetPermission
|
||||
# fields = [
|
||||
# 'assets', 'asset_groups', 'system_users', 'name',
|
||||
# ]
|
||||
# widgets = {
|
||||
# 'assets': forms.SelectMultiple(
|
||||
# attrs={'class': 'select2',
|
||||
# 'data-placeholder': _('Select assets')}),
|
||||
# 'asset_groups': forms.SelectMultiple(
|
||||
# attrs={'class': 'select2',
|
||||
# 'data-placeholder': _('Select asset groups')}),
|
||||
# 'system_users': forms.SelectMultiple(
|
||||
# attrs={'class': 'select2',
|
||||
# 'data-placeholder': _('Select system users')}),
|
||||
# }
|
||||
class OrgUserField(forms.ModelMultipleChoiceField):
|
||||
|
||||
def get_limit_choices_to(self):
|
||||
|
||||
return {"orgs"}
|
||||
|
||||
|
||||
|
||||
class FileForm(forms.Form):
|
||||
|
|
|
@ -15,6 +15,7 @@ from django.shortcuts import reverse
|
|||
|
||||
from common.utils import get_signer, date_expired_default
|
||||
from common.models import Setting
|
||||
from orgs.mixins import OrgManager
|
||||
from orgs.utils import get_current_org
|
||||
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ signer = get_signer()
|
|||
|
||||
class UserSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
||||
groups_display = serializers.SerializerMethodField()
|
||||
groups = serializers.PrimaryKeyRelatedField(many=True, queryset = UserGroup.objects, required=False)
|
||||
groups = serializers.PrimaryKeyRelatedField(many=True, queryset = UserGroup.objects.all(), required=False)
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
|
@ -50,7 +50,7 @@ class UserPKUpdateSerializer(serializers.ModelSerializer):
|
|||
|
||||
|
||||
class UserUpdateGroupSerializer(serializers.ModelSerializer):
|
||||
groups = serializers.PrimaryKeyRelatedField(many=True, queryset = UserGroup.objects)
|
||||
groups = serializers.PrimaryKeyRelatedField(many=True, queryset=UserGroup.objects.all())
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
|
@ -71,7 +71,7 @@ class UserGroupSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
|||
|
||||
|
||||
class UserGroupUpdateMemeberSerializer(serializers.ModelSerializer):
|
||||
users = serializers.PrimaryKeyRelatedField(many=True, queryset = User.objects)
|
||||
users = serializers.PrimaryKeyRelatedField(many=True, queryset = User.objects.all())
|
||||
|
||||
class Meta:
|
||||
model = UserGroup
|
||||
|
|
|
@ -23,7 +23,7 @@ from django.conf import settings
|
|||
|
||||
from common.utils import get_object_or_none
|
||||
from common.mixins import DatetimeSearchMixin, AdminUserRequiredMixin
|
||||
from common.models import Setting
|
||||
from orgs.utils import get_current_org
|
||||
from ..models import User, LoginLog
|
||||
from ..utils import send_reset_password_mail, check_otp_code, get_login_ip, \
|
||||
redirect_user_first_login_or_index, get_user_or_tmp_user, \
|
||||
|
@ -365,11 +365,17 @@ class LoginLogListView(AdminUserRequiredMixin, DatetimeSearchMixin, ListView):
|
|||
user = keyword = ""
|
||||
date_to = date_from = None
|
||||
|
||||
def get_allow_users(self):
|
||||
current_org = get_current_org()
|
||||
users = current_org.get_org_users().values_list('username', flat=True)
|
||||
return users
|
||||
|
||||
def get_queryset(self):
|
||||
users = self.get_allow_users()
|
||||
queryset = super().get_queryset().filter(username__in=users)
|
||||
self.user = self.request.GET.get('user', '')
|
||||
self.keyword = self.request.GET.get("keyword", '')
|
||||
|
||||
queryset = super().get_queryset()
|
||||
queryset = queryset.filter(
|
||||
datetime__gt=self.date_from, datetime__lt=self.date_to
|
||||
)
|
||||
|
@ -391,9 +397,7 @@ class LoginLogListView(AdminUserRequiredMixin, DatetimeSearchMixin, ListView):
|
|||
'date_to': self.date_to,
|
||||
'user': self.user,
|
||||
'keyword': self.keyword,
|
||||
'user_list': set(
|
||||
LoginLog.objects.all().values_list('username', flat=True)
|
||||
)
|
||||
'user_list': self.get_allow_users(),
|
||||
}
|
||||
kwargs.update(context)
|
||||
return super().get_context_data(**kwargs)
|
Loading…
Reference in New Issue