From 8e65975cd7dd021c7b5fc102872d11a24aee38b5 Mon Sep 17 00:00:00 2001 From: "Jiangjie.Bai" Date: Thu, 30 Jun 2022 12:34:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E5=85=B1=E4=BA=AB=E5=8F=AF=E4=BB=A5=E6=8C=87=E5=AE=9A=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=9A=84=E4=B8=80=E4=BA=9B=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/terminal/api/storage.py | 2 +- ...nsharing_users.py => 0051_sessionsharing_users.py} | 6 +++--- apps/terminal/models/sharing.py | 11 ++++++++++- apps/terminal/serializers/sharing.py | 4 ++-- 4 files changed, 16 insertions(+), 7 deletions(-) rename apps/terminal/migrations/{0050_sessionsharing_users.py => 0051_sessionsharing_users.py} (56%) diff --git a/apps/terminal/api/storage.py b/apps/terminal/api/storage.py index f6222d13a..d9694c337 100644 --- a/apps/terminal/api/storage.py +++ b/apps/terminal/api/storage.py @@ -24,7 +24,7 @@ class BaseStorageViewSetMixin: def destroy(self, request, *args, **kwargs): instance = self.get_object() - if instance.type_null_or_server: + if instance.type_null_or_server or instance.is_default: data = {'msg': _('Deleting the default storage is not allowed')} return Response(data=data, status=status.HTTP_400_BAD_REQUEST) if instance.is_use(): diff --git a/apps/terminal/migrations/0050_sessionsharing_users.py b/apps/terminal/migrations/0051_sessionsharing_users.py similarity index 56% rename from apps/terminal/migrations/0050_sessionsharing_users.py rename to apps/terminal/migrations/0051_sessionsharing_users.py index 9a014a62f..f32224dea 100644 --- a/apps/terminal/migrations/0050_sessionsharing_users.py +++ b/apps/terminal/migrations/0051_sessionsharing_users.py @@ -1,4 +1,4 @@ -# Generated by Django 3.1.14 on 2022-05-17 00:52 +# Generated by Django 3.1.14 on 2022-06-30 03:38 from django.db import migrations, models @@ -6,13 +6,13 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('terminal', '0049_endpoint_redis_port'), + ('terminal', '0050_auto_20220606_1745'), ] operations = [ migrations.AddField( model_name='sessionsharing', name='users', - field=models.CharField(default=list, max_length=1024, verbose_name='User'), + field=models.TextField(blank=True, verbose_name='User'), ), ] diff --git a/apps/terminal/models/sharing.py b/apps/terminal/models/sharing.py index 1968b3f08..6976b09cf 100644 --- a/apps/terminal/models/sharing.py +++ b/apps/terminal/models/sharing.py @@ -3,6 +3,8 @@ import datetime from django.db import models from django.utils.translation import ugettext_lazy as _ from django.utils import timezone +from orgs.utils import tmp_to_root_org +from users.models import User from common.mixins import CommonModelMixin from orgs.mixins.models import OrgModelMixin @@ -28,7 +30,7 @@ class SessionSharing(CommonModelMixin, OrgModelMixin): expired_time = models.IntegerField( default=0, verbose_name=_('Expired time (min)'), db_index=True ) - users = models.CharField(max_length=1024, verbose_name=_("User"), default=list) + users = models.TextField(blank=True, verbose_name=_("User")) class Meta: ordering = ('-date_created', ) @@ -40,6 +42,13 @@ class SessionSharing(CommonModelMixin, OrgModelMixin): def __str__(self): return 'Creator: {}'.format(self.creator) + def users_display(self): + with tmp_to_root_org(): + user_ids = self.users.split(',') + users = User.objects.filter(id__in=user_ids) + users = [str(user) for user in users] + return users + @property def date_expired(self): return self.date_created + datetime.timedelta(minutes=self.expired_time) diff --git a/apps/terminal/serializers/sharing.py b/apps/terminal/serializers/sharing.py index 845c35029..9ae1438f3 100644 --- a/apps/terminal/serializers/sharing.py +++ b/apps/terminal/serializers/sharing.py @@ -9,7 +9,7 @@ __all__ = ['SessionSharingSerializer', 'SessionJoinRecordSerializer'] class SessionSharingSerializer(OrgResourceModelSerializerMixin): users = serializers.ListSerializer( - child=serializers.CharField(max_length=36), write_only=True, default=list, allow_null=True + child=serializers.CharField(max_length=36), allow_null=True, write_only=True ) class Meta: @@ -17,7 +17,7 @@ class SessionSharingSerializer(OrgResourceModelSerializerMixin): fields_mini = ['id'] fields_small = fields_mini + [ 'verify_code', 'is_active', 'expired_time', 'created_by', - 'date_created', 'date_updated', 'users' + 'date_created', 'date_updated', 'users', 'users_display' ] fields_fk = ['session', 'creator'] fields = fields_small + fields_fk