class MessageDetailsSerializer(serializers.ModelSerializer): user = SimpleUserSerializer() recipients = SimpleUserSerializer(many=True) class Meta: model = Message fields = ('user', 'recipients')
class TaskDetailsSerializer(ContentTypeAnnotatedSerializer): user = SimpleUserSerializer() skills = SkillSerializer(many=True) assignee = serializers.SerializerMethodField(required=False, read_only=True) applications = SimpleApplicationSerializer(many=True, source='application_set') participation = SimpleParticipationSerializer(many=True, source='participation_set') milestones = SimpleParticipationSerializer(many=True, source='milestone_set') class Meta: model = Task fields = ('user', 'skills', 'assignee', 'applications', 'participation', 'milestones') def get_assignee(self, obj): try: assignee = obj.participation_set.get( (Q(accepted=True) | Q(responded=False)), assignee=True) return { 'user': SimpleUserSerializer(assignee.user).data, 'accepted': assignee.accepted, 'responded': assignee.responded } except: return None
class SavedTaskDetailsSerializer(serializers.ModelSerializer): user = SimpleUserSerializer() task = SimpleTaskSerializer() class Meta: model = SavedTask fields = ('user', 'task')
class TaskRequestDetailsSerializer(serializers.ModelSerializer): user = SimpleUserSerializer() task = SimpleTaskSerializer() class Meta: model = TaskRequest fields = ('user', 'task')
class ParticipationDetailsSerializer(SimpleParticipationSerializer): created_by = SimpleUserSerializer() task = SimpleTaskSerializer() class Meta: model = Participation fields = ('user', 'task', 'created_by')
class SimpleTaskSerializer(ContentTypeAnnotatedSerializer): user = SimpleUserSerializer() class Meta: model = Task fields = ('id', 'user', 'title', 'currency', 'fee', 'closed', 'paid', 'display_fee')
def get_assignee(self, obj): try: assignee = obj.participation_set.get( (Q(accepted=True) | Q(responded=False)), assignee=True) return { 'user': SimpleUserSerializer(assignee.user).data, 'accepted': assignee.accepted, 'responded': assignee.responded } except: return None
class CommentSerializer(serializers.ModelSerializer): user = SimpleUserSerializer(required=False, read_only=True, default=CreateOnlyCurrentUserDefault()) uploads = serializers.SerializerMethodField(read_only=True, required=False) class Meta: model = Comment read_only_fields = ('created_at', ) def get_uploads(self, obj): content_type = ContentType.objects.get_for_model(Comment) uploads = Upload.objects.filter(content_type=content_type, object_id=obj.id) return UploadSerializer(uploads, many=True).data
class SimpleParticipationSerializer(ContentTypeAnnotatedSerializer): user = SimpleUserSerializer() class Meta: model = Participation exclude = ('created_at', )
class ReplyDetailsSerializer(serializers.ModelSerializer): user = SimpleUserSerializer() class Meta: model = Reply fields = ('user',)