Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion questions/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from django.utils.html import format_html
from django_better_admin_arrayfield.admin.mixins import DynamicArrayMixin

from questions.types import AggregationMethod
from questions.models import (
AggregateForecast,
Conditional,
Expand All @@ -16,6 +17,7 @@
from questions.services import build_question_forecasts
from utils.csv_utils import export_all_data_for_questions
from utils.models import CustomTranslationAdmin
from questions.constants import ResolutionType


@admin.register(Question)
Expand All @@ -42,6 +44,7 @@ class QuestionAdmin(CustomTranslationAdmin, DynamicArrayMixin):
"export_selected_questions_data_anonymized",
"rebuild_aggregation_history",
"trigger_scoring",
"trigger_scoring_with_all_aggregations",
]
list_filter = [
"type",
Expand Down Expand Up @@ -133,7 +136,10 @@ def trigger_scoring(self, request, queryset: QuerySet[Question]):
from scoring.utils import score_question

for question in queryset:
if question.resolution in ["", None, "ambiguous", "annulled"]:
if not question.resolution or question.resolution in (
ResolutionType.AMBIGUOUS,
ResolutionType.ANNULLED,
):
continue
score_question(
question=question,
Expand All @@ -142,6 +148,27 @@ def trigger_scoring(self, request, queryset: QuerySet[Question]):

trigger_scoring.short_description = "Trigger Scoring (does nothing if not resolved)"

def trigger_scoring_with_all_aggregations(
self, request, queryset: QuerySet[Question]
):
from scoring.utils import score_question

for question in queryset:
if not question.resolution or question.resolution in (
ResolutionType.AMBIGUOUS,
ResolutionType.ANNULLED,
):
continue
score_question(
question=question,
resolution=question.resolution,
aggregation_methods=list(AggregationMethod._member_map_.values()),
)

trigger_scoring_with_all_aggregations.short_description = (
"Trigger Scoring (Includes ALL Aggregations) (does nothing if not resolved)"
)


@admin.register(Conditional)
class ConditionalAdmin(admin.ModelAdmin):
Expand Down
Loading