Skip to content

Commit

Permalink
allow any length language and default to empty string
Browse files Browse the repository at this point in the history
  • Loading branch information
chdorner committed Jun 6, 2023
1 parent 141cdb0 commit b6f9df6
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 11 deletions.
2 changes: 1 addition & 1 deletion activities/migrations/0017_post_language.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name="post",
name="language",
field=models.CharField(max_length=50, null=True),
field=models.CharField(default=""),
),
]
15 changes: 9 additions & 6 deletions activities/models/post.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ class Types(models.TextChoices):
content = models.TextField()

# The language of the content
language = models.CharField(max_length=50, null=True)
language = models.CharField(default="")

type = models.CharField(
max_length=20,
Expand Down Expand Up @@ -497,7 +497,7 @@ def create_local(
sorted([tag[: Hashtag.MAXIMUM_LENGTH] for tag in parser.hashtags])
or None
)
if language is None:
if language is None or language == "":
language = author.config_identity.preferred_posting_language

# Make the Post object
Expand Down Expand Up @@ -548,7 +548,7 @@ def edit_local(
self.summary = summary or None
self.sensitive = bool(summary) if sensitive is None else sensitive
self.visibility = visibility
if language is None:
if language is None or language == "":
language = self.author.config_identity.preferred_posting_language
self.language = language
self.edited = timezone.now()
Expand Down Expand Up @@ -662,7 +662,7 @@ def to_ap(self) -> dict:
"tag": [],
"attachment": [],
}
if self.language is not None:
if self.language != "":
value["contentMap"] = {
self.language: value["content"],
}
Expand Down Expand Up @@ -889,7 +889,7 @@ def by_ap(cls, data, create=False, update=False, fetch_author=False) -> "Post":
post.published = parse_ld_date(data.get("published"))
post.edited = parse_ld_date(data.get("updated"))
post.in_reply_to = data.get("inReplyTo")
post.language = get_language(data)
post.language = get_language(data) or ""
# Mentions and hashtags
post.hashtags = []
for tag in get_list(data, "tag"):
Expand Down Expand Up @@ -1124,13 +1124,16 @@ def to_mastodon_json(self, interactions=None, bookmarks=None, identity=None):
self.Visibilities.mentioned: "direct",
self.Visibilities.local_only: "public",
}
language = self.language
if self.language == "":
language = None
value = {
"id": self.pk,
"uri": self.object_uri,
"created_at": format_ld_date(self.published),
"account": self.author.to_mastodon_json(include_counts=False),
"content": self.safe_content_remote(),
"language": self.language,
"language": language,
"visibility": visibility_mapping[self.visibility],
"sensitive": self.sensitive,
"spoiler_text": self.summary or "",
Expand Down
8 changes: 7 additions & 1 deletion api/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -422,13 +422,19 @@ def from_identity(
activities_models.Post.Visibilities.mentioned: "direct",
activities_models.Post.Visibilities.local_only: "public",
}
preferred_posting_language = None
if identity.config_identity.preferred_posting_language != "":
preferred_posting_language = (
identity.config_identity.preferred_posting_language
)

return cls.parse_obj(
{
"posting:default:visibility": visibility_mapping[
identity.config_identity.default_post_visibility
],
"posting:default:sensitive": False,
"posting:default:language": identity.config_identity.preferred_posting_language,
"posting:default:language": preferred_posting_language,
"reading:expand:media": "default",
"reading:expand:spoilers": identity.config_identity.expand_content_warnings,
}
Expand Down
2 changes: 1 addition & 1 deletion core/models/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ class IdentityOptions(pydantic.BaseModel):
visible_reaction_counts: bool = True
expand_content_warnings: bool = False
boosts_on_profile: bool = True
preferred_posting_language: str | None = None
preferred_posting_language: str = ""

class DomainOptions(pydantic.BaseModel):
site_name: str = ""
Expand Down
4 changes: 2 additions & 2 deletions tests/activities/models/test_post.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ def test_content_map(remote_identity):
create=True,
)
assert post.content == "Hi World"
assert post.language is None
assert post.language == ""

post2 = Post.by_ap(
data={
Expand All @@ -272,7 +272,7 @@ def test_content_map(remote_identity):
create=True,
)
assert post2.content == "Hey World"
assert post2.language is None
assert post2.language == ""

post3 = Post.by_ap(
data={
Expand Down

0 comments on commit b6f9df6

Please sign in to comment.