Skip to content

Commit 2cab501

Browse files
authored
Merge pull request #8688 from readthedocs/humitos/spam-admin-filters
2 parents dd73b95 + b899bb4 commit 2cab501

File tree

1 file changed

+40
-10
lines changed

1 file changed

+40
-10
lines changed

readthedocs/projects/admin.py

+40-10
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ class ProjectSpamThreshold(admin.SimpleListFilter):
127127
title = 'Spam Threshold'
128128
parameter_name = 'spam_threshold'
129129

130+
NOT_ENOUGH_SCORE = 'not_enough_score'
130131
DONT_SHOW_ADS = 'dont_show_ads'
131132
DENY_ON_ROBOTS = 'deny_on_robots'
132133
DONT_SERVE_DOCS = 'dont_serve_docs'
@@ -135,50 +136,79 @@ class ProjectSpamThreshold(admin.SimpleListFilter):
135136

136137
def lookups(self, request, model_admin):
137138
return (
139+
(
140+
self.NOT_ENOUGH_SCORE,
141+
_("Not spam (1-{})").format(
142+
settings.RTD_SPAM_THRESHOLD_DONT_SHOW_ADS,
143+
),
144+
),
138145
(
139146
self.DONT_SHOW_ADS,
140-
_("Don't show Ads ({})").format(
147+
_("Don't show Ads ({}-{})").format(
141148
settings.RTD_SPAM_THRESHOLD_DONT_SHOW_ADS,
149+
settings.RTD_SPAM_THRESHOLD_DENY_ON_ROBOTS,
142150
),
143151
),
144152
(
145153
self.DENY_ON_ROBOTS,
146-
_('Deny on robots ({})').format(
154+
_('Deny on robots ({}-{})').format(
147155
settings.RTD_SPAM_THRESHOLD_DENY_ON_ROBOTS,
156+
settings.RTD_SPAM_THRESHOLD_DONT_SHOW_DASHBOARD,
148157
),
149158
),
150159
(
151160
self.DONT_SHOW_DASHBOARD,
152-
_("Don't show dashboard ({})").format(
161+
_("Don't show dashboard ({}-{})").format(
153162
settings.RTD_SPAM_THRESHOLD_DONT_SHOW_DASHBOARD,
163+
settings.RTD_SPAM_THRESHOLD_DONT_SERVE_DOCS,
154164
),
155165
),
156166
(
157167
self.DONT_SERVE_DOCS,
158-
_("Don't serve docs ({})").format(
168+
_("Don't serve docs ({}-{})").format(
159169
settings.RTD_SPAM_THRESHOLD_DONT_SERVE_DOCS,
170+
settings.RTD_SPAM_THRESHOLD_DELETE_PROJECT,
160171
),
161172
),
162173
(
163174
self.DELETE_PROJECT,
164-
_('Delete project ({})').format(
175+
_('Delete project (>={})').format(
165176
settings.RTD_SPAM_THRESHOLD_DELETE_PROJECT,
166177
),
167178
),
168179
)
169180

170181
def queryset(self, request, queryset):
171182
queryset = queryset.annotate(spam_score=Sum('spam_rules__value'))
183+
if self.value() == self.NOT_ENOUGH_SCORE:
184+
return queryset.filter(
185+
spam_score__gte=1,
186+
spam_score__lt=settings.RTD_SPAM_THRESHOLD_DONT_SHOW_ADS,
187+
)
172188
if self.value() == self.DONT_SHOW_ADS:
173-
return queryset.filter(spam_score__gte=settings.RTD_SPAM_THRESHOLD_DONT_SHOW_ADS)
189+
return queryset.filter(
190+
spam_score__gte=settings.RTD_SPAM_THRESHOLD_DONT_SHOW_ADS,
191+
spam_score__lt=settings.RTD_SPAM_THRESHOLD_DENY_ON_ROBOTS,
192+
)
174193
if self.value() == self.DENY_ON_ROBOTS:
175-
return queryset.filter(spam_score__gte=settings.RTD_SPAM_THRESHOLD_DENY_ON_ROBOTS)
194+
return queryset.filter(
195+
spam_score__gte=settings.RTD_SPAM_THRESHOLD_DENY_ON_ROBOTS,
196+
spam_score__lt=settings.RTD_SPAM_THRESHOLD_DONT_SERVE_DOCS,
197+
)
176198
if self.value() == self.DONT_SERVE_DOCS:
177-
return queryset.filter(spam_score__gte=settings.RTD_SPAM_THRESHOLD_DONT_SERVE_DOCS)
199+
return queryset.filter(
200+
spam_score__gte=settings.RTD_SPAM_THRESHOLD_DONT_SERVE_DOCS,
201+
spam_score__lt=settings.RTD_SPAM_THRESHOLD_DONT_SHOW_DASHBOARD,
202+
)
178203
if self.value() == self.DONT_SHOW_DASHBOARD:
179-
return queryset.filter(spam_score__gte=settings.RTD_SPAM_THRESHOLD_DONT_SHOW_DASHBOARD)
204+
return queryset.filter(
205+
spam_score__gte=settings.RTD_SPAM_THRESHOLD_DONT_SHOW_DASHBOARD,
206+
spam_score__lt=settings.RTD_SPAM_THRESHOLD_DELETE_PROJECT,
207+
)
180208
if self.value() == self.DELETE_PROJECT:
181-
return queryset.filter(spam_score__gte=settings.RTD_SPAM_THRESHOLD_DELETE_PROJECT)
209+
return queryset.filter(
210+
spam_score__gte=settings.RTD_SPAM_THRESHOLD_DELETE_PROJECT,
211+
)
182212
return queryset
183213

184214

0 commit comments

Comments
 (0)