Look up followers url to determine post privacy

This commit is contained in:
Mouse Reeve 2021-08-28 10:40:52 -07:00
parent e9d951e4cd
commit 53d9ff87d9
2 changed files with 8 additions and 0 deletions

View file

@ -275,6 +275,8 @@ def resolve_remote_id(
): ):
"""take a remote_id and return an instance, creating if necessary""" """take a remote_id and return an instance, creating if necessary"""
if model: # a bonus check we can do if we already know the model if model: # a bonus check we can do if we already know the model
if isinstance(model, str):
model = apps.get_model(f"bookwyrm.{model}", require_ready=True)
result = model.find_existing_by_remote_id(remote_id) result = model.find_existing_by_remote_id(remote_id)
if result and not refresh: if result and not refresh:
return result if not get_activity else result.to_activity_dataclass() return result if not get_activity else result.to_activity_dataclass()

View file

@ -224,8 +224,14 @@ class PrivacyField(ActivitypubFieldMixin, models.CharField):
original = getattr(instance, self.name) original = getattr(instance, self.name)
to = data.to to = data.to
cc = data.cc cc = data.cc
# we need to figure out who this is to get their followers link
user = activitypub.resolve_remote_id(self.attributedTo, model="User")
if to == [self.public]: if to == [self.public]:
setattr(instance, self.name, "public") setattr(instance, self.name, "public")
elif to == [user.followers_url]:
setattr(instance, self.name, "followers")
elif cc == []: elif cc == []:
setattr(instance, self.name, "direct") setattr(instance, self.name, "direct")
elif self.public in cc: elif self.public in cc: