Supporting alternative name and value properties in attachments

merge-requests/30/head
Bob Mottram 2022-05-11 19:04:58 +01:00
parent 471c9d4a72
commit ed9854de10
3 changed files with 43 additions and 17 deletions

21
pgp.py
View File

@ -238,7 +238,11 @@ def set_pgp_pub_key(actor_json: {}, pgp_pub_key: str) -> None:
continue
if not property_value['type'].endswith('PropertyValue'):
continue
property_value['value'] = pgp_pub_key
prop_value_name, _ = \
get_attachment_property_value(property_value)
if not prop_value_name:
continue
property_value[prop_value_name] = pgp_pub_key
return
newpgp_pub_key = {
@ -297,7 +301,11 @@ def set_pgp_fingerprint(actor_json: {}, fingerprint: str) -> None:
continue
if not property_value['type'].endswith('PropertyValue'):
continue
property_value['value'] = fingerprint.strip()
prop_value_name, _ = \
get_attachment_property_value(property_value)
if not prop_value_name:
continue
property_value[prop_value_name] = fingerprint.strip()
return
newpgp_fingerprint = {
@ -509,12 +517,13 @@ def _get_pgp_public_key_from_actor(signing_priv_key_pem: str,
for tag in actor_json['attachment']:
if not isinstance(tag, dict):
continue
if not tag.get('value'):
prop_value_name, _ = get_attachment_property_value(tag)
if not prop_value_name:
continue
if not isinstance(tag['value'], str):
if not isinstance(tag[prop_value_name], str):
continue
if contains_pgp_public_key(tag['value']):
return tag['value']
if contains_pgp_public_key(tag[prop_value_name]):
return tag[prop_value_name]
return None

View File

@ -1106,14 +1106,22 @@ def get_gender_from_bio(base_dir: str, actor: str, person_cache: {},
for tag in tags_list:
if not isinstance(tag, dict):
continue
if not tag.get('name') or not tag.get('value'):
name_value = None
if tag.get('name'):
name_value = tag['name']
if tag.get('schema:name'):
name_value = tag['schema:name']
if not name_value:
continue
if tag['name'].lower() == \
prop_value_name, _ = get_attachment_property_value(tag)
if not prop_value_name:
continue
if name_value.lower() == \
translate['gender'].lower():
bio_found = tag['value']
bio_found = name_value
break
if tag['name'].lower().startswith(pronoun_str):
bio_found = tag['value']
if name_value.lower().startswith(pronoun_str):
bio_found = name_value
break
# the field name could be anything,
# just look at the value
@ -1121,9 +1129,13 @@ def get_gender_from_bio(base_dir: str, actor: str, person_cache: {},
for tag in tags_list:
if not isinstance(tag, dict):
continue
if not tag.get('name') or not tag.get('value'):
if not tag.get('name') and not tag.get('schema:name'):
continue
gender = _gender_from_string(translate, tag['value'])
prop_value_name, _ = get_attachment_property_value(tag)
if not prop_value_name:
continue
gender = \
_gender_from_string(translate, tag[prop_value_name])
if gender:
return gender
# if not then use the bio

View File

@ -802,11 +802,16 @@ def html_header_with_person_markup(css_filename: str, instance_title: str,
)
for attach_json in actor_json['attachment']:
if not attach_json.get('name'):
if not attach_json.get('schema:name'):
continue
prop_value_name, _ = get_attachment_property_value(attach_json)
if not prop_value_name:
continue
if not attach_json.get('value'):
continue
name = attach_json['name'].lower()
value = attach_json['value']
if attach_json.get('name'):
name = attach_json['name'].lower()
else:
name = attach_json['schema:name'].lower()
value = attach_json[prop_value_name]
for og_tag in og_tags:
if name != og_tag:
continue