|
15 | 15 | from olympia import amo |
16 | 16 | from olympia.access import acl |
17 | 17 | from olympia.addons.models import Addon |
18 | | -from olympia.amo.admin import AMOModelAdmin, MultipleRelatedListFilter |
| 18 | +from olympia.amo.admin import ( |
| 19 | + AMOModelAdmin, |
| 20 | + DateRangeFilter, |
| 21 | + MultipleRelatedListFilter, |
| 22 | + NumericRangeFilter, |
| 23 | +) |
19 | 24 | from olympia.amo.templatetags.jinja_helpers import vite_asset |
20 | 25 | from olympia.amo.utils import is_safe_url |
21 | 26 | from olympia.constants import scanners |
@@ -202,6 +207,24 @@ def __init__(self, *args, **kwargs): |
202 | 207 | self.title = 'version channel' |
203 | 208 |
|
204 | 209 |
|
| 210 | +class VersionCreatedFilter(DateRangeFilter): |
| 211 | + def __init__(self, *args, **kwargs): |
| 212 | + super().__init__(*args, **kwargs) |
| 213 | + self.title = 'version creation date' |
| 214 | + |
| 215 | + |
| 216 | +class AddonCreatedFilter(DateRangeFilter): |
| 217 | + def __init__(self, *args, **kwargs): |
| 218 | + super().__init__(*args, **kwargs) |
| 219 | + self.title = 'add-on creation date' |
| 220 | + |
| 221 | + |
| 222 | +class AddonLastUpdatedFilter(DateRangeFilter): |
| 223 | + def __init__(self, *args, **kwargs): |
| 224 | + super().__init__(*args, **kwargs) |
| 225 | + self.title = 'add-on last updated date' |
| 226 | + |
| 227 | + |
205 | 228 | class AddonStatusFilter(admin.ChoicesFieldListFilter): |
206 | 229 | def __init__(self, *args, **kwargs): |
207 | 230 | super().__init__(*args, **kwargs) |
@@ -230,6 +253,12 @@ def choices(self, changelist): |
230 | 253 | } |
231 | 254 |
|
232 | 255 |
|
| 256 | +class AddonAverageDailyUsers(NumericRangeFilter): |
| 257 | + def __init__(self, *args, **kwargs): |
| 258 | + super().__init__(*args, **kwargs) |
| 259 | + self.title = 'add-on ADU' |
| 260 | + |
| 261 | + |
233 | 262 | class FileStatusFilter(admin.ChoicesFieldListFilter): |
234 | 263 | def __init__(self, *args, **kwargs): |
235 | 264 | super().__init__(*args, **kwargs) |
@@ -735,8 +764,12 @@ class ScannerQueryResultAdmin(AbstractScannerResultAdminMixin, AMOModelAdmin): |
735 | 764 | list_filter = ( |
736 | 765 | ('matched_rule', ScannerRuleListFilter), |
737 | 766 | ('version__channel', VersionChannelFilter), |
| 767 | + ('version__created', VersionCreatedFilter), |
738 | 768 | ('version__addon__status', AddonStatusFilter), |
| 769 | + ('version__addon__created', AddonCreatedFilter), |
| 770 | + ('version__addon__last_updated', AddonLastUpdatedFilter), |
739 | 771 | ('version__addon__disabled_by_user', AddonVisibilityFilter), |
| 772 | + ('version__addon__average_daily_users', AddonAverageDailyUsers), |
740 | 773 | ('version__file__status', FileStatusFilter), |
741 | 774 | ('version__file__is_signed', FileIsSignedFilter), |
742 | 775 | ('was_blocked', admin.BooleanFieldListFilter), |
@@ -848,7 +881,10 @@ class ScannerQueryRuleAdmin(AbstractScannerRuleAdminMixin, AMOModelAdmin): |
848 | 881 | 'completion_rate', |
849 | 882 | 'matched_results_link', |
850 | 883 | ) |
851 | | - list_filter = ('state',) |
| 884 | + list_filter = ( |
| 885 | + 'scanner', |
| 886 | + 'state', |
| 887 | + ) |
852 | 888 | fields = ( |
853 | 889 | 'scanner', |
854 | 890 | 'run_on_disabled_addons', |
|
0 commit comments