File size: 737 Bytes
a7caaff
85b7ac8
4b07aaf
85b7ac8
 
 
 
 
 
 
 
 
4b07aaf
 
85b7ac8
 
4b07aaf
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"""Base task class."""

import random
from typing import Dict, Optional

from server.models import TaskDifficulty


class BaseTask:
    NAME = "Base Task"
    DESCRIPTION = "Base task"
    DIFFICULTY = TaskDifficulty.EASY
    AVAILABLE_SECRETS: list = []
    SCENARIOS: list = []

    def load_scenario(self, scenario_id: Optional[str] = None) -> Dict:
        if not self.SCENARIOS:
            raise ValueError(f"Task {self.__class__.__name__} has no scenarios defined")
        if scenario_id:
            for scenario in self.SCENARIOS:
                if scenario["id"] == scenario_id:
                    return scenario
            raise ValueError(f"Unknown scenario: {scenario_id}")
        return random.choice(self.SCENARIOS)