mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-03 23:59:15 +02:00
Federation scanning
This commit is contained in:
parent
a3875e3918
commit
125d0eed5e
21 changed files with 450 additions and 80 deletions
|
@ -14,9 +14,23 @@ class NestedLibraryFollowSerializer(serializers.ModelSerializer):
|
|||
fields = ["creation_date", "uuid", "fid", "approved", "modification_date"]
|
||||
|
||||
|
||||
class LibraryScanSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = music_models.LibraryScan
|
||||
fields = [
|
||||
"total_files",
|
||||
"processed_files",
|
||||
"errored_files",
|
||||
"status",
|
||||
"creation_date",
|
||||
"modification_date",
|
||||
]
|
||||
|
||||
|
||||
class LibrarySerializer(serializers.ModelSerializer):
|
||||
actor = federation_serializers.APIActorSerializer()
|
||||
uploads_count = serializers.SerializerMethodField()
|
||||
latest_scan = serializers.SerializerMethodField()
|
||||
follow = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
|
@ -31,6 +45,7 @@ class LibrarySerializer(serializers.ModelSerializer):
|
|||
"uploads_count",
|
||||
"privacy_level",
|
||||
"follow",
|
||||
"latest_scan",
|
||||
]
|
||||
|
||||
def get_uploads_count(self, o):
|
||||
|
@ -42,6 +57,11 @@ class LibrarySerializer(serializers.ModelSerializer):
|
|||
except (AttributeError, IndexError):
|
||||
return None
|
||||
|
||||
def get_latest_scan(self, o):
|
||||
scan = o.scans.order_by("-creation_date").first()
|
||||
if scan:
|
||||
return LibraryScanSerializer(scan).data
|
||||
|
||||
|
||||
class LibraryFollowSerializer(serializers.ModelSerializer):
|
||||
target = common_serializers.RelatedField("uuid", LibrarySerializer(), required=True)
|
||||
|
@ -54,6 +74,9 @@ class LibraryFollowSerializer(serializers.ModelSerializer):
|
|||
|
||||
def validate_target(self, v):
|
||||
actor = self.context["actor"]
|
||||
if v.actor == actor:
|
||||
raise serializers.ValidationError("You cannot follow your own library")
|
||||
|
||||
if v.received_follows.filter(actor=actor).exists():
|
||||
raise serializers.ValidationError("You are already following this library")
|
||||
return v
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue