Icon and image for Identity could be a list
This commit is contained in:
		
							parent
							
								
									24b5d08f9b
								
							
						
					
					
						commit
						ea99f65c26
					
				
							
								
								
									
										14
									
								
								core/ld.py
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								core/ld.py
									
									
									
									
									
								
							@ -456,6 +456,20 @@ def parse_ld_date(value: str | None) -> datetime.datetime | None:
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_first_image_url(data) -> str | None:
 | 
			
		||||
    """
 | 
			
		||||
    'icon' and 'image' fields might be a dict or a list. Return the first
 | 
			
		||||
    'url' for something that looks to be for an image.
 | 
			
		||||
    """
 | 
			
		||||
    if isinstance(data, list):
 | 
			
		||||
        for itm in data:
 | 
			
		||||
            if isinstance(itm, dict) and "url" in itm:
 | 
			
		||||
                return itm["url"]
 | 
			
		||||
    elif isinstance(data, dict):
 | 
			
		||||
        return data.get("url")
 | 
			
		||||
    return None
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def media_type_from_filename(filename):
 | 
			
		||||
    _, extension = os.path.splitext(filename)
 | 
			
		||||
    if extension == ".png":
 | 
			
		||||
 | 
			
		||||
@ -14,7 +14,13 @@ from django.utils.functional import lazy
 | 
			
		||||
from core.exceptions import ActorMismatchError
 | 
			
		||||
from core.files import get_remote_file
 | 
			
		||||
from core.html import sanitize_post, strip_html
 | 
			
		||||
from core.ld import canonicalise, format_ld_date, get_list, media_type_from_filename
 | 
			
		||||
from core.ld import (
 | 
			
		||||
    canonicalise,
 | 
			
		||||
    format_ld_date,
 | 
			
		||||
    get_first_image_url,
 | 
			
		||||
    get_list,
 | 
			
		||||
    media_type_from_filename,
 | 
			
		||||
)
 | 
			
		||||
from core.models import Config
 | 
			
		||||
from core.signatures import HttpSignature, RsaKeys
 | 
			
		||||
from core.uploads import upload_namer
 | 
			
		||||
@ -487,8 +493,8 @@ class Identity(StatorModel):
 | 
			
		||||
        self.manually_approves_followers = document.get("manuallyApprovesFollowers")
 | 
			
		||||
        self.public_key = document.get("publicKey", {}).get("publicKeyPem")
 | 
			
		||||
        self.public_key_id = document.get("publicKey", {}).get("id")
 | 
			
		||||
        self.icon_uri = document.get("icon", {}).get("url")
 | 
			
		||||
        self.image_uri = document.get("image", {}).get("url")
 | 
			
		||||
        self.icon_uri = get_first_image_url(document.get("icon", None))
 | 
			
		||||
        self.image_uri = get_first_image_url(document.get("image", None))
 | 
			
		||||
        self.discoverable = document.get("toot:discoverable", True)
 | 
			
		||||
        # Profile links/metadata
 | 
			
		||||
        self.metadata = []
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user