Files
colio/projects/serializers.py

51 lines
1.7 KiB
Python

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__'