mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-04 04:39:16 +02:00
use a dedicated serializer to handle library creation
This commit is contained in:
parent
0b2fe8439a
commit
3caa03aedf
7 changed files with 182 additions and 46 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue