Changeset 82a4a12 in flexograder


Ignore:
Timestamp:
03/03/26 10:17:25 (5 weeks ago)
Author:
Enrico Schwass <ennoausberlin@…>
Branches:
fake-data
Parents:
6a4d3e8
Message:

faker script added

Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • flexograder/core_entities/exam.py

    r6a4d3e8 r82a4a12  
    77import html
    88
    9 from flexoentity import FlexoEntity, EntityType, EntityState, Domain
     9from flexoentity import FlexoEntity, EntityType, EntityState, Domain, FlexOID
    1010from .exam_elements import ExamElement, ChoiceQuestion, IDForm, element_factory
    1111from .question_catalog import QuestionCatalog
     
    222222        self.layout.add_page(page_title)
    223223
     224
     225       
    224226    def add_element_to_page(self, page_title: str, element: ExamElement):
    225227        """Assign an element to a page."""
    226         self.layout.assign_element(page_title, element.flexo_id)
     228
     229        # 1) Ensure it is registered
     230        if element.flexo_id not in self.elements:
     231            self.add_element(element)
     232
     233            # 2) Ensure page exists
     234            page = self.ensure_page(page_title)
     235            self.layout.assign_element(page_title, element.flexo_id)
    227236
    228237    def shuffle_options(self):
  • flexograder/core_entities/exam_elements.py

    r6a4d3e8 r82a4a12  
    7373
    7474        return obj
     75
     76    def __init__(self, *, flexo_id, subtype=None, fingerprint=None, origin=None,
     77                 originator_id=None, owner_id=None,):
     78        super().__init__(
     79            flexo_id=flexo_id,
     80            subtype=subtype,
     81            fingerprint=fingerprint,
     82            origin=origin,
     83            originator_id=originator_id,
     84            owner_id=owner_id,
     85        )
     86
     87        # --- Canonical content contract ---
     88        self.topic: str = ""
     89        self.subtopic: str = ""
     90        self.text: str = ""
     91        self.media: list = []
    7592
    7693    @classmethod
     
    430447            owner_id=owner_id,
    431448        )
    432 
    433449        self.text = text
    434450        self.fields = fields or []
     451
     452    @classmethod
     453    def with_domain_id(cls, domain_id: str, **kwargs):
     454        text = kwargs.get("text", "")
     455        fields = kwargs.get("fields", [])
     456
     457        flexo_id = FlexOID.safe_generate(
     458            domain_id=domain_id,
     459            entity_type=cls.ENTITY_TYPE.value,
     460            state=EntityState.DRAFT.value,
     461            text=text,
     462            version=1,
     463        )
     464
     465        obj = cls(
     466            text=text,
     467            fields=fields,
     468            flexo_id=flexo_id,
     469        )
     470
     471        obj.fingerprint = obj._compute_fingerprint()
     472        return obj
    435473
    436474    def to_html(self) -> str:
Note: See TracChangeset for help on using the changeset viewer.