diff --git a/backend/api/views.py b/backend/api/views.py index 5c44592..bb32023 100644 --- a/backend/api/views.py +++ b/backend/api/views.py @@ -599,6 +599,7 @@ class UserViewSet(viewsets.ModelViewSet): # Missing flavors with community avg and followed circle avg missing_flavors = Flavor.objects.exclude(id__in=rated_ids) \ + .exclude(category__name='Packs and other') \ .select_related('category') \ .annotate( average_rating=Avg('ratings__score'), diff --git a/backend/entrypoint.sh b/backend/entrypoint.sh index 8381fdb..81a35c3 100755 --- a/backend/entrypoint.sh +++ b/backend/entrypoint.sh @@ -5,8 +5,13 @@ set -e # Apply database migrations echo "Applying database migrations..." +python manage.py makemigrations python manage.py migrate +# Create cache table for ratelimiting +echo "Creating cache table..." +python manage.py createcachetable + # Collect static files echo "Collecting static files..." python manage.py collectstatic --no-input @@ -20,6 +25,10 @@ chmod -R 777 django_cache echo "Syncing flavors..." python manage.py sync_flavors +# Seed legacy flavors if needed +echo "Seeding legacy flavors..." +python manage.py seed_legacy_flavors + # Start the server using Gunicorn echo "Starting Gunicorn..." exec gunicorn holy_backend.wsgi:application --bind 0.0.0.0:8000 --workers 3 --timeout 120 diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx index f14697e..cbb1588 100644 --- a/frontend/src/pages/Dashboard.tsx +++ b/frontend/src/pages/Dashboard.tsx @@ -139,7 +139,7 @@ const Dashboard: React.FC = () => { // Performance Optimization: Memoize categories and filtered lists const exploreCategories = useMemo(() => { if (!data) return ['All']; - const cats = new Set(data.missing_flavors.map(f => f.category_name)); + const cats = new Set(data.missing_flavors.filter(f => f.category_name !== 'Packs and other').map(f => f.category_name)); return ['All', ...Array.from(cats).sort()]; }, [data]); @@ -287,12 +287,12 @@ const Dashboard: React.FC = () => { - + @@ -300,7 +300,7 @@ const Dashboard: React.FC = () => { fullWidth size="small" variant={ratedSort === 'rating' ? 'contained' : 'text'} onClick={() => setRatedSort('rating')} - sx={{ textTransform: 'none', fontWeight: 'bold', borderRadius: 0.8, height: { xs: 38, lg: 30 }, fontSize: '0.8rem' }} + sx={{ textTransform: 'none', fontWeight: 'bold', borderRadius: 0.8, height: 32, px: { xs: 1, sm: 2 }, fontSize: '0.8rem', whiteSpace: 'nowrap', minWidth: 'fit-content' }} > {t('dashboard.rating')} @@ -463,12 +463,12 @@ const Dashboard: React.FC = () => { - + @@ -476,7 +476,7 @@ const Dashboard: React.FC = () => { fullWidth size="small" variant={exploreSort === 'circle' ? 'contained' : 'text'} onClick={() => setExploreSort('circle')} - sx={{ textTransform: 'none', fontWeight: 'bold', borderRadius: 0.8, height: { xs: 38, lg: 30 }, px: 2, fontSize: '0.8rem' }} + sx={{ textTransform: 'none', fontWeight: 'bold', borderRadius: 0.8, height: 32, px: { xs: 1, sm: 2 }, fontSize: '0.8rem', whiteSpace: 'nowrap', minWidth: 'fit-content' }} > {t('dashboard.circleRating')}