Skip to content

#38 #39 Eksporter og importer SOI til/fra fil

Anders H. Rebner requested to merge serialisert-soi into master

Module_base:

  • Har nå klasse-variabelen type. Denne brukes ved soi-import for å lage riktig modul-objekt, og må settes/overrides av alle moduler.
  • Har nå __init__ som kaster error hvis type ikke er definert hos modulene (som arver). Det betyr at modulene må definere self.type og deretter kalle ModuleBase.__init__(self). Det er ikke så pent, men @abstractproperty fungerer heller ikke som ønsket for dette.
  • Har nå get_data som brukes ved eksport av SOI (gir fra seg et objekt som skal tilhøre key'en "data" i serialiseringsformatet.

Main_window:

  • Toppmeny-valg for eksportering av SOI.
  • Endret SOI->Ny SOI til SOI->Ny fordi ingen andre alternativer har med SOI.
  • Funksjonen try_export_soi som sjekker om nåværende tab inneholder SOI( åpner dialog hvis ikke) og eksporterer.
  • Funksjonen import_soi som henter fil, lager SOI-objekt og åpner SOIWorkspaceWidget i ny tab.
  • Ignorerer pylint R0914 og R0915 "Too many local variables" og "Too many statements" i funksjonen setup_menubar. Hva tenker vi om dette? Jeg tenkte å ignorere fordi det blir feil å øke lovlig antall variable og statements for alle filer, samt at alt i denne funksjonen handler om toppmeny, så den er ikke særlig enkel å dele opp.
  • Database lages ikke lengre i main dersom den ikke finnes fordi dette gjøres når timer settes i __init__.

Laget filen serialize_export_import_soi.py:

  • Funksjonene serialize_soi, export_soi og import_soi.
  • Per nå er komprimert utgave i .txt-fil og ukomprimert i .json-fil.

SOIWorkspaceWidget:

  • init har nå soi=Nonesom parameter for å kunne sende med SOI-objekt ved åpning av SOI fra fil.

soi:

  • La til sjekk for placement_strategy "manual" i reorganize slik at soi ikke flytter på modulene i testen.

.gitignore:

  • Ignorerer genererte serialiserings-filer. "SOI_ * _ * _ * _ *.txt" (SOI_tittel_YYYY_mm_dd) ser litt dumt ut, hadde tenkt \d{x} eller [0-9]x der x er antall ints, men .gitignore har visst dette patternet(?): https://en.wikipedia.org/wiki/Glob_%28programming%29

Key'en "pri" fra planlagt serialiserings-format brukes ikke fordi funksjonalitet for dette ikke er implementert, og pri gjenspeiles nå gjennom modulrekkefølgen.

Jeg har gjort noen småendringer på serialiserings-formatet slik at det matcher initial_modules som brukes av SOIWorkspaceWidget. Endringene gjelder "modules" og "attachments", og er som følger:

name, page og pos{"x": .., "y": ..} er flyttet inn i meta, og content og size som var i data er flyttet ut som vist nedenfor:

"modules" [
    {
    "type": ..,
    "data": ..,
    "size": {"width": .., "height": ..},
    "meta": {"x": .., "y": .., "page": .., "name": ..}   # meta er relevant for SOI, ikke for modulen.
    },
]

Hele serialiserings-formatet kan enkelt ses i test_serialize_export_import.py sin SCHEMA.

Edited by Anders H. Rebner

Merge request reports