use a dedicated serializer to handle library creation

This commit is contained in:
Eliot Berriot 2018-04-10 22:47:13 +02:00
parent 0b2fe8439a
commit 3caa03aedf
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
7 changed files with 182 additions and 46 deletions

View file

@ -179,26 +179,7 @@ class LibraryViewSet(viewsets.GenericViewSet):
@transaction.atomic
def create(self, request, *args, **kwargs):
try:
actor_url = request.data['actor_url']
except KeyError:
raise ValidationError('Missing actor_url')
try:
actor = actors.get_actor(actor_url)
library_data = library.get_library_data(actor.url)
except Exception as e:
raise ValidationError('Error while fetching actor and library')
library_actor = actors.SYSTEM_ACTORS['library'].get_actor_instance()
follow, created = models.Follow.objects.get_or_create(
actor=library_actor,
target=actor,
)
serializer = serializers.FollowSerializer(follow)
activity.deliver(
serializer.data,
on_behalf_of=library_actor,
to=[actor.url]
)
return response.Response({}, status=201)
serializer = serializers.APILibraryCreateSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
library = serializer.save()
return response.Response(serializer.data, status=201)