Commit f2a98dd6 authored by jiangweidong's avatar jiangweidong
Browse files

feat: 完成会话分享可设置1、5分钟时限,且可分享给指定人

parent b560f02e
Showing with 13 additions and 15 deletions
+13 -15
# Generated by Django 3.1.14 on 2022-05-12 07:22
# Generated by Django 3.1.14 on 2022-05-17 00:52
import common.db.encoder
from django.db import migrations, models
......@@ -13,7 +12,7 @@ class Migration(migrations.Migration):
operations = [
migrations.AddField(
model_name='sessionsharing',
name='meta',
field=models.JSONField(default=dict, encoder=common.db.encoder.ModelJSONFieldEncoder, verbose_name='Meta'),
name='users',
field=models.CharField(default=list, max_length=1024, verbose_name='User'),
),
]
......@@ -4,7 +4,6 @@ from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils import timezone
from common.db.encoder import ModelJSONFieldEncoder
from common.mixins import CommonModelMixin
from orgs.mixins.models import OrgModelMixin
from .session import Session
......@@ -29,7 +28,7 @@ class SessionSharing(CommonModelMixin, OrgModelMixin):
expired_time = models.IntegerField(
default=0, verbose_name=_('Expired time (min)'), db_index=True
)
meta = models.JSONField(encoder=ModelJSONFieldEncoder, default=dict, verbose_name=_("Meta"))
users = models.CharField(max_length=1024, verbose_name=_("User"), default=list)
class Meta:
ordering = ('-date_created', )
......@@ -56,8 +55,7 @@ class SessionSharing(CommonModelMixin, OrgModelMixin):
return False, _('Link not active')
if not self.is_expired:
return False, _('Link expired')
allow_users = self.meta.get('users', [])
if allow_users and str(joiner.id) not in allow_users:
if self.users and str(joiner.id) not in self.users.split(','):
return False, _('User not allowed to join')
return True, ''
......
......@@ -7,26 +7,27 @@ from ..models import SessionSharing, SessionJoinRecord
__all__ = ['SessionSharingSerializer', 'SessionJoinRecordSerializer']
class SessionSharingMetaSerializer(serializers.Serializer):
class SessionSharingSerializer(OrgResourceModelSerializerMixin):
users = serializers.ListSerializer(
child=serializers.CharField(max_length=36), write_only=True, default=dict
child=serializers.CharField(max_length=36), write_only=True, default=list, allow_null=True
)
class SessionSharingSerializer(OrgResourceModelSerializerMixin):
meta = SessionSharingMetaSerializer()
class Meta:
model = SessionSharing
fields_mini = ['id']
fields_small = fields_mini + [
'verify_code', 'is_active', 'expired_time', 'created_by',
'date_created', 'date_updated', 'meta'
'date_created', 'date_updated', 'users'
]
fields_fk = ['session', 'creator']
fields = fields_small + fields_fk
read_only_fields = ['verify_code']
def save(self, **kwargs):
users = self.validated_data.get('users', [])
self.validated_data['users'] = ','.join(users)
return super().save(**kwargs)
def create(self, validated_data):
validated_data['verify_code'] = random_string(4)
session = validated_data.get('session')
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment