Show birthday on profile

main
Bob Mottram 2024-01-07 22:19:29 +00:00
parent 75ee6aa468
commit fb0fd99941
2 changed files with 57 additions and 5 deletions

View File

@ -4852,3 +4852,33 @@ def get_reply_to(post_json_object: {}) -> str:
if post_json_object.get('inReplyToBook'):
return post_json_object['inReplyToBook']
return ''
def is_valid_date(date_str: str) -> bool:
"""is the given date valid?
"""
if not isinstance(date_str, str):
return False
if '-' not in date_str:
return False
date_sections = date_str.split('-')
if len(date_sections) != 3:
return False
date_sect_ctr = 0
for section_str in date_sections:
if not section_str.isdigit():
return False
if date_sect_ctr == 0:
date_year = int(section_str)
if date_year < 1920 or date_year > 3000:
return False
elif date_sect_ctr == 1:
date_month = int(section_str)
if date_month < 1 or date_month > 12:
return False
elif date_sect_ctr == 2:
date_day = int(section_str)
if date_day < 1 or date_day > 31:
return False
date_sect_ctr += 1
return True

View File

@ -38,6 +38,7 @@ from utils import local_actor_url
from utils import get_reply_interval_hours
from utils import get_account_timezone
from utils import remove_eol
from utils import is_valid_date
from languages import get_actor_languages
from skills import get_skills
from theme import get_themes_list
@ -382,6 +383,10 @@ def html_profile_after_search(authorized: bool,
send_block_filename, False):
send_blocks_str = translate['FollowWarning']
birth_date = ''
if profile_json.get('vcard:bday'):
birth_date = profile_json['vcard:bday']
profile_str = \
_get_profile_header_after_search(base_dir, nickname, domain,
default_timeline,
@ -400,7 +405,8 @@ def html_profile_after_search(authorized: bool,
website_url, repo_url,
send_blocks_str,
authorized,
person_url, no_of_books)
person_url, no_of_books,
birth_date)
domain_full = get_full_domain(domain, port)
@ -586,7 +592,8 @@ def _get_profile_header(base_dir: str, http_prefix: str, nickname: str,
actor_proxied: str,
person_url: str,
no_of_books: int,
authorized: bool) -> str:
authorized: bool,
birth_date: str) -> str:
"""The header of the profile screen, containing background
image and avatar
"""
@ -686,6 +693,11 @@ def _get_profile_header(base_dir: str, http_prefix: str, nickname: str,
other_accounts_html += '</p>\n'
if ctr > 0:
html_str += other_accounts_html
if is_valid_date(birth_date):
birth_date = remove_html(birth_date)
html_str += \
' <p>' + translate['Birthday'] + ': ' + \
birth_date + '</p>\n'
if featured_hashtags:
featured_hashtags += '\n'
html_str += \
@ -745,7 +757,8 @@ def _get_profile_header_after_search(base_dir: str,
send_blocks_str: str,
authorized: bool,
person_url: str,
no_of_books: str) -> str:
no_of_books: str,
birth_date: str) -> str:
"""The header of a searched for handle, containing background
image and avatar
"""
@ -841,7 +854,11 @@ def _get_profile_header_after_search(base_dir: str,
other_accounts_html += '</p>\n'
if ctr > 0:
html_str += other_accounts_html
if is_valid_date(birth_date):
birth_date = remove_html(birth_date)
html_str += \
' <p>' + translate['Birthday'] + ': ' + \
birth_date + '</p>\n'
if featured_hashtags:
featured_hashtags += '\n'
if website_url:
@ -1253,6 +1270,10 @@ def html_profile(signing_priv_key_pem: str,
attached_shared_items = \
actor_attached_shares_as_html(profile_json, max_shares_on_profile)
birth_date = ''
if profile_json.get('vcard:bday'):
birth_date = profile_json['vcard:bday']
profile_header_str = \
_get_profile_header(base_dir, http_prefix,
nickname,
@ -1267,7 +1288,8 @@ def html_profile(signing_priv_key_pem: str,
access_keys, joined_date,
occupation_name,
actor_proxied, actor,
no_of_books, authorized)
no_of_books, authorized,
birth_date)
# keyboard navigation
user_path_str = '/users/' + nickname