Merge pull request #77 from prithajnath/prithajnath/add_stackoverflow_support

add StackOverflow to the list of social networks
This commit is contained in:
Sina Atalay 2024-05-23 12:39:25 +03:00 committed by GitHub
commit 17f7854b7d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 27 additions and 9 deletions

View File

@ -831,7 +831,13 @@ class SocialNetwork(RenderCVBaseModel):
"""This class is the data model of a social network.""" """This class is the data model of a social network."""
network: Literal[ network: Literal[
"LinkedIn", "GitHub", "Instagram", "Orcid", "Mastodon", "Twitter" "LinkedIn",
"GitHub",
"Instagram",
"Orcid",
"Mastodon",
"Twitter",
"StackOverflow",
] = pydantic.Field( ] = pydantic.Field(
title="Social Network", title="Social Network",
description="The social network name.", description="The social network name.",
@ -871,6 +877,9 @@ class SocialNetwork(RenderCVBaseModel):
# split domain and username # split domain and username
dummy, username, domain = self.username.split("@") dummy, username, domain = self.username.split("@")
url = f"https://{domain}/@{username}" url = f"https://{domain}/@{username}"
elif self.network == "StackOverflow":
user_id, username = self.username.split("/")
url = f"https://stackoverflow.com/users/{user_id}/{username}"
else: else:
url_dictionary = { url_dictionary = {
"LinkedIn": "https://linkedin.com/in/", "LinkedIn": "https://linkedin.com/in/",
@ -983,18 +992,22 @@ class CurriculumVitae(RenderCVBaseModel):
"Instagram": "\\faInstagram", "Instagram": "\\faInstagram",
"Mastodon": "\\faMastodon", "Mastodon": "\\faMastodon",
"Orcid": "\\faOrcid", "Orcid": "\\faOrcid",
"StackOverflow": "\\faStackOverflow",
"Twitter": "\\faTwitter", "Twitter": "\\faTwitter",
} }
for social_network in self.social_networks: for social_network in self.social_networks:
clean_url = social_network.url.replace("https://", "").rstrip("/") clean_url = social_network.url.replace("https://", "").rstrip("/")
connections.append( connection = {
{ "latex_icon": icon_dictionary[social_network.network],
"latex_icon": icon_dictionary[social_network.network], "url": social_network.url,
"url": social_network.url, "clean_url": clean_url,
"clean_url": clean_url, "placeholder": social_network.username,
"placeholder": social_network.username, }
}
) if social_network.network == "StackOverflow":
username = social_network.username.split("/")[1]
connection["placeholder"] = username
connections.append(connection)
return connections return connections

View File

@ -426,6 +426,11 @@ def test_invalid_social_networks(network, username):
("Orcid", "myusername", "https://orcid.org/myusername"), ("Orcid", "myusername", "https://orcid.org/myusername"),
("Twitter", "myusername", "https://twitter.com/myusername"), ("Twitter", "myusername", "https://twitter.com/myusername"),
("Mastodon", "@myusername@test.org", "https://test.org/@myusername"), ("Mastodon", "@myusername@test.org", "https://test.org/@myusername"),
(
"StackOverflow",
"4567/myusername",
"https://stackoverflow.com/users/4567/myusername",
),
], ],
) )
def test_social_network_url(network, username, expected_url): def test_social_network_url(network, username, expected_url):