Merge branch 'main' into list-not-loading
This commit is contained in:
@ -24,7 +24,7 @@ LAST_DAY = 15
|
||||
class AnnualSummary(View):
|
||||
"""display a summary of the year for the current user"""
|
||||
|
||||
def get(self, request, username, year):
|
||||
def get(self, request, username, year): # pylint: disable=too-many-locals
|
||||
"""get response"""
|
||||
|
||||
user = get_user_from_username(request.user, username)
|
||||
@ -79,6 +79,9 @@ class AnnualSummary(View):
|
||||
)
|
||||
ratings_stats = ratings.aggregate(Avg("rating"))
|
||||
|
||||
# annual goal status
|
||||
goal_status = get_goal_status(user, year)
|
||||
|
||||
data = {
|
||||
"summary_user": user,
|
||||
"year": year,
|
||||
@ -101,6 +104,7 @@ class AnnualSummary(View):
|
||||
review.book.id for review in ratings.filter(rating=5)
|
||||
],
|
||||
"paginated_years": paginated_years,
|
||||
"goal_status": goal_status,
|
||||
}
|
||||
|
||||
return TemplateResponse(request, "annual_summary/layout.html", data)
|
||||
@ -208,3 +212,17 @@ def get_books_from_shelfbooks(books_ids):
|
||||
books = models.Edition.objects.filter(id__in=books_ids).order_by(ordered)
|
||||
|
||||
return books
|
||||
|
||||
|
||||
def get_goal_status(user, year):
|
||||
"""return a dict with the year's goal status"""
|
||||
|
||||
try:
|
||||
goal = models.AnnualGoal.objects.get(user=user, year=year)
|
||||
except models.AnnualGoal.DoesNotExist:
|
||||
return None
|
||||
|
||||
if goal.privacy != "public":
|
||||
return None
|
||||
|
||||
return dict(**goal.progress, **{"goal": goal.goal})
|
||||
|
@ -26,17 +26,17 @@ class Feed(View):
|
||||
|
||||
def post(self, request, tab):
|
||||
"""save feed settings form, with a silent validation fail"""
|
||||
settings_saved = False
|
||||
filters_applied = False
|
||||
form = forms.FeedStatusTypesForm(request.POST, instance=request.user)
|
||||
if form.is_valid():
|
||||
# workaround to avoid broadcasting this change
|
||||
user = form.save(commit=False)
|
||||
user.save(broadcast=False, update_fields=["feed_status_types"])
|
||||
settings_saved = True
|
||||
filters_applied = True
|
||||
|
||||
return self.get(request, tab, settings_saved)
|
||||
return self.get(request, tab, filters_applied)
|
||||
|
||||
def get(self, request, tab, settings_saved=False):
|
||||
def get(self, request, tab, filters_applied=False):
|
||||
"""user's homepage with activity feed"""
|
||||
tab = [s for s in STREAMS if s["key"] == tab]
|
||||
tab = tab[0] if tab else STREAMS[0]
|
||||
@ -63,7 +63,7 @@ class Feed(View):
|
||||
"goal_form": forms.GoalForm(),
|
||||
"feed_status_types_options": FeedFilterChoices,
|
||||
"allowed_status_types": request.user.feed_status_types,
|
||||
"settings_saved": settings_saved,
|
||||
"filters_applied": filters_applied,
|
||||
"path": f"/{tab['key']}",
|
||||
"annual_summary_year": get_annual_summary_year(),
|
||||
},
|
||||
|
@ -72,9 +72,13 @@ class Shelf(View):
|
||||
"start_date"
|
||||
)
|
||||
|
||||
if shelf_identifier:
|
||||
books = books.annotate(shelved_date=F("shelfbook__shelved_date"))
|
||||
else:
|
||||
# sorting by shelved date will cause duplicates in the "all books" view
|
||||
books = books.annotate(shelved_date=F("updated_date"))
|
||||
books = books.annotate(
|
||||
rating=Subquery(reviews.values("rating")[:1]),
|
||||
shelved_date=F("shelfbook__shelved_date"),
|
||||
start_date=Subquery(reading.values("start_date")[:1]),
|
||||
finish_date=Subquery(reading.values("finish_date")[:1]),
|
||||
author=Subquery(
|
||||
|
Reference in New Issue
Block a user