diff --git a/src/whathappened/core/sheets/schema/base.py b/src/whathappened/core/sheets/schema/base.py index 6ab5ba74..70e3fc68 100644 --- a/src/whathappened/core/sheets/schema/base.py +++ b/src/whathappened/core/sheets/schema/base.py @@ -3,8 +3,8 @@ from pydantic import BaseModel, ConfigDict -CURRENT_SCHEMA_VERSION_TYPE = Literal["0.0.8"] -CURRENT_SCHEMA_VERSION = "0.0.8" +CURRENT_SCHEMA_VERSION_TYPE = Literal["0.0.9"] +CURRENT_SCHEMA_VERSION = "0.0.9" @dataclass @@ -48,6 +48,7 @@ def v005_to_004(data): Migration("0.0.5", "0.0.6"), Migration("0.0.6", "0.0.7"), Migration("0.0.7", "0.0.8"), + Migration("0.0.8", "0.0.9"), ] diff --git a/src/whathappened/core/sheets/schema/vaesenhq.py b/src/whathappened/core/sheets/schema/vaesenhq.py index 9af478ed..b8183bbc 100644 --- a/src/whathappened/core/sheets/schema/vaesenhq.py +++ b/src/whathappened/core/sheets/schema/vaesenhq.py @@ -19,8 +19,34 @@ def v005_to_v004(data): return data +def v008_to_v009(data): + data["version"] = "0.0.9" + + upgrades = ["contacts", "discovered_facilities", "facilities", "personell"] + + for upgrade in upgrades: + for added in data["character_sheet"]["upgrades"][upgrade]: + if "title" not in added: + added["title"] = "No title" + + return data + + +def v009_to_v008(data): + data["version"] = "0.0.8" + + upgrades = ["contacts", "discovered_facilities", "facilities", "personell"] + + for upgrade in upgrades: + for added in data["character_sheet"]["upgrades"][upgrade]: + if "title" in added: + del added["title"] + return data + + migrations = [ Migration("0.0.4", "0.0.5", v004_to_v005, v005_to_v004), + Migration("0.0.8", "0.0.9", v008_to_v009, v009_to_v008), ] @@ -48,6 +74,7 @@ class Information(BaseModel): class Upgrade(BaseModel): """Information about an upgrade.""" + title: str = "No title" function: str = "No function" asset: str = "No asset" @@ -56,16 +83,16 @@ class Upgrades(BaseModel): """Upgrades to headquarters.""" facilities: list[Upgrade] = Field( - default=[], json_schema_extra={"widget": "table", "header": True} + default=[], json_schema_extra={"widget": "table", "header": False} ) discovered_facilities: list[Upgrade] = Field( - default=[], json_schema_extra={"widget": "table", "header": True} + default=[], json_schema_extra={"widget": "table", "header": False} ) contacts: list[Upgrade] = Field( - default=[], json_schema_extra={"widget": "table", "header": True} + default=[], json_schema_extra={"widget": "table", "header": False} ) personell: list[Upgrade] = Field( - default=[], json_schema_extra={"widget": "table", "header": True} + default=[], json_schema_extra={"widget": "table", "header": False} ) diff --git a/tests/games/schemas/expected/coc7e.yml b/tests/games/schemas/expected/coc7e.yml index 8f5087ca..db3abb48 100644 --- a/tests/games/schemas/expected/coc7e.yml +++ b/tests/games/schemas/expected/coc7e.yml @@ -410,7 +410,7 @@ properties: title: System type: string version: - default: 0.0.8 + default: 0.0.9 title: Version type: string required: diff --git a/tests/games/schemas/expected/dod.yml b/tests/games/schemas/expected/dod.yml index 8f9d1c38..f22a53c5 100644 --- a/tests/games/schemas/expected/dod.yml +++ b/tests/games/schemas/expected/dod.yml @@ -784,7 +784,7 @@ properties: title: System type: string version: - default: 0.0.8 + default: 0.0.9 title: Version type: string required: diff --git a/tests/games/schemas/expected/landf.yml b/tests/games/schemas/expected/landf.yml index 41bc9fc8..e2ac64dc 100644 --- a/tests/games/schemas/expected/landf.yml +++ b/tests/games/schemas/expected/landf.yml @@ -107,7 +107,7 @@ properties: title: System type: string version: - default: 0.0.8 + default: 0.0.9 title: Version type: string required: diff --git a/tests/games/schemas/expected/tftl.yml b/tests/games/schemas/expected/tftl.yml index 34939017..12840922 100644 --- a/tests/games/schemas/expected/tftl.yml +++ b/tests/games/schemas/expected/tftl.yml @@ -358,7 +358,7 @@ properties: title: System type: string version: - default: 0.0.8 + default: 0.0.9 title: Version type: string required: diff --git a/tests/games/schemas/expected/vaesen.yml b/tests/games/schemas/expected/vaesen.yml index 863427b8..f93ecb9a 100644 --- a/tests/games/schemas/expected/vaesen.yml +++ b/tests/games/schemas/expected/vaesen.yml @@ -411,7 +411,7 @@ properties: title: System type: string version: - default: 0.0.8 + default: 0.0.9 title: Version type: string required: diff --git a/tests/games/schemas/expected/vaesenhq.yml b/tests/games/schemas/expected/vaesenhq.yml index b11b19ff..ab28d878 100644 --- a/tests/games/schemas/expected/vaesenhq.yml +++ b/tests/games/schemas/expected/vaesenhq.yml @@ -64,6 +64,10 @@ $defs: default: No function title: Function type: string + title: + default: No title + title: Title + type: string title: Upgrade type: object Upgrades: @@ -71,7 +75,7 @@ $defs: properties: contacts: default: [] - header: true + header: false items: $ref: '#/$defs/Upgrade' title: Contacts @@ -79,7 +83,7 @@ $defs: widget: table discovered_facilities: default: [] - header: true + header: false items: $ref: '#/$defs/Upgrade' title: Discovered Facilities @@ -87,7 +91,7 @@ $defs: widget: table facilities: default: [] - header: true + header: false items: $ref: '#/$defs/Upgrade' title: Facilities @@ -95,7 +99,7 @@ $defs: widget: table personell: default: [] - header: true + header: false items: $ref: '#/$defs/Upgrade' title: Personell @@ -119,7 +123,7 @@ properties: title: System type: string version: - default: 0.0.8 + default: 0.0.9 title: Version type: string required: diff --git a/tests/games/sheets/expected/dod-0.0.9.yml b/tests/games/sheets/expected/dod-0.0.9.yml new file mode 100644 index 00000000..6e1f17ee --- /dev/null +++ b/tests/games/sheets/expected/dod-0.0.9.yml @@ -0,0 +1,216 @@ +character_sheet: + "F\xF6rm\xE5gor & besv\xE4rjelser": [] + egenskaper: + FYS: 0 + INT: 0 + KAR: 0 + PSY: 0 + SMI: 0 + STY: 0 + arg: false + krasslig: false + omtocknad: false + radd: false + uppgiven: false + utmattad: false + fardigheter: + primar: + - base: INT + checked: false + name: Bestiologi + value: 0 + - base: KAR + checked: false + name: Bluffa + value: 0 + - base: SMI + checked: false + name: "Fingerf\xE4rdighet" + value: 0 + - base: INT + checked: false + name: Finna dolda ting + value: 0 + - base: INT + checked: false + name: "Fr\xE4mmande spr\xE5k" + value: 0 + - base: STY + checked: false + name: Hantverk + value: 0 + - base: SMI + checked: false + name: "Hoppa & kl\xE4ttra" + value: 0 + - base: SMI + checked: false + name: Jakt & fiske + value: 0 + - base: KAR + checked: false + name: "K\xF6psl\xE5" + value: 0 + - base: INT + checked: false + name: "L\xE4kekonst" + value: 0 + - base: INT + checked: false + name: Myter & legender + value: 0 + - base: SMI + checked: false + name: Rida + value: 0 + - base: SMI + checked: false + name: Simma + value: 0 + - base: INT + checked: false + name: "Sj\xF6kunnighet" + value: 0 + - base: SMI + checked: false + name: Smyga + value: 0 + - base: SMI + checked: false + name: Undvika + value: 0 + - base: KAR + checked: false + name: "Upptr\xE4da" + value: 0 + - base: INT + checked: false + name: "Uppt\xE4cka fara" + value: 0 + - base: INT + checked: false + name: Vildmarksvana + value: 0 + - base: KAR + checked: false + name: "\xD6vertala" + value: 0 + sekundarafardigheter: [] + vapenfardigheter: + - base: SMI + checked: false + name: Armborst + value: 0 + - base: STY + checked: false + name: Hammare + value: 0 + - base: SMI + checked: false + name: Kniv + value: 0 + - base: SMI + checked: false + name: "Pilb\xE5ge" + value: 0 + - base: STY + checked: false + name: "Slagsm\xE5l" + value: 0 + - base: SMI + checked: false + name: Slunga + value: 0 + - base: STY + checked: false + name: Spjut + value: 0 + - base: SMI + checked: false + name: Stav + value: 0 + - base: STY + checked: false + name: "Sv\xE4rd" + value: 0 + - base: STY + checked: false + name: Yxa + value: 0 + packning: + barformoga: 0 + items: + - '-' + - '-' + - '-' + - '-' + - '-' + - '-' + - '-' + - '-' + - '-' + - '-' + minnessak: '-' + smaasaker: [] + pengar: + guldmynt: 0 + kopparmynt: 0 + silvermynt: 0 + personalia: + alder: Ung + namn: Inget namn + portrait: '' + slakte: "M\xE4nniska" + svaghet: Odefinerad + utseende: Odefinerad + yrke: Bard + sekundara_egenskaper: + forflyttning: 0 + kroppspoang: + anvanda: 0 + dodsslag: + lyckade: 0 + misslyckade: 0 + poang: 0 + skadebonus_smi: '-' + skadebonus_sty: '-' + viljepoang: + anvanda: 0 + poang: 0 + vapen: + hjalm: + avstandsattacker: false + skyddsvarde: 0 + typ: Ingen + upptacka_fara: false + rustning: + hoppa_och_klattra: false + skyddsvarde: 0 + smyga: false + typ: Ingen + undvika: false + till_hands: + - brytvarde: '-' + egenskaper: Krossande + grepp: '-' + rackvidd: '2' + skada: T6 + vapen: "Obev\xE4pnad" + - brytvarde: '-' + egenskaper: Krossande + grepp: '-' + rackvidd: '2' + skada: T6 + vapen: "Obev\xE4pnad" + - brytvarde: '-' + egenskaper: Krossande + grepp: '-' + rackvidd: '2' + skada: T6 + vapen: "Obev\xE4pnad" +meta: + gamename: Drakar och Demoner + title: Unknown +system: dod +title: Test character +version: 0.0.9 diff --git a/tests/games/sheets/expected/landf-0.0.9.yml b/tests/games/sheets/expected/landf-0.0.9.yml new file mode 100644 index 00000000..fc1b743c --- /dev/null +++ b/tests/games/sheets/expected/landf-0.0.9.yml @@ -0,0 +1,17 @@ +character_sheet: + goal: Meet new aliens + inventory: + - Consortium uniform + - Communicator + - Pistol + name: Ace + portrait: '' + role: Soldier + stat: 4 + style: Heroic +meta: + gamename: Lasers and feelings + title: Unknown +system: landf +title: Test character +version: 0.0.9 diff --git a/tests/games/sheets/expected/tftl-0.0.9.yml b/tests/games/sheets/expected/tftl-0.0.9.yml new file mode 100644 index 00000000..125896a7 --- /dev/null +++ b/tests/games/sheets/expected/tftl-0.0.9.yml @@ -0,0 +1,59 @@ +character_sheet: + attributes: + body: 1 + heart: 1 + mind: 1 + tech: 1 + conditions: + broken: false + exhausted: false + injured: false + scared: false + upset: false + experience: 0 + hideout: Tree hut + items: [] + notes: '' + personalia: + age: Unknown + anchor: Unknown + description: Unknown + drive: Unknown + favorite_song: Unknown + luck_points: 0 + name: Unknown + portrait: '' + pride: + description: Unknown + used: false + problem: Unknown + type: Unknown + relationships: + kids: + - Unknown + npcs: + - Unknown + skills: + calculate: 0 + charm: 0 + comprehend: 0 + contact: 0 + empathize: 0 + force: 0 + investigate: 0 + lead: 0 + move: 0 + program: 0 + sneak: 0 + tinker: 0 +meta: + createdate: '' + creator: What happened? A TTRPG utility + disclaimer: We're not gonna take it! + gamename: Tales From The Loop + gametype: '' + gameversion: '' + title: New character +system: tftl +title: Test character +version: 0.0.9 diff --git a/tests/games/sheets/expected/vaesen-0.0.9.yml b/tests/games/sheets/expected/vaesen-0.0.9.yml new file mode 100644 index 00000000..05fcb916 --- /dev/null +++ b/tests/games/sheets/expected/vaesen-0.0.9.yml @@ -0,0 +1,61 @@ +character_sheet: + characteristics: + attributes: + empathy: 2 + logic: 2 + physique: 2 + precision: 2 + conditions: + mental: + angry: false + broken: false + frightened: false + hopeless: false + physical: + battered: false + broken: false + exhausted: false + wounded: false + experience: 0 + resources: 1 + skills: + agility: 0 + close_combat: 0 + force: 0 + inspiration: 0 + investigation: 0 + learning: 0 + manipulation: 0 + medicine: 0 + observation: 0 + ranged_combat: 0 + stealth: 0 + vigilance: 0 + miscellaneous: + advantages: '' + armor: none + equipment: [] + insights: [] + memento: '' + talents: [] + weapons: [] + personalia: + age: 17 + archetype: Academic + dark_secret: '' + description: '' + motivation: '' + name: '' + portrait: '' + relationships: + - PC 1 + - PC 2 + - PC 3 + - PC 4 + trauma: '' +meta: + gamename: Vaesen + title: Unknown +system: vaesen +title: Test character +version: 0.0.9 diff --git a/tests/games/sheets/expected/vaesenhq-0.0.9.yml b/tests/games/sheets/expected/vaesenhq-0.0.9.yml new file mode 100644 index 00000000..b3c636f5 --- /dev/null +++ b/tests/games/sheets/expected/vaesenhq-0.0.9.yml @@ -0,0 +1,18 @@ +character_sheet: + information: + development_points: 0 + location: Somewhere + name: Unknown + picture: '' + type_of_building: Unknown + upgrades: + contacts: [] + discovered_facilities: [] + facilities: [] + personell: [] +meta: + gamename: Vaesen + title: Unknown +system: vaesenhq +title: Test character +version: 0.0.9