class ConnectionDetailsSerializer(serializers.ModelSerializer): from_user = SimpleUserSerializer() to_user = SimpleUserSerializer() class Meta: model = Connection fields = ('from_user', 'to_user')
class ChannelDetailsSerializer(serializers.ModelSerializer): created_by = SimpleUserSerializer() participants = SimpleUserSerializer(many=True) class Meta: model = Channel fields = ('created_by', 'participants')
class AbstractEstimateDetailsSerializer(serializers.ModelSerializer): user = SimpleUserSerializer() task = SimpleTaskSerializer() moderated_by = SimpleUserSerializer() reviewed_by = SimpleUserSerializer() class Meta: model = Estimate fields = ('user', 'task', 'moderated_by', 'reviewed_by')
class SimpleAbstractEstimateSerializer(ContentTypeAnnotatedModelSerializer): user = SimpleUserSerializer() moderated_by = SimpleUserSerializer() reviewed_by = SimpleUserSerializer() activities = NestedWorkActivitySerializer(many=True) class Meta: model = AbstractEstimate fields = ('id', 'user', 'task', 'status', 'introduction', 'activities', 'moderated_by', 'moderator_comment', 'moderated_at', 'reviewed_by', 'reviewer_comment', 'reviewed_at')
class SavedTaskDetailsSerializer(serializers.ModelSerializer): user = SimpleUserSerializer() task = SimpleTaskSerializer() class Meta: model = SavedTask fields = ('user', 'task')
class ProfileDetailsSerializer(SimpleProfileSerializer): user = SimpleUserSerializer() btc_wallet = SimpleBTCWalletSerializer() class Meta: model = UserProfile fields = ('user', 'city', 'skills', 'btc_wallet')
class SimpleActivitySerializer(serializers.ModelSerializer): action = serializers.CharField(source='verb') activity_type = serializers.SerializerMethodField() activity = GenericRelatedField( { get_user_model(): SimpleUserSerializer(), Channel: ChannelSerializer(), ChannelUser: ChannelUserSerializer(), Message: MessageSerializer(), Comment: CommentSerializer(), Upload: UploadSerializer(), Connection: ConnectionSerializer(), Task: SimpleTaskSerializer(), Application: ApplicationSerializer(), Participation: ParticipationSerializer(), Estimate: SimpleEstimateSerializer(), Quote: SimpleQuoteSerializer(), ProgressEvent: SimpleProgressEventSerializer(), ProgressReport: ProgressReportSerializer(), Integration: SimpleIntegrationSerializer(), IntegrationActivity: SimpleIntegrationActivitySerializer() }, source='action_object') class Meta: model = Action exclude = ('verb', 'actor_object_id', 'actor_content_type', 'action_object_object_id', 'action_object_content_type', 'target_object_id', 'target_content_type') def get_activity_type(self, obj): return get_instance_type(obj.action_object)
class ParticipationDetailsSerializer(SimpleParticipationSerializer): created_by = SimpleUserSerializer() task = SimpleTaskSerializer() class Meta: model = Participation fields = ('user', 'task', 'created_by')
class ProgressEventDetailsSerializer(serializers.ModelSerializer): task = SimpleTaskSerializer() created_by = SimpleUserSerializer() class Meta: model = ProgressEvent fields = ('task', 'created_by')
class ProgressReportDetailsSerializer(serializers.ModelSerializer): user = SimpleUserSerializer() event = SimpleProgressEventSerializer() class Meta: model = SavedTask fields = ('user', 'event')
def get_user(self, obj): current_user = self.get_current_user() if current_user: receiver = obj.get_receiver(current_user) if receiver: return SimpleUserSerializer(receiver).data return None
class ChannelUserSerializer(ContentTypeAnnotatedModelSerializer): channel = SimpleChannelSerializer() user = SimpleUserSerializer() class Meta: model = ChannelUser fields = '__all__'
class TaskRequestDetailsSerializer(serializers.ModelSerializer): user = SimpleUserSerializer() task = SimpleTaskSerializer() class Meta: model = TaskRequest fields = ('user', 'task')
class ProjectDetailsSerializer(ContentTypeAnnotatedModelSerializer): user = SimpleUserSerializer() tasks = SimpleTaskSerializer(many=True) class Meta: model = Project fields = ('user', 'tasks')
class TimeEntryDetailsSerializer(serializers.ModelSerializer): user = SimpleUserSerializer() task = SimpleTaskSerializer() class Meta: model = TimeEntry fields = ('user', 'task')
class SocialLinkDetailsSerializer(DetailAnnotatedSerializer): user = SimpleUserSerializer() platform = SocialPlatformSerializer() class Meta: model = SocialLink fields = ('user', 'platform')
class SimpleTaskSerializer(ContentTypeAnnotatedModelSerializer): user = SimpleUserSerializer() class Meta: model = Task fields = ('id', 'user', 'title', 'currency', 'fee', 'closed', 'paid', 'display_fee')
class ActivitySerializer(SimpleActivitySerializer): actor_type = serializers.SerializerMethodField() target_type = serializers.SerializerMethodField() actor = GenericRelatedField({ get_user_model(): SimpleUserSerializer(), Integration: SimpleIntegrationSerializer() }) target = GenericRelatedField({ get_user_model(): SimpleUserSerializer(), Channel: ChannelSerializer(), ChannelUser: ChannelUserSerializer(), Message: MessageSerializer(), Comment: CommentSerializer(), Upload: UploadSerializer(), Connection: ConnectionSerializer(), Task: SimpleTaskSerializer(), Application: ApplicationSerializer(), Participation: ParticipationSerializer(), ProgressEvent: SimpleProgressEventSerializer(), ProgressReport: SimpleProgressReportSerializer(), Integration: SimpleIntegrationSerializer(), IntegrationActivity: SimpleIntegrationActivitySerializer() }) class Meta(SimpleActivitySerializer.Meta): fields = '__all__' exclude = None def get_actor_type(self, obj): return get_instance_type(obj.actor) def get_target_type(self, obj): return get_instance_type(obj.target)
class BlogPostSerializer(serializers.ModelSerializer): created_by = SimpleUserSerializer(required=False, read_only=True, default=CreateOnlyCurrentUserDefault()) class Meta: model = BlogPost fields = '__all__'
class NestedIntegrationMetaSerializer(serializers.ModelSerializer): created_by = SimpleUserSerializer(required=False, read_only=True, default=CreateOnlyCurrentUserDefault()) class Meta: model = IntegrationMeta exclude = ('integration', 'created_at', 'updated_at')
class SimpleTaskSerializer(ContentTypeAnnotatedModelSerializer): user = SimpleUserSerializer() class Meta: model = Task fields = ('id', 'user', 'title', 'summary', 'currency', 'fee', 'bid', 'pay', 'closed', 'paid', 'display_fee', 'type', 'scope', 'is_project', 'is_task')
class NestedTaskParticipationSerializer(ContentTypeAnnotatedModelSerializer): created_by = SimpleUserSerializer(required=False, read_only=True, default=CreateOnlyCurrentUserDefault()) class Meta: model = Participation exclude = ('task', 'created_at')
class NestedWorkPlanSerializer(serializers.ModelSerializer): user = SimpleUserSerializer(required=False, read_only=True, default=CreateOnlyCurrentUserDefault()) class Meta: model = WorkPlan exclude = ('object_id', 'content_type')
def get_user(self, obj): user = self.get_current_user() if user: if obj.participants.count() == 2: for participant in obj.participants.all(): if participant.id != user.id: return SimpleUserSerializer(participant).data return None
class BasicProgressReportSerializer(ContentTypeAnnotatedModelSerializer): user = SimpleUserSerializer() status_display = serializers.CharField(required=False, read_only=True, source='get_status_display') class Meta: model = ProgressReport
class SimpleProgressEventSerializer(ContentTypeAnnotatedModelSerializer): created_by = SimpleUserSerializer() report = BasicProgressReportSerializer(read_only=True, required=False, source='progressreport') class Meta: model = ProgressEvent exclude = ('created_at', )
class ProgressEventDetailsSerializer(serializers.ModelSerializer): task = SimpleTaskSerializer() created_by = SimpleUserSerializer() active_participants = SimpleParticipationSerializer( many=True, source='task.active_participants') class Meta: model = ProgressEvent fields = ('task', 'created_by', 'active_participants')
class CommentSerializer(serializers.ModelSerializer): user = SimpleUserSerializer(required=False, read_only=True, default=CreateOnlyCurrentUserDefault()) uploads = UploadSerializer(read_only=True, required=False, many=True) class Meta: model = Comment read_only_fields = ('created_at', )
class TimeEntrySerializer(ContentTypeAnnotatedModelSerializer, DetailAnnotatedModelSerializer): user = SimpleUserSerializer(required=False, read_only=True, default=CreateOnlyCurrentUserDefault()) class Meta: model = TimeEntry exclude = () read_only_fields = ('created_at', 'updated_at') details_serializer = TimeEntryDetailsSerializer
def get(self, request): user = self.get_object(request) if user is None: return Response( { 'status': 'Unauthorized', 'message': 'You are not logged in' }, status=status.HTTP_401_UNAUTHORIZED) serializer = SimpleUserSerializer(user) return Response(serializer.data)