mirror of
https://github.com/narrrl/holy-flavor-rater.git
synced 2026-11-03 16:41:27 +01:00
Merge branch 'main' into narl.io
This commit is contained in:
commit
d1a83dd6df
4 files changed
+375
-234
No files matched your search
@@ -108,13 +108,14 @@ class FlavorSerializer(serializers.ModelSerializer):
|
||||
category_name = serializers.CharField(source='category.name', read_only=True)
|
||||
category_slug = serializers.CharField(source='category.slug', read_only=True)
|
||||
average_rating = serializers.FloatField(read_only=True)
|
||||
followed_average_rating = serializers.FloatField(read_only=True)
|
||||
user_rating = serializers.SerializerMethodField()
|
||||
ratings = RatingSerializer(many=True, read_only=True)
|
||||
image_url = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Flavor
|
||||
fields = ['id', 'name', 'category', 'category_name', 'category_slug', 'description', 'average_rating', 'user_rating', 'ratings', 'image_url', 'is_available', 'is_legacy', 'shop_url']
|
||||
fields = ['id', 'name', 'category', 'category_name', 'category_slug', 'description', 'average_rating', 'followed_average_rating', 'user_rating', 'ratings', 'image_url', 'is_available', 'is_legacy', 'shop_url']
|
||||
|
||||
def get_image_url(self, obj):
|
||||
if obj.image:
|
||||
|
||||
@@ -508,13 +508,19 @@ class UserViewSet(viewsets.ModelViewSet):
|
||||
def dashboard(self, request):
|
||||
user = request.user
|
||||
rated_ids = user.ratings.values_list('flavor_id', flat=True)
|
||||
followed_users = user.following.all()
|
||||
|
||||
# Annotate with community average rating so it's available for sorting/display
|
||||
# Missing flavors with community avg and followed circle avg
|
||||
missing_flavors = Flavor.objects.exclude(id__in=rated_ids) \
|
||||
.select_related('category') \
|
||||
.annotate(average_rating=Avg('ratings__score'))
|
||||
.annotate(
|
||||
average_rating=Avg('ratings__score'),
|
||||
followed_average_rating=Avg('ratings__score', filter=models.Q(ratings__user__in=followed_users))
|
||||
).order_by('category__name', 'name')
|
||||
|
||||
rated_flavors = user.ratings.select_related('flavor', 'flavor__category')
|
||||
rated_flavors = user.ratings.select_related('flavor', 'flavor__category') \
|
||||
.prefetch_related('replies', 'replies__user') \
|
||||
.order_by('-created_at')
|
||||
|
||||
return Response({
|
||||
'user': UserSerializer(user).data,
|
||||
|
||||
Reference in new issue
Block a user