Ejemplo n.º 1
0
class TeamGroupDetailSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    members = UserBaseSerializer(many=True, read_only=True)
    creator = UserBaseSerializer(read_only=True)

    class Meta:
        model = TeamGroup
        fields = '__all__'
Ejemplo n.º 2
0
class CollectedDocUserDetailSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    c_doc = CollectedDocBaseSerializer(read_only=True)
    user = UserBaseSerializer(read_only=True)
    creator = UserBaseSerializer(read_only=True)

    class Meta:
        model = CollectedDocUser
        fields = '__all__'
Ejemplo n.º 3
0
class SystemSettingListSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)
    value = serializers.SerializerMethodField(read_only=True)

    def get_value(self, obj):
        try:
            if obj.set_type == 30:
                return int(obj.value)
            if obj.set_type == 40:
                return round(float(obj.value))
            if obj.set_type == 50:
                return list(obj.value)
            if obj.set_type == 60:
                if obj.value.lower() == 'true':
                    return True
                else:
                    return False
            if obj.set_type == 70:
                return dict(obj.value)
            return obj.value
        except Exception as error:
            return obj.value

    class Meta:
        model = SystemSetting
        fields = ('id', 'key', 'name', 'value', 'description', 'set_type', 'created_time', 'creator')
Ejemplo n.º 4
0
class FileGroupListSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)

    class Meta:
        model = FileGroup
        fields = ('id', 'name', 'group_type', 'created_time', 'creator')
Ejemplo n.º 5
0
class FileAttachmentListSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)

    class Meta:
        model = FileAttachment
        fields = ('id', 'group', 'file_name', 'file_path', 'file_source', 'file_type', 'file_size', 'creator', 'created_time')
Ejemplo n.º 6
0
class CollectedDocDetailSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)
    member_perm = serializers.SerializerMethodField(read_only=True)

    def get_member_perm(self, obj):
        user = self.context['request'].user
        if not user.is_anonymous:
            if obj.creator == user or user.is_admin:
                return 30  # 文集管理员
            perms = [0]
            user_perms = obj.users.filter(user=user).values_list('perm', flat=True)
            if user_perms:
                perms.append(max(user_perms))
            user_member_teams = obj.teams.filter(c_doc_team_users__user=user).all()
            for user_member_team in user_member_teams:
                team_perms = user_member_team.c_doc_team_users.filter(user=user).values_list('perm', flat=True)
                if team_perms:
                    perms.append(max(team_perms))
            return max(perms)
        else:
            return 0

    class Meta:
        model = CollectedDoc
        fields = '__all__'
Ejemplo n.º 7
0
class SystemSettingDetailSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)
    value = serializers.CharField(read_only=True)

    def get_value(self, obj):
        try:
            if obj.set_type == 30:
                return int(obj.value)
            if obj.set_type == 40:
                return round(float(obj.value))
            if obj.set_type == 50:
                return list(obj.value)
            if obj.set_type == 60:
                if obj.lower() == 'true':
                    return True
                else:
                    return False
            if obj.set_type == 70:
                return dict(obj.value)
            return obj.value
        except Exception as error:
            return obj.value

    class Meta:
        model = SystemSetting
        fields = '__all__'
Ejemplo n.º 8
0
class RegisterCodeListSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)

    class Meta:
        model = RegisterCode
        fields = ('id', 'code', 'all_cnt', 'used_cnt', 'status', 'creator', 'created_time')
Ejemplo n.º 9
0
class CollectedDocUserListSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    c_doc = CollectedDocBaseSerializer(read_only=True)
    user = UserBaseSerializer(read_only=True)

    class Meta:
        model = CollectedDocUser
        fields = ('id', 'c_doc', 'user', 'perm', 'created_time')
Ejemplo n.º 10
0
class RegisterCodeDetailSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)

    class Meta:
        model = RegisterCode
        fields = '__all__'
Ejemplo n.º 11
0
class DocTagListSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S',
                                             read_only=True)
    creator = UserBaseSerializer(read_only=True)

    class Meta:
        model = DocTag
        fields = ('id', 'name', 'created_time', 'creator')
Ejemplo n.º 12
0
class FileAttachmentDetailSerializer(serializers.ModelSerializer):
    group = FileGroupBaseSerializer(read_only=True)
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)

    class Meta:
        model = FileAttachment
        fields = '__all__'
Ejemplo n.º 13
0
class DocHistorySerializer(serializers.ModelSerializer):
    doc = DocBaseSerializer(read_only=True)
    creator = UserBaseSerializer(read_only=True)
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S',
                                             read_only=True)

    class Meta:
        model = DocHistory
        fields = ('id', 'created_time', 'creator', 'doc')
Ejemplo n.º 14
0
class EmailVerificationCodeListSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    expired_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)

    class Meta:
        model = EmailVerificationCode
        fields = '__all__'
Ejemplo n.º 15
0
class TeamGroupListSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    members_cnt = serializers.SerializerMethodField(read_only=True)
    creator = UserBaseSerializer(read_only=True)

    def get_members_cnt(self, obj):
        return obj.members.count()

    class Meta:
        model = TeamGroup
        fields = ('id', 'name', 'members_cnt', 'created_time', 'creator')
Ejemplo n.º 16
0
class AnnouncementListSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)
    desc = serializers.SerializerMethodField(read_only=True)

    def get_desc(self, obj):
        return md_to_text(obj.content)

    class Meta:
        model = Announcement
        fields = ('id', 'title', 'link', 'is_publish', 'creator', 'created_time', 'desc')
Ejemplo n.º 17
0
class DocDetailSerializer(serializers.ModelSerializer):
    c_doc = CollectedDocBaseSerializer(read_only=True)
    parent_doc = DocBaseSerializer(read_only=True)
    tags = DocTagBaseSerializer(read_only=True, many=True)
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S',
                                             read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S',
                                              read_only=True)
    creator = UserBaseSerializer(read_only=True)

    class Meta:
        model = Doc
        fields = '__all__'
Ejemplo n.º 18
0
class TeamGroupActionSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)

    def create(self, validated_data):
        instance = super().create(validated_data)
        instance.creator = self.context['request'].user
        instance.save()
        return instance

    class Meta:
        model = TeamGroup
        fields = '__all__'
Ejemplo n.º 19
0
class CollectedDocTeamDetailSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)
    c_doc = CollectedDocBaseSerializer(read_only=True)
    team_group = TeamGroupBaseSerializer(read_only=True)

    members = serializers.SerializerMethodField(read_only=True)
    members_cnt = serializers.SerializerMethodField(read_only=True)

    def get_members_cnt(self, obj):
        return obj.team_group.members.count()

    def get_members(self, obj):
        return CollectedDocTeamUserBaseSerializer(obj.c_doc_team_users.all(), many=True).data

    class Meta:
        model = CollectedDocTeam
        fields = '__all__'
Ejemplo n.º 20
0
class CollectedDocListSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)
    docs_cnt = serializers.SerializerMethodField(read_only=True)
    member_perm = serializers.SerializerMethodField(read_only=True)
    latest_doc = serializers.SerializerMethodField(read_only=True)

    def get_docs_cnt(self, obj):
        return obj.docs.count()

    def get_member_perm(self, obj):
        user = self.context['request'].user
        if not user.is_anonymous:
            if obj.creator == user or user.is_admin:
                return 30  # 文集管理员
            perms = [0]
            user_perms = obj.users.filter(user=user).values_list('perm', flat=True)
            if user_perms:
                perms.append(max(user_perms))
            user_member_teams = obj.teams.filter(c_doc_team_users__user=user).all()
            for user_member_team in user_member_teams:
                team_perms = user_member_team.c_doc_team_users.filter(user=user).values_list('perm', flat=True)
                if team_perms:
                    perms.append(max(team_perms))
            return max(perms)
        else:
            return 0

    def get_latest_doc(self, obj):
        doc = obj.docs.filter(status=20, is_deleted=False).order_by('-created_time').first()
        if doc:
            return {'id': doc.id, 'title': doc.title}
        else:
            return None

    class Meta:
        model = CollectedDoc
        fields = ('id', 'name', 'intro', 'docs_cnt', 'perm', 'created_time', 'creator', 'member_perm', 'latest_doc')
Ejemplo n.º 21
0
class CollectedDocTeamActionSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S', read_only=True)
    creator = UserBaseSerializer(read_only=True)
    members = serializers.JSONField(required=False, write_only=True)

    def create(self, validated_data):
        members = validated_data.pop('members', None)
        instance = super().create(validated_data)
        instance.creator = self.context['request'].user
        instance.save()
        update_team_members(instance, members)
        return instance

    def update(self, instance, validated_data):
        members = validated_data.pop('members', None)
        instance = super().update(instance, validated_data)
        update_team_members(instance, members)
        return instance

    class Meta:
        model = CollectedDocTeam
        fields = '__all__'
Ejemplo n.º 22
0
class DocActionSerializer(serializers.ModelSerializer):
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S',
                                             read_only=True)
    modified_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S',
                                              read_only=True)
    creator = UserBaseSerializer(read_only=True)
    tags = serializers.ListField(write_only=True, required=False)

    def create(self, validated_data):
        user = self.context['request'].user
        tags = validated_data.pop('tags', [])
        instance = super().create(validated_data)
        instance.creator = user
        for tag_name in tags:
            tag = DocTag.objects.filter(name=tag_name, creator=user).first()
            if not tag:
                tag = DocTag.objects.create(name=tag_name, creator=user)
            instance.tags.add(tag)
        instance.save()
        return instance

    def update(self, instance, validated_data):
        user = self.context['request'].user
        tags = validated_data.pop('tags', [])
        instance = super().update(instance, validated_data)
        instance.tags.clear()
        for tag_name in tags:
            tag = DocTag.objects.filter(name=tag_name, creator=user).first()
            if not tag:
                tag = DocTag.objects.create(name=tag_name, creator=user)
            instance.tags.add(tag)
        instance.save()
        return instance

    class Meta:
        model = Doc
        fields = '__all__'
Ejemplo n.º 23
0
class CollectedDocTeamUserBaseSerializer(serializers.ModelSerializer):
    user = UserBaseSerializer(read_only=True)

    class Meta:
        model = CollectedDocTeamUser
        fields = ('id', 'user', 'perm')
Ejemplo n.º 24
0
class DocListSerializer(serializers.ModelSerializer):
    c_doc = CollectedDocBaseSerializer(read_only=True)
    parent_doc = DocBaseSerializer(read_only=True)
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M:%S',
                                             read_only=True)
    creator = UserBaseSerializer(read_only=True)
    child_docs = serializers.SerializerMethodField(read_only=True)
    member_perm = serializers.SerializerMethodField(read_only=True)
    content_text = serializers.SerializerMethodField(read_only=True)

    def get_child_docs(self, obj):
        child = []
        for child_doc in Doc.objects.filter(parent_doc=obj):
            print(f'{obj} has chind_doc :{child_doc}')
            _child_docs = self.get_child_docs(child_doc)
            if len(_child_docs) > 0:
                child_doc_item = {
                    'id':
                    child_doc.id,
                    'title':
                    child_doc.title,
                    'child_docs':
                    _child_docs,
                    'created_time':
                    child_doc.created_time.strftime('%Y-%m-%d %H:%M:%S')
                }
                child.append(child_doc_item)
            else:
                child_doc_item = {
                    'id':
                    child_doc.id,
                    'title':
                    child_doc.title,
                    'child_docs': [],
                    'created_time':
                    child_doc.created_time.strftime('%Y-%m-%d %H:%M:%S')
                }
                child.append(child_doc_item)
        return child

    def get_member_perm(self, obj):
        user = self.context['request'].user
        if not user.is_anonymous:
            if obj.creator == user or user.is_admin:
                return 30  # 文集管理员
            perms = [0]
            user_perms = obj.c_doc.users.filter(user=user).values_list(
                'perm', flat=True)
            if user_perms:
                perms.append(max(user_perms))
            user_member_teams = obj.c_doc.teams.filter(
                c_doc_team_users__user=user).all()
            for user_member_team in user_member_teams:
                team_perms = user_member_team.c_doc_team_users.filter(
                    user=user).values_list('perm', flat=True)
                if team_perms:
                    perms.append(max(team_perms))
            return max(perms)
        return 0

    def get_content_text(self, obj):
        return md_to_text(obj.content)

    class Meta:
        model = Doc
        fields = ('id', 'c_doc', 'parent_doc', 'child_docs', 'title',
                  'created_time', 'status', 'creator', 'sort', 'member_perm',
                  'content_text')