mirror of https://github.com/jumpserver/jumpserver
commit
d1f46768a3
|
@ -1,17 +1,14 @@
|
||||||
import csv
|
|
||||||
import codecs
|
import codecs
|
||||||
|
import csv
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
|
|
||||||
from django.http import HttpResponse
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.http import HttpResponse
|
||||||
|
|
||||||
from settings.serializers import SettingsSerializer
|
|
||||||
from common.utils import validate_ip, get_ip_city, get_logger
|
from common.utils import validate_ip, get_ip_city, get_logger
|
||||||
from common.db import fields
|
from settings.serializers import SettingsSerializer
|
||||||
from .const import DEFAULT_CITY
|
from .const import DEFAULT_CITY
|
||||||
|
|
||||||
|
|
||||||
logger = get_logger(__name__)
|
logger = get_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,7 +92,7 @@ def _get_instance_field_value(
|
||||||
|
|
||||||
|
|
||||||
def model_to_dict_for_operate_log(
|
def model_to_dict_for_operate_log(
|
||||||
instance, include_model_fields=True, include_related_fields=True
|
instance, include_model_fields=True, include_related_fields=False
|
||||||
):
|
):
|
||||||
model_need_continue_fields = ['date_updated']
|
model_need_continue_fields = ['date_updated']
|
||||||
m2m_need_continue_fields = ['history_passwords']
|
m2m_need_continue_fields = ['history_passwords']
|
||||||
|
@ -106,7 +103,7 @@ def model_to_dict_for_operate_log(
|
||||||
|
|
||||||
if include_related_fields:
|
if include_related_fields:
|
||||||
opts = instance._meta
|
opts = instance._meta
|
||||||
for f in chain(opts.many_to_many, opts.related_objects):
|
for f in opts.many_to_many:
|
||||||
value = []
|
value = []
|
||||||
if instance.pk is not None:
|
if instance.pk is not None:
|
||||||
related_name = getattr(f, 'attname', '') or getattr(f, 'related_name', '')
|
related_name = getattr(f, 'attname', '') or getattr(f, 'related_name', '')
|
||||||
|
|
|
@ -5,8 +5,8 @@ from functools import partial
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from common.serializers.fields import EncryptedField, ObjectRelatedField, LabeledChoiceField
|
|
||||||
from common.serializers import CommonBulkSerializerMixin
|
from common.serializers import CommonBulkSerializerMixin
|
||||||
|
from common.serializers.fields import EncryptedField, ObjectRelatedField, LabeledChoiceField
|
||||||
from common.utils import pretty_string, get_logger
|
from common.utils import pretty_string, get_logger
|
||||||
from common.validators import PhoneValidator
|
from common.validators import PhoneValidator
|
||||||
from rbac.builtin import BuiltinRole
|
from rbac.builtin import BuiltinRole
|
||||||
|
@ -25,24 +25,25 @@ __all__ = [
|
||||||
logger = get_logger(__file__)
|
logger = get_logger(__file__)
|
||||||
|
|
||||||
|
|
||||||
|
def default_system_roles():
|
||||||
|
return [BuiltinRole.system_user.get_role()]
|
||||||
|
|
||||||
|
|
||||||
|
def default_org_roles():
|
||||||
|
return [BuiltinRole.org_user.get_role()]
|
||||||
|
|
||||||
|
|
||||||
class RolesSerializerMixin(serializers.Serializer):
|
class RolesSerializerMixin(serializers.Serializer):
|
||||||
system_roles = ObjectRelatedField(
|
system_roles = ObjectRelatedField(
|
||||||
queryset=Role.system_roles, attrs=('id', 'display_name'),
|
queryset=Role.system_roles, attrs=('id', 'display_name'),
|
||||||
label=_("System roles"), many=True
|
label=_("System roles"), many=True, default=default_system_roles
|
||||||
)
|
)
|
||||||
org_roles = ObjectRelatedField(
|
org_roles = ObjectRelatedField(
|
||||||
queryset=Role.org_roles, attrs=('id', 'display_name'),
|
queryset=Role.org_roles, attrs=('id', 'display_name'),
|
||||||
label=_("Org roles"), many=True
|
label=_("Org roles"), many=True, required=False,
|
||||||
|
default=default_org_roles
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def get_system_roles_display(user):
|
|
||||||
return user.system_roles.display
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def get_org_roles_display(user):
|
|
||||||
return user.org_roles.display
|
|
||||||
|
|
||||||
def pop_roles_if_need(self, fields):
|
def pop_roles_if_need(self, fields):
|
||||||
request = self.context.get("request")
|
request = self.context.get("request")
|
||||||
view = self.context.get("view")
|
view = self.context.get("view")
|
||||||
|
@ -55,6 +56,7 @@ class RolesSerializerMixin(serializers.Serializer):
|
||||||
action = view.action or "list"
|
action = view.action or "list"
|
||||||
if action in ("partial_bulk_update", "bulk_update", "partial_update", "update"):
|
if action in ("partial_bulk_update", "bulk_update", "partial_update", "update"):
|
||||||
action = "create"
|
action = "create"
|
||||||
|
|
||||||
model_cls_field_mapper = {
|
model_cls_field_mapper = {
|
||||||
SystemRoleBinding: ["system_roles"],
|
SystemRoleBinding: ["system_roles"],
|
||||||
OrgRoleBinding: ["org_roles"],
|
OrgRoleBinding: ["org_roles"],
|
||||||
|
|
Loading…
Reference in New Issue