80 lines
2.8 KiB
Python
80 lines
2.8 KiB
Python
from rest_framework import views
|
|
from rest_framework.permissions import IsAuthenticated
|
|
from rest_framework.response import Response
|
|
|
|
from apps.api.permissions import RBACPermission
|
|
from apps.api.serializers.organization_slack_settings import OrganizationSlackSettingsSerializer
|
|
from apps.auth_token.auth import PluginAuthentication
|
|
from apps.user_management.models import Organization
|
|
from common.insight_log import EntityEvent, write_resource_insight_log
|
|
|
|
|
|
class SlackTeamSettingsAPIView(views.APIView):
|
|
authentication_classes = (PluginAuthentication,)
|
|
permission_classes = (IsAuthenticated, RBACPermission)
|
|
|
|
rbac_permissions = {
|
|
"get": [RBACPermission.Permissions.CHATOPS_READ],
|
|
"put": [RBACPermission.Permissions.CHATOPS_UPDATE_SETTINGS],
|
|
}
|
|
|
|
serializer_class = OrganizationSlackSettingsSerializer
|
|
|
|
def get(self, request):
|
|
organization = self.request.auth.organization
|
|
serializer = self.serializer_class(organization)
|
|
return Response(serializer.data)
|
|
|
|
def put(self, request):
|
|
organization = self.request.auth.organization
|
|
prev_state = organization.insight_logs_serialized
|
|
serializer = self.serializer_class(organization, data=request.data)
|
|
serializer.is_valid(raise_exception=True)
|
|
serializer.save()
|
|
new_state = serializer.instance.insight_logs_serialized
|
|
write_resource_insight_log(
|
|
instance=serializer.instance,
|
|
author=self.request.user,
|
|
event=EntityEvent.UPDATED,
|
|
prev_state=prev_state,
|
|
new_state=new_state,
|
|
)
|
|
return Response(serializer.data)
|
|
|
|
|
|
class AcknowledgeReminderOptionsAPIView(views.APIView):
|
|
authentication_classes = (PluginAuthentication,)
|
|
permission_classes = (IsAuthenticated, RBACPermission)
|
|
|
|
rbac_permissions = {
|
|
"get": [RBACPermission.Permissions.CHATOPS_READ],
|
|
}
|
|
|
|
def get(self, request):
|
|
choices = []
|
|
for item in Organization.ACKNOWLEDGE_REMIND_CHOICES:
|
|
choices.append(
|
|
{"value": item[0], "sec_value": Organization.ACKNOWLEDGE_REMIND_DELAY[item[0]], "display_name": item[1]}
|
|
)
|
|
return Response(choices)
|
|
|
|
|
|
class UnAcknowledgeTimeoutOptionsAPIView(views.APIView):
|
|
authentication_classes = (PluginAuthentication,)
|
|
permission_classes = (IsAuthenticated, RBACPermission)
|
|
|
|
rbac_permissions = {
|
|
"get": [RBACPermission.Permissions.CHATOPS_READ],
|
|
}
|
|
|
|
def get(self, request):
|
|
choices = []
|
|
for item in Organization.UNACKNOWLEDGE_TIMEOUT_CHOICES:
|
|
choices.append(
|
|
{
|
|
"value": item[0],
|
|
"sec_value": Organization.UNACKNOWLEDGE_TIMEOUT_DELAY[item[0]],
|
|
"display_name": item[1],
|
|
}
|
|
)
|
|
return Response(choices)
|