questionpy-org / questionpy-sdk

Library and toolset for the development of QuestionPy packages
https://questionpy.org
MIT License
0 stars 2 forks source link

Referenzen über Sektionen und Gruppen hinweg #40

Closed MHajoha closed 1 year ago

MHajoha commented 1 year ago

Mehr aus Gewohnheit als mit Absicht habe ich zu der Syntax erstes_so[dann][in][klammern] gegriffen, wie sie auch PHP/Moodle benutzt. Wobei einfach_mit.punkten.getrennt ja eigentlich besser zu Python passen würde. Es wäre leicht, das umzustellen. Wie seht ihr das?

Die Funktion validate_form prüft, dass alle hide_if- und disabled_if-Referenzen auf ein valides Element zeigen. (Inklusive, dass IsChecked und IsNotChecked nur auf Checkboxes zeigen.) Dabei ist eine Referenz immer relativ zum Container, in dem sie verwendet wird, zu verstehen. Die Tests illustrieren das schon ganz gut, aber um noch ein FormModel-Beispiel zu geben:

class MySectModel(FormModel):
    # Referenzen "nach oben" sind auch möglich.
    input_1 = text_input("Abc", hide_if=[is_checked("..[chk]")])

class MyMainModel(FormModel):
    chk = checkbox("Input 1 verstecken", disable_if=[does_not_equal("sect[input_1]", "")])
    sect = section(MySectModel)

Das Moodle-Plugin wird dann aus den relativen Referenzen absolute machen müssen. Das habe ich noch nicht angegangen.

Ich habe auch form_elements, form_sections und form im FormModel zu qpy_form zusammengefasst. qpy_, um Konflikte mit Form-Elementen zu vermeiden. Generell sollten wir zu diesem Zweck den Namespace von FormModel recht clean halten.

Enthält jetzt auch den einzeiligen Fix für #32.

Closes #29 Closes #32