Keep e621 metadata on downloaded posts; clear up account roles
Roles: - JakeBreathild is now staff + superuser (the real account); the 'jake' smoke-test account was demoted to a regular user - /me exposes is_superuser and the account page shows an admin badge e621 metadata: - MediaItem gains e621_post_id and e621_data (trimmed post payload: tags by category, rating, score, favourites, comments, sources, description, pools, relationships, file info, uploader) - Download to Library accepts the post payload from the SPA and stores it; the item's custom rating is seeded from the e621 rating when empty - Library detail shows an e621 metadata card: link to the in-app post, score/favourites/comments, taxonomy-coloured tags, DText description, sources and pools; grid cards get an e621 badge and fall back to the e621 rating for their colour (display_rating) - Guest visibility now also considers e621 tags, so downloaded explicit content is hidden from anonymous visitors
This commit is contained in:
@@ -19,6 +19,7 @@ class MediaItemSerializer(serializers.ModelSerializer):
|
||||
rating = serializers.ChoiceField(choices=["", "s", "q", "e"], required=False)
|
||||
locations = MediaLocationSerializer(many=True, read_only=True)
|
||||
j_id = serializers.SerializerMethodField()
|
||||
display_rating = serializers.SerializerMethodField()
|
||||
filename = serializers.SerializerMethodField()
|
||||
extension = serializers.SerializerMethodField()
|
||||
kind = serializers.SerializerMethodField()
|
||||
@@ -33,6 +34,7 @@ class MediaItemSerializer(serializers.ModelSerializer):
|
||||
"md5",
|
||||
"size",
|
||||
"rating",
|
||||
"display_rating",
|
||||
"tags",
|
||||
"notes",
|
||||
"filename",
|
||||
@@ -40,6 +42,8 @@ class MediaItemSerializer(serializers.ModelSerializer):
|
||||
"kind",
|
||||
"uploaded_by",
|
||||
"uploaded_by_id",
|
||||
"e621_post_id",
|
||||
"e621_data",
|
||||
"locations",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
@@ -49,11 +53,14 @@ class MediaItemSerializer(serializers.ModelSerializer):
|
||||
"j_id",
|
||||
"md5",
|
||||
"size",
|
||||
"display_rating",
|
||||
"filename",
|
||||
"extension",
|
||||
"kind",
|
||||
"uploaded_by",
|
||||
"uploaded_by_id",
|
||||
"e621_post_id",
|
||||
"e621_data",
|
||||
"locations",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
@@ -62,6 +69,13 @@ class MediaItemSerializer(serializers.ModelSerializer):
|
||||
def get_j_id(self, obj):
|
||||
return f"J-{obj.id}"
|
||||
|
||||
def get_display_rating(self, obj):
|
||||
if obj.rating:
|
||||
return obj.rating
|
||||
data = obj.e621_data or {}
|
||||
rating = data.get("rating") if isinstance(data, dict) else None
|
||||
return rating if rating in {"s", "q", "e"} else ""
|
||||
|
||||
def get_uploaded_by(self, obj):
|
||||
return obj.uploaded_by.username if obj.uploaded_by else None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user