mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-06 03:39:55 +02:00
Federation of avatars
This commit is contained in:
parent
b86971c305
commit
f107656586
20 changed files with 214 additions and 126 deletions
|
@ -180,6 +180,7 @@ class AttachmentQuerySet(models.QuerySet):
|
|||
"mutation_attachment",
|
||||
"covered_track",
|
||||
"covered_artist",
|
||||
"iconed_actor",
|
||||
]
|
||||
query = None
|
||||
for field in related_fields:
|
||||
|
|
|
@ -5,13 +5,9 @@ Compute different sizes of image used for Album covers and User avatars
|
|||
from versatileimagefield.image_warmer import VersatileImageFieldWarmer
|
||||
|
||||
from funkwhale_api.common.models import Attachment
|
||||
from funkwhale_api.music.models import Album
|
||||
from funkwhale_api.users.models import User
|
||||
|
||||
|
||||
MODELS = [
|
||||
(Album, "cover", "square"),
|
||||
(User, "avatar", "square"),
|
||||
(Attachment, "file", "attachment_square"),
|
||||
]
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ class RelatedField(serializers.RelatedField):
|
|||
self.related_field_name = related_field_name
|
||||
self.serializer = serializer
|
||||
self.filters = kwargs.pop("filters", None)
|
||||
self.queryset_filter = kwargs.pop("queryset_filter", None)
|
||||
try:
|
||||
kwargs["queryset"] = kwargs.pop("queryset")
|
||||
except KeyError:
|
||||
|
@ -36,10 +37,16 @@ class RelatedField(serializers.RelatedField):
|
|||
filters.update(self.filters(self.context))
|
||||
return filters
|
||||
|
||||
def filter_queryset(self, queryset):
|
||||
if self.queryset_filter:
|
||||
queryset = self.queryset_filter(queryset, self.context)
|
||||
return queryset
|
||||
|
||||
def to_internal_value(self, data):
|
||||
try:
|
||||
queryset = self.get_queryset()
|
||||
filters = self.get_filters(data)
|
||||
queryset = self.filter_queryset(queryset)
|
||||
return queryset.get(**filters)
|
||||
except ObjectDoesNotExist:
|
||||
self.fail(
|
||||
|
@ -318,3 +325,16 @@ class ContentSerializer(serializers.Serializer):
|
|||
|
||||
def get_html(self, o):
|
||||
return utils.render_html(o.text, o.content_type)
|
||||
|
||||
|
||||
class NullToEmptDict(object):
|
||||
def get_attribute(self, o):
|
||||
attr = super().get_attribute(o)
|
||||
if attr is None:
|
||||
return {}
|
||||
return attr
|
||||
|
||||
def to_representation(self, v):
|
||||
if not v:
|
||||
return v
|
||||
return super().to_representation(v)
|
||||
|
|
|
@ -327,8 +327,11 @@ def attach_file(obj, field, file_data, fetch=False):
|
|||
extensions = {"image/jpeg": "jpg", "image/png": "png", "image/gif": "gif"}
|
||||
extension = extensions.get(file_data["mimetype"], "jpg")
|
||||
attachment = models.Attachment(mimetype=file_data["mimetype"])
|
||||
|
||||
filename = "cover-{}.{}".format(obj.uuid, extension)
|
||||
name_fields = ["uuid", "full_username", "pk"]
|
||||
name = [getattr(obj, field) for field in name_fields if getattr(obj, field, None)][
|
||||
0
|
||||
]
|
||||
filename = "{}-{}.{}".format(field, name, extension)
|
||||
if "url" in file_data:
|
||||
attachment.url = file_data["url"]
|
||||
else:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue