From feb5d9b74fa1e8454eaaf29afae3643c6d7c81f1 Mon Sep 17 00:00:00 2001 From: Andrew Godwin Date: Fri, 11 Nov 2022 22:02:43 -0700 Subject: Got up to incoming posts working --- users/models/identity.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'users/models/identity.py') diff --git a/users/models/identity.py b/users/models/identity.py index 7dff492..4ec0342 100644 --- a/users/models/identity.py +++ b/users/models/identity.py @@ -55,7 +55,11 @@ class Identity(StatorModel): state = StateField(IdentityStates) local = models.BooleanField() - users = models.ManyToManyField("users.User", related_name="identities") + users = models.ManyToManyField( + "users.User", + related_name="identities", + blank=True, + ) username = models.CharField(max_length=500, blank=True, null=True) # Must be a display domain if present @@ -141,18 +145,14 @@ class Identity(StatorModel): return None @classmethod - def by_actor_uri(cls, uri) -> Optional["Identity"]: + def by_actor_uri(cls, uri, create=False) -> "Identity": try: return cls.objects.get(actor_uri=uri) except cls.DoesNotExist: - return None - - @classmethod - def by_actor_uri_with_create(cls, uri) -> "Identity": - try: - return cls.objects.get(actor_uri=uri) - except cls.DoesNotExist: - return cls.objects.create(actor_uri=uri, local=False) + if create: + return cls.objects.create(actor_uri=uri, local=False) + else: + raise KeyError(f"No identity found matching {uri}") ### Dynamic properties ### @@ -236,7 +236,7 @@ class Identity(StatorModel): self.outbox_uri = document.get("outbox") self.summary = document.get("summary") self.username = document.get("preferredUsername") - if "@value" in self.username: + if self.username and "@value" in self.username: self.username = self.username["@value"] self.manually_approves_followers = document.get( "as:manuallyApprovesFollowers" -- cgit v1.2.3