From 48df30dbd8ba8701aa8f3137303914d396b9aaca Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Mon, 2 Apr 2018 22:12:28 +0200 Subject: [PATCH] We now persist system accounts to database --- api/funkwhale_api/federation/actors.py | 18 ++++++++++-------- api/tests/federation/test_actors.py | 9 +++++++++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/api/funkwhale_api/federation/actors.py b/api/funkwhale_api/federation/actors.py index 69033f5ca..a4e24912b 100644 --- a/api/funkwhale_api/federation/actors.py +++ b/api/funkwhale_api/federation/actors.py @@ -49,15 +49,17 @@ class SystemActor(object): additional_attributes = {} def get_actor_instance(self): - a = models.Actor( - **self.get_instance_argument( - self.id, - name=self.name, - summary=self.summary, - **self.additional_attributes - ) + args = self.get_instance_argument( + self.id, + name=self.name, + summary=self.summary, + **self.additional_attributes + ) + url = args.pop('url') + a, created = models.Actor.objects.get_or_create( + url=url, + defaults=args, ) - a.pk = self.id return a def get_instance_argument(self, id, name, summary, **kwargs): diff --git a/api/tests/federation/test_actors.py b/api/tests/federation/test_actors.py index b3b0f8df0..127b3c15e 100644 --- a/api/tests/federation/test_actors.py +++ b/api/tests/federation/test_actors.py @@ -6,6 +6,7 @@ from django.utils import timezone from rest_framework import exceptions from funkwhale_api.federation import actors +from funkwhale_api.federation import models from funkwhale_api.federation import serializers from funkwhale_api.federation import utils @@ -188,3 +189,11 @@ def test_test_post_outbox_handles_create_note( to=[actor.url], on_behalf_of=actors.SYSTEM_ACTORS['test'].get_actor_instance() ) + + +def test_getting_actor_instance_persists_in_db(db): + test = actors.SYSTEM_ACTORS['test'].get_actor_instance() + from_db = models.Actor.objects.get(url=test.url) + + for f in test._meta.fields: + assert getattr(from_db, f.name) == getattr(test, f.name)