| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- # coding=utf-8
- """
- @project: maxkb
- @Author:虎
- @file: system_setting.py
- @date:2024/3/19 16:01
- @desc:
- """
- from drf_spectacular.utils import extend_schema
- from rest_framework.request import Request
- from rest_framework.views import APIView
- from common.auth import TokenAuth
- from common.auth.authentication import has_permissions
- from common.constants.permission_constants import PermissionConstants, RoleConstants
- from django.utils.translation import gettext_lazy as _
- from common.log.log import log
- from common.result import result
- from common.utils.common import encryption
- from models_provider.api.model import DefaultModelResponse
- from system_manage.api.email_setting import EmailSettingAPI
- from system_manage.serializers.email_setting import EmailSettingSerializer
- def encryption_str(_value):
- if isinstance(_value, str):
- return encryption(_value)
- return _value
- def get_email_details(request):
- path = request.path
- body = request.data
- query = request.query_params
- email_host_password = body.get('email_host_password', '')
- return {
- 'path': path,
- 'body': {**body, 'email_host_password': encryption_str(email_host_password)},
- 'query': query
- }
- class SystemSetting(APIView):
- class Email(APIView):
- authentication_classes = [TokenAuth]
- @extend_schema(methods=['PUT'],
- summary=_('Create or update email settings'),
- description=_('Create or update email settings'),
- operation_id=_('Create or update email settings'), # type: ignore
- request=EmailSettingAPI.get_request(),
- responses=EmailSettingAPI.get_response(),
- tags=[_('Email Settings')]) # type: ignore
- @log(menu='Email settings', operate='Create or update email settings',
- get_details=get_email_details)
- @has_permissions(PermissionConstants.EMAIL_SETTING_EDIT, RoleConstants.ADMIN)
- def put(self, request: Request):
- return result.success(
- EmailSettingSerializer.Create(
- data=request.data).update_or_save())
- @extend_schema(
- methods=['POST'],
- summary=_('Test email settings'),
- operation_id=_('Test email settings'), # type: ignore
- request=EmailSettingAPI.get_request(),
- responses=DefaultModelResponse.get_response(),
- tags=[_('Email Settings')] # type: ignore
- )
- @has_permissions(PermissionConstants.EMAIL_SETTING_EDIT, RoleConstants.ADMIN)
- @log(menu='Email settings', operate='Test email settings',
- get_details=get_email_details
- )
- def post(self, request: Request):
- return result.success(
- EmailSettingSerializer.Create(
- data=request.data).is_valid())
- @extend_schema(methods=['GET'],
- summary=_('Get email settings'),
- description=_('Get email settings'),
- operation_id=_('Get email settings'), # type: ignore
- responses=DefaultModelResponse.get_response(),
- tags=[_('Email Settings')]) # type: ignore
- @has_permissions(PermissionConstants.EMAIL_SETTING_READ, RoleConstants.ADMIN)
- def get(self, request: Request):
- return result.success(
- EmailSettingSerializer.one())
|