diff --git a/doc/changelog.rst b/doc/changelog.rst index 393e11860f..c101fe04f5 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -3,6 +3,7 @@ Release Notes ============= +- :feature:`457` You can now order submissions by the number of reviews they have received on the review page. - :feature:`566` The Reply-To field now permits multiple email addresses. - :bug:`579` When organisers changed the event timeframe, already submitted availabilites would have to be changed upon new submission. - :feature:`577` You can now decide if text lengths should be counted in words or in characters when restricting how long they should be. diff --git a/src/pretalx/common/mixins/views.py b/src/pretalx/common/mixins/views.py index 682cb7e068..07449cc6bb 100644 --- a/src/pretalx/common/mixins/views.py +++ b/src/pretalx/common/mixins/views.py @@ -70,9 +70,11 @@ class Sortable: sortable_fields = [] def sort_queryset(self, qs): - sort_key = self.request.GET.get('sort') or getattr( - self, 'default_sort_field', '' - ) + sort_key = self.request.GET.get('sort') + if not sort_key or sort_key == 'default': + sort_key = getattr( + self, 'default_sort_field', '' + ) if sort_key: plain_key = sort_key[1:] if sort_key.startswith('-') else sort_key reverse = not (plain_key == sort_key) diff --git a/src/pretalx/orga/templates/orga/review/dashboard.html b/src/pretalx/orga/templates/orga/review/dashboard.html index 44bb878577..bc3541d235 100644 --- a/src/pretalx/orga/templates/orga/review/dashboard.html +++ b/src/pretalx/orga/templates/orga/review/dashboard.html @@ -3,6 +3,7 @@ {% load i18n %} {% load review_score %} {% load rules %} +{% load url_replace %} {% block content %} {% has_perm 'orga.change_settings' request.user request.event as can_see_settings %} @@ -89,8 +90,15 @@

{% trans "Bravo!!" %}

- - + + {% if can_view_speakers %}{% endif %} diff --git a/src/pretalx/orga/views/review.py b/src/pretalx/orga/views/review.py index 8566711f46..8fd52343ee 100644 --- a/src/pretalx/orga/views/review.py +++ b/src/pretalx/orga/views/review.py @@ -53,9 +53,8 @@ def get_queryset(self): ] ) queryset = self.filter_queryset(queryset) - return ( - queryset.order_by('review_id') - .annotate(has_override=models.Exists(overridden_reviews)) + queryset = queryset.order_by('review_id')\ + .annotate(has_override=models.Exists(overridden_reviews))\ .annotate( avg_score=models.Case( models.When( @@ -64,9 +63,14 @@ def get_queryset(self): ), default=models.Avg('reviews__score'), ) - ) - .order_by('-state', '-avg_score', 'code') - ) + ).annotate(review_count=models.Count('reviews')) + ordering = self.request.GET.get('sort', 'default') + if ordering == 'default': + return queryset.order_by('-state', '-avg_score', 'code') + if ordering == 'count': + return queryset.order_by('review_count') + if ordering == '-count': + return queryset.order_by('-review_count') def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs)
{% trans "Score" %} {% trans "Reviews" %} + {% trans "Score" %} + + + {% trans "Reviews" %} + + + {% trans "Title" %}{% trans "Speakers" %}{% trans "Type" %}