kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
				
				
				
			
		
			
				
	
	
		
			61 wiersze
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			61 wiersze
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
| from django.conf import settings
 | |
| from rest_framework import serializers
 | |
| 
 | |
| from funkwhale_api.common import middleware, preferences, utils
 | |
| from funkwhale_api.federation import utils as federation_utils
 | |
| 
 | |
| from . import models
 | |
| 
 | |
| 
 | |
| def actor_detail_username(request, username, redirect_to_ap):
 | |
|     validator = federation_utils.get_actor_data_from_username
 | |
|     try:
 | |
|         username_data = validator(username)
 | |
|     except serializers.ValidationError:
 | |
|         return []
 | |
| 
 | |
|     queryset = (
 | |
|         models.Actor.objects.filter(
 | |
|             preferred_username__iexact=username_data["username"]
 | |
|         )
 | |
|         .local()
 | |
|         .select_related("attachment_icon")
 | |
|     )
 | |
|     try:
 | |
|         obj = queryset.get()
 | |
|     except models.Actor.DoesNotExist:
 | |
|         return []
 | |
| 
 | |
|     if redirect_to_ap:
 | |
|         raise middleware.ApiRedirect(obj.fid)
 | |
|     obj_url = utils.join_url(
 | |
|         settings.FUNKWHALE_URL,
 | |
|         utils.spa_reverse("actor_detail", kwargs={"username": obj.preferred_username}),
 | |
|     )
 | |
|     metas = [
 | |
|         {"tag": "meta", "property": "og:url", "content": obj_url},
 | |
|         {"tag": "meta", "property": "og:title", "content": obj.display_name},
 | |
|         {"tag": "meta", "property": "og:type", "content": "profile"},
 | |
|     ]
 | |
| 
 | |
|     if obj.attachment_icon:
 | |
|         metas.append(
 | |
|             {
 | |
|                 "tag": "meta",
 | |
|                 "property": "og:image",
 | |
|                 "content": obj.attachment_icon.download_url_medium_square_crop,
 | |
|             }
 | |
|         )
 | |
| 
 | |
|     if preferences.get("federation__enabled"):
 | |
|         metas.append(
 | |
|             {
 | |
|                 "tag": "link",
 | |
|                 "rel": "alternate",
 | |
|                 "type": "application/activity+json",
 | |
|                 "href": obj.fid,
 | |
|             }
 | |
|         )
 | |
| 
 | |
|     return metas
 |