from .models import * from .services import * from users.models import User from rest_framework import serializers from notifications.services import * from common.models.choiceModels import * class ProjectListViewSerializer(serializers.ModelSerializer): class Meta: model = Project fields = ['id', 'category', 'thumbnail', 'title', 'view_count', 'like_count', 'scrap_count'] class ProjectCreateSerializer(serializers.ModelSerializer): members = serializers.ListField( child=serializers.CharField(), write_only=True, required=False ) team_name = serializers.CharField(required=False) class Meta: model = Project fields = ['is_team', 'team_name', 'title', 'category', 'members'] read_only_fields = ['owner'] def create(self, validated_data): nicknames = validated_data.pop('members', []) validated_data['owner'] = self.context['request'].user project = Project.objects.create(**validated_data) if not validated_data['is_team']: return project users = User.objects.filter(nickname__in=nicknames) users = list(users) + [validated_data["owner"]] for user in users: new_notification = NotifiationService.create_notification(user=user, note_type=NotificationType.INVITE) ProjectInvitationService.create_project_invitation( project=project, from_user=validated_data['owner'], to_user=user, notification=new_notification ) return project class ProjectTeamSerializer(serializers.ModelSerializer): class Meta: model = ProjectTeamList fields = '__all__'