forked from mirrors/bookwyrm
Look up followers url to determine post privacy
This commit is contained in:
parent
e9d951e4cd
commit
53d9ff87d9
2 changed files with 8 additions and 0 deletions
|
@ -275,6 +275,8 @@ def resolve_remote_id(
|
|||
):
|
||||
"""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 isinstance(model, str):
|
||||
model = apps.get_model(f"bookwyrm.{model}", require_ready=True)
|
||||
result = model.find_existing_by_remote_id(remote_id)
|
||||
if result and not refresh:
|
||||
return result if not get_activity else result.to_activity_dataclass()
|
||||
|
|
|
@ -224,8 +224,14 @@ class PrivacyField(ActivitypubFieldMixin, models.CharField):
|
|||
original = getattr(instance, self.name)
|
||||
to = data.to
|
||||
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]:
|
||||
setattr(instance, self.name, "public")
|
||||
elif to == [user.followers_url]:
|
||||
setattr(instance, self.name, "followers")
|
||||
elif cc == []:
|
||||
setattr(instance, self.name, "direct")
|
||||
elif self.public in cc:
|
||||
|
|
Loading…
Reference in a new issue