feat: 协作分享增加读写控制

pull/10118/head
Eric 2023-04-03 13:55:27 +08:00 committed by Jiangjie.Bai
parent 4c5e47cb99
commit 789eb0cf36
4 changed files with 47 additions and 6 deletions

View File

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
#
from django.db.models import TextChoices
from django.db.models import TextChoices, IntegerChoices
from django.utils.translation import ugettext_lazy as _
@ -65,3 +65,8 @@ class SessionType(TextChoices):
normal = 'normal', _('Normal')
tunnel = 'tunnel', _('Tunnel')
command = 'command', _('Command')
class ActionPermission(IntegerChoices):
read_only = 0, _('Read Only')
writable = 1, _('Writable')

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.17 on 2023-04-03 04:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('terminal', '0059_session_account_id'),
]
operations = [
migrations.AddField(
model_name='sessionsharing',
name='action_permission',
field=models.IntegerField(default=1, verbose_name='Action permission'),
),
]

View File

@ -31,6 +31,10 @@ class SessionSharing(JMSBaseModel, OrgModelMixin):
)
users = models.TextField(blank=True, verbose_name=_("User"))
action_permission = models.IntegerField(
default=1, verbose_name=_('Action permission')
)
class Meta:
ordering = ('-date_created',)
verbose_name = _('Session sharing')
@ -142,3 +146,6 @@ class SessionJoinRecord(JMSBaseModel, OrgModelMixin):
self.date_left = timezone.now()
self.is_finished = True
self.save()
@property
def action_permission(self):
return self.sharing.action_permission

View File

@ -1,8 +1,11 @@
from rest_framework import serializers
from django.utils.translation import ugettext_lazy as _
from orgs.mixins.serializers import OrgResourceModelSerializerMixin
from common.utils.random import random_string
from rest_framework import serializers
from common.serializers.fields import LabeledChoiceField
from common.utils.common import pretty_string
from common.utils.random import random_string
from orgs.mixins.serializers import OrgResourceModelSerializerMixin
from ..const import ActionPermission
from ..models import SessionSharing, SessionJoinRecord
__all__ = ['SessionSharingSerializer', 'SessionJoinRecordSerializer']
@ -12,13 +15,17 @@ class SessionSharingSerializer(OrgResourceModelSerializerMixin):
users = serializers.ListSerializer(
child=serializers.CharField(max_length=36), allow_null=True, write_only=True
)
action_permission = LabeledChoiceField(
default=1, choices=ActionPermission.choices, write_only=True, label=_('Action permission')
)
class Meta:
model = SessionSharing
fields_mini = ['id']
fields_small = fields_mini + [
'verify_code', 'is_active', 'expired_time', 'created_by',
'date_created', 'date_updated', 'users', 'users_display'
'date_created', 'date_updated', 'users', 'users_display',
'action_permission'
]
fields_fk = ['session', 'creator']
fields = fields_small + fields_fk
@ -40,13 +47,17 @@ class SessionSharingSerializer(OrgResourceModelSerializerMixin):
class SessionJoinRecordSerializer(OrgResourceModelSerializerMixin):
action_permission = LabeledChoiceField(
choices=ActionPermission.choices, read_only=True, label=_('Action permission')
)
class Meta:
model = SessionJoinRecord
fields_mini = ['id']
fields_small = fields_mini + [
'joiner_display', 'verify_code', 'date_joined', 'date_left',
'remote_addr', 'login_from', 'is_success', 'reason', 'is_finished',
'created_by', 'date_created', 'date_updated'
'created_by', 'date_created', 'date_updated', 'action_permission'
]
fields_fk = ['session', 'sharing', 'joiner']
fields = fields_small + fields_fk