Changeset ff85433 in flexograder


Ignore:
Timestamp:
09/29/25 15:41:41 (4 months ago)
Author:
Enrico Schwass <ennoausberlin@…>
Branches:
master
Children:
f3c4ec6
Parents:
6425452
Message:

update radio exam import script to set domain and topic

File:
1 edited

Legend:

Unmodified
Added
Removed
  • generator/import_radioamateur.py

    r6425452 rff85433  
    66
    77from builder.exam import Exam
     8
    89
    910if len(sys.argv) != 2:
     
    2425
    2526
     27def mapping():
     28    return [{"TAG": "BA", "START": 101, "END": 111,
     29             "TOPIC": "Betriebliche Kenntnisse#Internationales Buchstabieralphabet"},
     30            {"TAG": "BB", "START": 101, "END": 111,
     31             "TOPIC": "Betriebliche Kenntnisse#Betriebliche Abkürzungen"},
     32            {"TAG": "BB", "START": 201, "END": 209,
     33             "TOPIC": "Betriebliche Kenntnisse#Q-Schlüssel"},
     34            {"TAG": "BB", "START": 301, "END": 312,
     35             "TOPIC": "Betriebliche Kenntnisse#Signalbeurteilung"},
     36            {"TAG": "BB", "START": 401, "END": 407,
     37             "TOPIC": "Betriebliche Kenntnisse#Bezeichnung der Aussendungen (Sendearten)"},
     38            {"TAG": "BC", "START": 101, "END": 114,
     39             "TOPIC": "Betriebliche Kenntnisse#Frequenzbereiche des Amateurfunkdienstes"},
     40            {"TAG": "BC", "START": 201, "END": 220,
     41             "TOPIC": "Betriebliche Kenntnisse#IARU-Bandpläne"},
     42            {"TAG": "BD", "START": 101, "END": 115,
     43             "TOPIC": "Betriebliche Kenntnisse#Deutsche Rufzeichen"},
     44            {"TAG": "BD", "START": 201, "END": 210,
     45             "TOPIC": "Betriebliche Kenntnisse#Europäische Landeskenner"},
     46            {"TAG": "BD", "START": 301, "END": 309,
     47             "TOPIC": "Betriebliche Kenntnisse#Internationale Landeskenner"},
     48            {"TAG": "BE", "START": 101, "END": 119,
     49             "TOPIC": "Betriebliche Kenntnisse#Betriebsabwicklung, allgemein"},
     50            {"TAG": "BE", "START": 201, "END": 216,
     51             "TOPIC": "Betriebliche Kenntnisse#Betriebsabwicklung, speziell"},
     52            {"TAG": "BE", "START": 301, "END": 310,
     53             "TOPIC": "Betriebliche Kenntnisse#Betriebsabwicklung bei besonderen Betriebsarten"},
     54            {"TAG": "BE", "START": 401, "END": 411,
     55             "TOPIC": "Betriebliche Kenntnisse#Relaisfunkstellen, Transponder, Satelliten, Baken"},
     56            {"TAG": "BF", "START": 101, "END": 110,
     57             "TOPIC": "Betriebliche Kenntnisse#Notfunkverkehr und Nachrichtenverkehr bei Naturkatastrophen"},
     58            {"TAG": "BG", "START": 101, "END": 115,
     59             "TOPIC": "Betriebliche Kenntnisse#Stationstagebuch, QSL-Karte"}
     60            ]
     61
     62
     63def get_topic(qid: str):
     64    # Split into prefix and number
     65    tag, number = qid[:2], int(qid[2:])
     66    for entry in mapping():
     67        if entry["TAG"] == tag and entry["START"] <= number <= entry["END"]:
     68            if entry["TOPIC"] is not None:
     69                return entry["TOPIC"].split("#")
     70    return [], []
     71
     72
    2673json_file = sys.argv[1]
    2774
     
    3077for each_page in exam.pages:
    3178    for each_question in each_page.questions:
    32         if id_in_range(each_question.id, 'BA', 101, 111):
    33             each_question.topic = "Internationales Buchstabieralphabet"
    34         if id_in_range(each_question.id, 'BB', 101, 111):
    35             each_question.topic = "Betriebliche Abkürzungen"
    36         if id_in_range(each_question.id, 'BB', 201, 209):
    37             each_question.topic = "Q-Schlüssel"
    38         if id_in_range(each_question.id, 'BB', 301, 312):
    39             each_question.topic = "Signalbeurteilung"
    40         if id_in_range(each_question.id, 'BB', 401, 407):
    41             each_question.topic = "Bezeichnung der Aussendungen (Sendearten)"
    42         if id_in_range(each_question.id, 'BC', 101, 114):
    43             each_question.topic = "Frequenzbereiche des Amateurfunkdienstes"
    44         if id_in_range(each_question.id, 'BC', 201, 220):
    45             each_question.topic = "IARU-Bandpläne"
    46         if id_in_range(each_question.id, 'BD', 101, 115):
    47             each_question.topic = "Deutsche Rufzeichen"
    48         if id_in_range(each_question.id, 'BD', 201, 210):
    49             each_question.topic = "Europäische Landeskenner"
    50         if id_in_range(each_question.id, 'BD', 301, 309):
    51             each_question.topic = "Internationale Landeskenner"
    52         if id_in_range(each_question.id, 'BE', 101, 119):
    53             each_question.topic = "Betriebsabwicklung, allgemein"
    54         if id_in_range(each_question.id, 'BE', 201, 216):
    55             each_question.topic = "Betriebsabwicklung, speziell"
    56         if id_in_range(each_question.id, 'BE', 301, 310):
    57             each_question.topic = "Betriebsabwicklung bei besonderen Betriebsarten"
    58         if id_in_range(each_question.id, 'BE', 401, 411):
    59             each_question.topic = "Relaisfunkstellen, Transponder, Satelliten, Baken"
    60         if id_in_range(each_question.id, 'BF', 101, 110):
    61             each_question.topic = "Notfunkverkehr und Nachrichtenverkehr bei Naturkatastrophen"
    62         if id_in_range(each_question.id, 'BG', 101, 115):
    63             each_question.topic = "Stationstagebuch, QSL-Karte"
    64         print(each_question.topic)
     79        if each_question.id != "candidate_id":
     80            domain, topic = get_topic(each_question.id)
     81            if domain and topic:
     82                each_question.domain = domain
     83                each_question.topic = topic
    6584
    66 
     85print(exam.to_dict())
    6786exam.shuffle_options()
    6887env = Environment(
Note: See TracChangeset for help on using the changeset viewer.