From 13ba18936f8d99f7ecc24950dfa05dede8bdb13f Mon Sep 17 00:00:00 2001 From: Taka Date: Tue, 4 Sep 2018 08:08:51 +0000 Subject: [PATCH] Added the British vehicles. --- .../webapp/data/vehicles/british.json | 731 ++++++++++++++++++ vasl_templates/webapp/static/snippets.js | 129 ++-- .../vo-reports/vehicles/british/1940.txt | 131 ++++ .../vo-reports/vehicles/british/1941.txt | 131 ++++ .../vo-reports/vehicles/british/1942.txt | 131 ++++ .../vo-reports/vehicles/british/1943.txt | 131 ++++ .../vo-reports/vehicles/british/1944.txt | 131 ++++ .../vo-reports/vehicles/british/1945.txt | 131 ++++ .../webapp/tests/test_capabilities.py | 106 +++ .../webapp/tests/test_vo_reports.py | 2 +- 10 files changed, 1708 insertions(+), 46 deletions(-) create mode 100644 vasl_templates/webapp/data/vehicles/british.json create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1940.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1941.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1942.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1943.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1944.txt create mode 100644 vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1945.txt diff --git a/vasl_templates/webapp/data/vehicles/british.json b/vasl_templates/webapp/data/vehicles/british.json new file mode 100644 index 0000000..0753d7c --- /dev/null +++ b/vasl_templates/webapp/data/vehicles/british.json @@ -0,0 +1,731 @@ +[ + +{ "name": "Mark VIB", + "CS#": 3, + "capabilities2": { "sD": 6 }, + "note_number": "1\u2020", + "notes": [ "N", "P" ] +}, +{ "name": "Mark VIC", + "CS#": 3, + "capabilities2": { "sD": 6 }, + "note_number": "1\u2020" +}, +{ "name": "Tetrarch", + "CS#": 3, + "capabilities2": { "sD": 6 }, + "note_number": "2\u2020" +}, +{ "name": "Tetrarch CS", + "CS#": 3, + "capabilities2": { "HE": "9\u20201", "s": [ null, "\u20201" ], "sD": 6 }, + "note_number": "2\u2020", + "notes": [ "S\u20201" ] +}, +{ "name": "Stuart I(a)", + "CS#": 4, + "capabilities2": { "sD": 5 }, + "note_number": "3\u2020", + "notes": [ "A", "N", "P" ] +}, +{ "name": "Stuart III(a)", + "CS#": 4, + "capabilities2": { "HE": [ null, "4+" ], "C": [ [6,"4+"], "\u20201" ], "sD": 5 }, + "note_number": "3\u2020", + "notes": [ "A", "C\u20201", "G", "N", "P" ] +}, +{ "name": "Stuart V(a)", + "CS#": 4, + "capabilities2": { "C": "6\u20201", "sD": 5 }, + "note_number": "4\u2020", + "notes": [ "A", "C\u20201", "G" ] +}, +{ "name": "Locust(a)", + "CS#": 3, + "capabilities2": { "C": "6\u2020", "sD": 6 }, + "note_number": "5", + "notes": [ "A", "C\u2020" ] +}, +{ "name": "A9", + "CS#": "5:brewup", + "capabilities2": { "sD": 6 }, + "note_number": "6\u2020", + "notes": [ "K\u20201", "N" ] +}, +{ "name": "A9 CS", + "CS#": "5:brewup", + "capabilities2": { "s": [ null, "\u20202" ], "sD": 6 }, + "note_number": "6\u2020", + "notes": [ "K\u20201", "N", "S\u20202" ] +}, +{ "name": "A10 Mk IA", + "CS#": "5:brewup\u2020", + "capabilities2": { "sD": 6 }, + "note_number": "7\u2020", + "notes": [ "B\u20201", "K\u20202", "N" ] +}, +{ "name": "A10 Mk IA CS", + "CS#": "5:brewup\u2020", + "capabilities2": { "s": [ null, "\u20202" ], "sD": 6 }, + "note_number": "7\u2020", + "notes": [ "K\u20201", "N", "S\u20202" ] +}, +{ "name": "A13 Mk I", + "CS#": "4:brewup", + "capabilities2": { "sD": 6 }, + "note_number": "8", + "notes": [ "K\u2020" ] +}, +{ "name": "A13 Mk II", + "CS#": "4:brewup", + "capabilities2": { "sD": 6 }, + "note_number": "8\u2020", + "notes": [ "B\u20201", "K\u20202", "N" ] +}, +{ "name": "A13 Mk II CS", + "CS#": "4:brewup", + "capabilities2": { "s": [ null, "\u20202" ], "sD": 6 }, + "note_number": "8\u2020", + "notes": [ "K\u20201", "N", "S\u20202" ] +}, +{ "name": "Crusader I", + "CS#": "5:brewup", + "capabilities2": { "sM": 8 }, + "note_number": "9\u2020", + "notes": [ "K\u20201", "N" ] +}, +{ "name": "Crusader I CS", + "CS#": "5:brewup", + "capabilities2": { "HE": 9, "s": [ null, "\u20202" ], "sM": 8 }, + "note_number": "9\u2020", + "notes": [ "K\u20201", "N", "S\u20202" ] +}, +{ "name": "Crusader II", + "CS#": "4:brewup", + "capabilities2": { "sM": 8 }, + "note_number": "9\u2020", + "notes": [ "K\u20201", "N" ] +}, +{ "name": "Crusader II CS", + "CS#": "4:brewup", + "capabilities2": { "HE": 9, "s": [ null, "\u20202" ], "sM": 8 }, + "note_number": "9\u2020", + "notes": [ "K\u20201", "N", "S\u20202" ] +}, +{ "name": "Crusader III", + "CS#": "3:brewup", + "capabilities2": { "HE": [ [7,"F3+"], "\u20201" ], "sD": 7, "sM": "8\u20202" }, + "note_number": "10\u2020", + "notes": [ "N", "Y\u20201", "Z\u20202" ] +}, +{ "name": "Grant(a)", + "CS#": 6, + "capabilities2": { "HE": [ null, "4+" ], "C": [ [5,"4+"], "\u20201" ], "s": "8\u2020", "sM": 8 }, + "note_number": "11\u2020", + "notes": [ "A", "C\u20201", "G", "N", "P" ] +}, +{ "name": "Lee(a)", + "CS#": 7, + "capabilities2": { "HE": [ null, "4+" ], "C": [ [5,"4+"], "\u20201" ], "s": "8\u2020", "sD": 6 }, + "note_number": "11\u2020", + "notes": [ "A", "C\u20201", "G", "N", "P" ] +}, +{ "name": "Sherman II(a)", + "CS#": "5:brewup", + "capabilities2": { "s": 8, "WP": [ [6,"J4+"], "\u20203" ], "sD": 6 }, + "note_number": "12\u2020", + "notes": [ "A", "G", "K\u20202", "N", "R\u20201", "W\u20203" ] +}, +{ "name": "Sherman III(a)", + "CS#": "5:brewup", + "capabilities2": { "s": 8, "WP": [ [6,"J4+"], "\u20203" ], "sD": 6 }, + "note_number": "13\u2020", + "notes": [ "A", "G", "K\u20202", "N", "R\u20201", "W\u20203" ] +}, +{ "name": "Sherman V(a)", + "CS#": "5:brewup", + "capabilities2": { "s": 8, "WP": [ [6,"J4+"], "\u20203" ], "sD": 6 }, + "note_number": "14\u2020", + "notes": [ "A", "G", "K\u20202", "P", "R\u20201", "W\u20203" ] +}, +{ "name": "Sherman IIA(a)", + "CS#": 6, + "capabilities2": { "A": [ [4,4], [5,5] ], "s": [ [5,5] ], "sM": 8 }, + "note_number": "15\u2020", + "notes": [ "A", "G", "K\u20201" ] +}, +{ "name": "Sherman IIC(a)", + "CS#": "5:brewup", + "capabilities2": { "HE": 7, "D": [ [5,"S4"], [6,5], "\u20202" ], "sM": 8 }, + "note_number": "16\u2020", + "notes": [ "A", "J\u20202", "K\u20201" ] +}, +{ "name": "Sherman VC(a)", + "CS#": "5:brewup", + "capabilities2": { "HE": 7, "D": [ [5,"S4"], [6,5], "\u20202" ], "sM": 8 }, + "note_number": "16\u2020", + "notes": [ "A", "J\u20202", "K\u20201" ] +}, +{ "name": "Sherman IB(a)", + "CS#": 6, + "capabilities2": { "H": 9, "s": 7, "WP": 9, "sM": 8 }, + "note_number": "17\u2020", + "notes": [ "A", "K\u20201" ] +}, +{ "name": "Centaur IV", + "CS#": 5, + "capabilities2": { "H": 6, "s": 9, "sD": 7, "sM": "8\u2020" }, + "note_number": "18", + "notes": [ "S", "Z\u2020" ] +}, +{ "name": "Cromwell IV", + "CS#": 5, + "capabilities2": { "s": 8, "WP": 6, "sD": 7, "sM": "8\u20201" }, + "note_number": "19\u2020", + "notes": [ "Z\u20201" ] +}, +{ "name": "Cromwell VI", + "CS#": 5, + "capabilities2": { "H": 6, "s": 9, "sD": 7, "sM": "8\u20201" }, + "note_number": "20\u2020", + "notes": [ "S", "Z\u20201" ] +}, +{ "name": "Cromwell VII", + "CS#": 6, + "capabilities2": { "s": 8, "WP": 6, "sD": 7, "sM": "8\u2020" }, + "note_number": "19\u2020", + "notes": [ "Z\u20201" ] +}, +{ "name": "Cromwell VIII", + "CS#": 6, + "capabilities2": { "H": 6, "s": 9, "sD": 7, "sM": "8\u20201" }, + "note_number": "20\u2020", + "notes": [ "S", "Z\u20201" ] +}, +{ "name": "Challenger", + "CS#": 6, + "capabilities2": { "HE": 7, "D": [ [5,"S4"], [6,5], "\u20201" ], "sD": 7, "sM": "8\u20202" }, + "note_number": "21\u2020", + "notes": [ "J\u20201", "Z\u20202" ] +}, +{ "name": "Comet", + "CS#": 6, + "capabilities2": { "sD": 7, "sM": "8\u2020" }, + "note_number": "22", + "notes": [ "Z\u2020" ] +}, +{ "name": "Sherman Dozer(a)", + "CS#": "5:brewup", + "capabilities2": { "s": 8, "WP": 6, "sD": 6 }, + "note_number": "23\u2020", + "notes": [ "A", "G", "K\u20202", "P", "R\u20201" ] +}, +{ "name": "Sherman Crab(a)", + "CS#": "5:brewup", + "capabilities2": { "s": 8, "WP": 6, "sD": 6 }, + "note_number": "24\u2020", + "notes": [ "A", "G", "K\u20202", "P", "R\u20201" ] +}, +{ "name": "Matilda I", + "no_radio": "\u00ae", + "CS#": 2, + "capabilities2": { "sD": 5 }, + "note_number": "25\u2020", + "notes": [ "B\u20201" ] +}, +{ "name": "Matilda II", + "CS#": 5, + "capabilities2": { "sD": 6 }, + "note_number": "26\u2020", + "notes": [ "B\u20201", "K\u20202", "N", "P" ] +}, +{ "name": "Matilda II CS", + "CS#": 5, + "capabilities2": { "HE": "9\u20202", "s": [ null, "\u20202" ], "sD": 6 }, + "note_number": "26\u2020", + "notes": [ "K\u20201", "N", "P", "S\u20202" ] +}, +{ "name": "Valentine II", + "CS#": 4, + "capabilities2": { "sM": 8 }, + "note_number": "27\u2020", + "notes": [ "N" ] +}, +{ "name": "Valentine V", + "CS#": 4, + "capabilities2": { "sM": 8 }, + "note_number": "28\u2020", + "notes": [ "K\u20201", "N" ] +}, +{ "name": "Valentine VIII", + "CS#": 4, + "capabilities2": { "HE": 7, "sD": 6 }, + "note_number": "29", + "notes": [ "N" ] +}, +{ "name": "Valentine XI", + "CS#": 4, + "capabilities2": { "s": 8, "WP": 6, "sD": 8 }, + "note_number": "30" +}, +{ "name": "Churchill I", + "CS#": 7, + "capabilities2": { "HE": "9\u20202", "s": [ null, "\u20202" ], "sD": [ [5,4] ], "sM": "8\u20201" }, + "note_number": "31\u2020", + "notes": [ "N", "S\u20202", "Z\u20201", "CC" ] +}, +{ "name": "Churchill IV", + "CS#": 7, + "capabilities2": { "HE": [ [7,"F3"], [8,"4+"], "\u20201" ], "D": [ [6,"J4"], [7,5], "\u20202" ], "sD": [ [6,"4+"] ], "sM": "8\u20203" }, + "note_number": "32\u2020", + "notes": [ "J\u20202", "N", "Y\u20201", "Z\u20203", "CC" ] +}, +{ "name": "Churchill V", + "CS#": 7, + "capabilities2": { "H": 6, "s": 9, "sD": 7, "sM": "8\u20201" }, + "note_number": "33\u2020", + "notes": [ "S", "Z\u20201", "CC" ] +}, +{ "name": "Churchill VI", + "CS#": 7, + "capabilities2": { "s": 8, "WP": [ [6,"J4+"], "\u20201" ], "sD": 7, "sM": "8\u20202" }, + "note_number": "34\u2020", + "notes": [ "W\u20201", "Z\u20202", "CC" ] +}, +{ "name": "Churchill VII", + "CS#": 7, + "capabilities2": { "s": 8, "WP": 6, "sD": 7, "sM": "8\u20201" }, + "note_number": "35\u2020", + "notes": [ "Z\u20201", "CC" ] +}, +{ "name": "Churchill VIII", + "CS#": 7, + "capabilities2": { "H": 6, "s": 9, "sD": 7, "sM": "8\u20201" }, + "note_number": "35\u2020", + "notes": [ "S", "Z\u20201", "CC" ] +}, +{ "name": "Valentine Bridgelayer", + "CS#": 2, + "capabilities2": { "sD": 7 }, + "note_number": "36\u2020", + "notes": [ "M", "P" ] +}, +{ "name": "Churchill Bridgelayer", + "CS#": 2, + "capabilities2": { "sD": 7 }, + "note_number": "36\u2020", + "notes": [ "M", "CC" ] +}, +{ "name": "Churchill AVRE", + "CS#": 8, + "no_if": true, + "capabilities2": { "sD": 7, "sM": "8\u20201" }, + "note_number": "37\u2020", + "notes": [ "Z\u20201", "CC" ] +}, +{ "name": "Churchill Crocodile", + "CS#": 7, + "capabilities2": { "s": 8, "WP": 6, "sD": 7, "sM": "8\u20201" }, + "note_number": "38\u2020", + "notes": [ "Z\u20201", "CC" ] +}, +{ "name": "Deacon", + "CS#": 5, + "capabilities2": { "HE": [ [7,"F3+"], "\u20202" ] }, + "note_number": "39\u2020", + "notes": [ "L\u20201", "N", "Y\u20202" ] +}, +{ "name": "Wolverine(a)", + "CS#": 7, + "capabilities2": { "HE": 7, "A": [ [5,"S4"], [6,5], "\u20201" ], "s": [ [5,5] ] }, + "note_number": "40\u2020", + "notes": [ "A", "J\u20201" ] +}, +{ "name": "Achilles(a)", + "CS#": 7, + "capabilities2": { "HE": 7, "D": [ [6,"S4"], [7,5], "\u20201" ] }, + "note_number": "40\u2020", + "notes": [ "A", "J\u20201" ] +}, +{ "name": "Archer", + "CS#": 5, + "capabilities2": { "HE": 7, "D": [ [6,4], [7,5], "\u20201" ], "sD": 7 }, + "note_number": "41\u2020", + "notes": [ "J\u20201" ] +}, +{ "name": "Daimler", + "CS#": 2, + "capabilities2": { "sD": [ [4,"4+"], "\u2020" ] }, + "note_number": "42\u2020", + "notes": [ "M", "N", "P" ] +}, +{ "name": "Lynx", + "CS#": 2, + "capabilities2": { "sD": 5 }, + "note_number": "42\u2020", + "notes": [ "L\u20201", "M", "P" ] +}, +{ "name": "Humber", + "CS#": 2, + "capabilities2": { "sD": [ [4,"4+"], "\u2020" ] }, + "note_number": "43\u2020", + "notes": [ "L\u20201", "M", "P", "BB\u20202" ] +}, +{ "name": "Stuart Recce", + "CS#": 5, + "note_number": "44\u2020", + "notes": [ "A", "D", "N", "P" ] +}, +{ "name": "Humber III LRC", + "CS#": 3, + "capabilities2": { "sD": 5 }, + "note_number": "45\u2020", + "notes": [ "L\u20201", "N", "P", "Q\u20202" ] +}, +{ "name": "Otter LRC", + "CS#": 3, + "capabilities2": { "sD": 5 }, + "note_number": "45\u2020", + "notes": [ "L\u20201", "P", "Q\u20202" ] +}, +{ "name": "Morris CS9", + "CS#": 4, + "capabilities2": { "sD": 5 }, + "note_number": "46\u2020", + "notes": [ "N", "Q\u20202", "T\u20203", "X\u20201" ] +}, +{ "name": "Rolls Royce", + "CS#": 3, + "capabilities2": { "sD": 5 }, + "note_number": "47\u2020", + "notes": [ "N", "Q\u20202", "T\u20203", "X\u20201" ] +}, +{ "name": "Marmon-Herrington II ME", + "CS#": 4, + "note_number": "48\u2020", + "notes": [ "L\u20201", "N", "Q\u20202", "T\u20203" ] +}, +{ "name": "Marmon-Herrington IIv", + "CS#": 4, + "note_number": "49\u2020", + "notes": [ "L\u20201", "N", "AA\u20202" ] +}, +{ "name": "Marmon-Herrington III MFF", + "CS#": 4, + "note_number": "48\u2020", + "notes": [ "L\u20201", "P", "Q\u20202" ] +}, +{ "name": "Marmon-Herrington III ME", + "CS#": 4, + "note_number": "48\u2020", + "notes": [ "L\u20201", "N", "Q\u20202", "T\u20203" ] +}, +{ "name": "Marmon-Herrington IIIv", + "CS#": 4, + "note_number": "49\u2020", + "notes": [ "K\u20202", "L\u20201", "N", "T\u20202" ] +}, +{ "name": "Humber II", + "CS#": 3, + "capabilities2": { "sD": 6 }, + "note_number": "50\u2020", + "notes": [ "L\u20201", "N" ] +}, +{ "name": "Humber III", + "CS#": 4, + "capabilities2": { "sD": 6 }, + "note_number": "50\u2020", + "notes": [ "K\u20202", "L\u20201", "N", "P" ] +}, +{ "name": "Humber IV", + "CS#": 3, + "capabilities2": { "C": [ [6,"4+"], "\u20202" ], "sD": 6 }, + "note_number": "51\u2020", + "notes": [ "A", "C\u20202", "L\u20201", "P" ] +}, +{ "name": "Daimler", + "CS#": 3, + "capabilities2": { "sD": 6 }, + "note_number": "52\u2020", + "notes": [ "K\u20201", "N", "P" ] +}, +{ "name": "AEC I", + "CS#": 3, + "capabilities2": { "sM": 8 }, + "note_number": "53\u2020", + "notes": [ "N", "X\u20201" ] +}, +{ "name": "AEC II", + "CS#": 4, + "capabilities2": { "HE": [ [7,3], [8,"4+"], "\u20201" ], "D": [ [6,"J4"], [7,5], "\u20202" ], "sM": 8 }, + "note_number": "53", + "notes": [ "J\u20202", "X\u2020", "Y\u20201" ] +}, +{ "name": "AEC III", + "CS#": 4, + "capabilities2": { "s": 8, "WP": 6, "sM": 8 }, + "note_number": "53", + "notes": [ "X\u2020" ] +}, +{ "name": "Staghound I(a)", + "CS#": 5, + "capabilities2": { "C": [ [6,"4+"], "\u20203" ], "sM": 8 }, + "note_number": "54\u2020", + "notes": [ "A", "C\u20203", "G", "K\u20202", "X\u20201" ] +}, +{ "name": "Staghound II(a)", + "CS#": 4, + "capabilities2": { "s": 9, "sD": 6 }, + "note_number": "54\u2020", + "notes": [ "A", "K\u20203", "S\u20202", "X\u20201" ] +}, +{ "name": "Bishop", + "CS#": 5, + "no_if": true, + "capabilities2": { "s": 8 }, + "note_number": "55\u2020", + "notes": [ "K\u20201", "N", "P" ] +}, +{ "name": "Priest(a)", + "CS#": 7, + "capabilities2": { "H": 6, "s": 8, "WP": 7 }, + "note_number": "56\u2020", + "notes": [ "A", "N", "P" ] +}, +{ "name": "Sexton(a)", + "CS#": 7, + "capabilities2": { "s": 8 }, + "note_number": "57\u2020", + "notes": [ "A", "K\u20201" ] +}, +{ "name": "M3 GMC(a)", + "CS#": 4, + "capabilities2": { "s": 8, "WP": [ [7,"J4+"], "\u20201" ] }, + "note_number": "58\u2020", + "notes": [ "A", "N", "W\u20201" ] +}, +{ "name": "Mk VI AA", + "CS#": 2, + "note_number": "59\u2020", + "notes": [ "N", "O\u20201", "AA\u20202" ] +}, +{ "name": "Crusader AA", + "CS#": "4:brewup", + "capabilities2": { "sD": 7 }, + "note_number": "60\u2020", + "notes": [ "AA\u20201" ] +}, +{ "name": "M17 MGMC(a)", + "CS#": 4, + "note_number": "61\u2020", + "notes": [ "A", "F\u2020", "AA\u20201" ] +}, +{ "name": "Humber AA", + "CS#": 2, + "note_number": "62\u2020", + "notes": [ "L\u20201", "N", "O\u20202", "AA\u20203" ] +}, +{ "name": "Staghound AA(a)", + "CS#": 3, + "note_number": "62\u2020", + "notes": [ "A", "F\u2020", "X\u20201", "AA\u20202" ] +}, +{ "name": "M5(a)", + "cs#": "5\u20201", + "note_number": "63\u2020", + "notes": [ "A", "I\u20201", "N" ] +}, +{ "name": "M9(a)", + "cs#": "4\u20201", + "note_number": "63\u2020", + "notes": [ "A", "I\u20201", "N" ] +}, +{ "name": "M5A1(a)", + "cs#": "5\u2020", + "note_number": "63", + "notes": [ "A", "I\u2020" ] +}, +{ "name": "M9A1(a)", + "cs#": "4\u2020", + "note_number": "63", + "notes": [ "A", "I\u2020" ] +}, +{ "name": "Carrier A", + "CS#": 3, + "capabilities2": { "sD": [ [5,"4+"], "\u20201" ] }, + "note_number": "64\u2020", + "notes": [ "N", "P", "U\u20201" ] +}, +{ "name": "Carrier B", + "CS#": 3, + "capabilities2": { "sD": [ [5,"4+"], "\u20202" ] }, + "note_number": "64\u2020", + "notes": [ "N", "P", "Q\u20201", "U\u20202" ] +}, +{ "name": "Carrier C", + "CS#": 3, + "capabilities2": { "sD": [ [5,"4+"], "\u20201" ] }, + "note_number": "64\u2020", + "notes": [ "N", "P", "U\u20201" ] +}, +{ "name": "Carrier, MMG A", + "CS#": 3, + "capabilities2": { "sD": [ [5,"4+"], "\u20202" ] }, + "note_number": "65\u2020", + "notes": [ "N", "P", "Q\u20201", "U\u20202" ] +}, +{ "name": "Carrier, MMG B", + "CS#": 4, + "capabilities2": { "sD": [ [5,"4+"], "\u20202" ] }, + "note_number": "65\u2020", + "notes": [ "U\u20202", "BB\u20201" ] +}, +{ "name": "Carrier, 2-in. MTR", + "CS#": 3, + "capabilities2": { "IR": [ [null,"2+"], "\u2020" ], "s": 7 }, + "note_number": "66\u2020", + "notes": [ "N", "P", "U\u20201" ] +}, +{ "name": "Carrier, 3-in. MTR", + "CS#": "4:brewup\u20201", + "note_number": "67\u2020", + "notes": [ "H\u20201", "N", "P", "U", "BB\u20202" ] +}, +{ "name": "Priest Kangaroo(a)", + "CS#": 7, + "note_number": "68\u2020", + "notes": [ "A", "D" ] +}, +{ "name": "Ram Kangaroo(a)", + "CS#": 7, + "note_number": "68\u2020", + "notes": [ "A", "D", "K\u20201" ] +}, +{ "name": "White(a) SC", + "cs#": "4\u20201", + "note_number": "69\u2020", + "notes": [ "A", "I\u20201", "N" ] +}, +{ "name": "IP Carrier Mk IIA", + "CS#": 4, + "note_number": "70\u2020", + "notes": [ "N", "P", "V", "X\u20201" ] +}, +{ "name": "IP Carrier Mk IIB", + "CS#": 4, + "note_number": "70\u2020", + "notes": [ "N", "P", "Q\u20202", "V", "X\u20201" ] +}, +{ "name": "IP Carrier AOV", + "CS#": 4, + "note_number": "70\u2020", + "notes": [ "P", "Q\u20201", "V", "X\u2020" ] +}, +{ "name": "IP Carrier, 3-in. MTR", + "CS#": "5:brewup\u2020", + "capabilities": [ "IR" ], + "capabilities2": { "s": 8, "WP": 7 }, + "note_number": "71\u20202", + "notes": [ "E\u20203", "H\u2020", "P", "V", "X\u20201", "BB\u20204" ] +}, +{ "name": "Wasp", + "CS#": "3:brewup", + "capabilities2": { "sD": "5\u2020" }, + "note_number": "72\u2020", + "notes": [ "K\u20201", "U" ] +}, +{ "name": "Badger(a)", + "CS#": 3, + "note_number": "72\u2020", + "notes": [ "A", "K\u20201", "M" ] +}, +{ "name": "Buffalo Mk II(a)", + "CS#": 6, + "capabilities2": { "sD": "5\u2020" }, + "note_number": "73\u2020", + "notes": [ "A", "D", "AA\u20201" ] +}, +{ "name": "Buffalo Mk IV(a)", + "CS#": 6, + "capabilities2": { "sD": "5\u2020" }, + "note_number": "73\u2020", + "notes": [ "A", "D", "E\u20201", "AA\u20202" ] +}, +{ "name": "Sherman III DD(a)", + "CS#": "5:brewup", + "capabilities2": { "s": 8, "WP": 6, "sD": 6 }, + "note_number": "74\u2020", + "notes": [ "A", "G", "K\u20202", "R\u20201" ] +}, +{ "name": "DUKW(a)", + "cs#": "7\u20201", + "note_number": "75\u2020", + "notes": [ "A", "D", "I\u20201", "P" ] +}, +{ "name": "Terrapin Mk I", + "cs#": 7, + "note_number": "76\u2020", + "notes": [ "D" ] +}, +{ "name": "2pdr Portee", + "CS#": "4\u20201", + "note_number": "77\u2020", + "notes": [ "H\u20201", "N", "P" ] +}, +{ "name": "Morris C9/B", + "CS#": 4, + "note_number": "78\u2020", + "notes": [ "P", "AA\u20201" ] +}, +{ "name": "Loyd Carrier", + "cs#": 5, + "note_number": "79\u2020", + "notes": [ "N", "P" ] +}, +{ "name": "Quad FAT", + "CS#": "5:brewup\u2020", + "note_number": "80\u2020", + "notes": [ "N", "P" ] +}, +{ "name": "15-cwt Truck", + "cs#": 5, + "note_number": "81\u2020", + "notes": [ "N", "P" ] +}, +{ "name": "30-cwt Lorry", + "cs#": 6, + "note_number": "82\u2020", + "notes": [ "N", "P" ] +}, +{ "name": "3-Ton Lorry", + "cs#": 7, + "note_number": "83\u2020", + "notes": [ "N", "P" ] +}, +{ "name": "\u00bc-Ton Jeep(a)", + "cs#": "2\u20201", + "note_number": "84\u2020", + "notes": [ "A", "I\u20201", "N", "P" ] +}, +{ "name": "\u00be-Ton Truck(a)", + "cs#": 4, + "note_number": "85", + "notes": [ "A", "N" ] +}, +{ "name": "1\u00bd-Ton Truck(a)", + "cs#": 6, + "note_number": "85", + "notes": [ "A", "N" ] +}, +{ "name": "2\u00bd-Ton Truck(a)", + "cs#": 7, + "note_number": "85", + "notes": [ "A", "N" ] +}, +{ "name": "7\u00bd-Ton Truck(a)", + "cs#": 7, + "note_number": "85\u2020", + "notes": [ "A", "N" ] +} + +] diff --git a/vasl_templates/webapp/static/snippets.js b/vasl_templates/webapp/static/snippets.js index b3dc7f5..ae44670 100644 --- a/vasl_templates/webapp/static/snippets.js +++ b/vasl_templates/webapp/static/snippets.js @@ -300,8 +300,8 @@ function make_capabilities( entry, scenario_theater, scenario_year, scenario_mon capabilities.push( make_raw_capability( key, entry.capabilities2[key] ) ) ; } else { - var cap = select_capability_by_date( entry.capabilities2[key], scenario_theater, scenario_year, scenario_month ) ; - if ( ! cap ) + var cap = _select_capability_by_date( entry.capabilities2[key], scenario_theater, scenario_year, scenario_month ) ; + if ( cap === null ) continue ; if ( cap == "" ) { invalid_caps.push( entry.name + ": " + key + ": " + entry.capabilities2[key] ) ; @@ -344,6 +344,14 @@ function make_capabilities( entry, scenario_theater, scenario_year, scenario_mon function make_raw_capability( name, capability ) { + // NOTE: The capability can sometimes not have a # e.g. Tetrarch CS has a s# of "ref1". + if ( capability[0] === null ) { + var cap = capability[1] ; + if ( cap.match( /^\d\+?$/ ) ) + cap = "" + cap + "" ; + return name + cap ; + } + // generate the raw capability string var buf = [ name ] ; for ( var i=0 ; i < capability.length ; ++i ) { @@ -359,56 +367,86 @@ function make_raw_capability( name, capability ) return buf.join( "" ) ; } -function select_capability_by_date( capabilities, scenario_theater, scenario_year, scenario_month ) +function _select_capability_by_date( capabilities, scenario_theater, scenario_year, scenario_month ) { - var MONTH_NAMES = { F:2, J:6, A:8, S:9 } ; + // NOTE: The capability can sometimes not have a number e.g. Tetrarch CS s# = "ref1", Stuart III(a) = "HE(4+)" + var timestamp, val ; + if ( capabilities[0] === null ) { + timestamp = capabilities[1] ; + if ( timestamp.match( /^\d\+?$/ ) ) { + val = _check_capability_timestamp( capabilities, timestamp, scenario_theater, scenario_year, scenario_month ) ; + if ( val === "" ) + return null ; + return ""; + } + return timestamp ; + } // initialize capabilities = capabilities.slice() ; var ref = has_ref( capabilities ) ; - var val = "???" ; + // check all the capability timestamps + var retval = "???" ; for ( var i=0 ; i < capabilities.length ; ++i ) { - - // check for a ETO/PTO-only flag - var cap = capabilities[i][1].toString() ; - if ( cap.substring( cap.length-1 ) === "E" ) { - if ( scenario_theater != "ETO" ) - continue ; - cap = cap.substring( 0, cap.length-1 ) ; - } - if ( cap.substring( cap.length-1 ) === "P" ) { - if ( scenario_theater != "PTO" ) - continue ; - cap = cap.substring( 0, cap.length-1 ) ; - } - // remove any trailing "+" (FIXME! What does it even mean? Doesn't make sense :-/) - if ( cap.substring( cap.length-1 ) == "+" ) - cap = cap.substring( 0, cap.length-1 ) ; - if ( ! cap ) { - val = capabilities[i][0] ; // nb: the capability is always available - break ; - } - // parse the month/year the capability becomes available - var month = MONTH_NAMES[ cap.substring(0,1) ] ; - if ( month ) - cap = cap.substring( 1 ) ; - if ( ! /^\d$/.test( cap ) ) - return "" ; - cap = parseInt( cap ) ; - // check if the capabilitity is available - if ( scenario_year > 1940 + cap ) - val = capabilities[i][0] ; - else if ( scenario_year == 1940 + cap ) { - if( !month || scenario_month >= month ) - val = capabilities[i][0] ; - } + timestamp = capabilities[i][1].toString() ; + val = _check_capability_timestamp( capabilities[i], timestamp, scenario_theater, scenario_year, scenario_month ) ; + if ( val === "" ) + return val ; + if ( val === "" ) + continue ; + retval = val ; } - if ( val === "???" ) + if ( retval === "???" ) return null ; - if ( val === null ) - val = "" ; // nb: this can happen for IR - return ref ? val+ref : val ; + if ( retval === null ) + retval = "" ; // nb: this can happen for IR + return ref ? retval+ref : retval ; +} + +function _check_capability_timestamp( capabilities, timestamp, scenario_theater, scenario_year, scenario_month ) +{ + var MONTH_NAMES = { F:2, J:6, A:8, S:9 } ; + + // check for a ETO/PTO-only flag + if ( timestamp.substring( timestamp.length-1 ) === "E" ) { + if ( scenario_theater != "ETO" ) + return "" ; + timestamp = timestamp.substring( 0, timestamp.length-1 ) ; + } + if ( timestamp.substring( timestamp.length-1 ) === "P" ) { + if ( scenario_theater != "PTO" ) + return "" ; + timestamp = timestamp.substring( 0, timestamp.length-1 ) ; + } + + // remove any trailing "+" (FIXME! What does it even mean? Doesn't make sense :-/) + if ( timestamp.substring( timestamp.length-1 ) == "+" ) + timestamp = timestamp.substring( 0, timestamp.length-1 ) ; + + // check if there is anything left + if ( ! timestamp ) { + // nope - the capability is always available + return capabilities[0] ; + } + + // parse the month/year the capability becomes available + var month = MONTH_NAMES[ timestamp.substring(0,1) ] ; + if ( month ) + timestamp = timestamp.substring( 1 ) ; + if ( ! /^\d$/.test( timestamp ) ) + return "" ; + timestamp = parseInt( timestamp ) ; + + // check if the capabilitity is available + if ( scenario_year > 1940 + timestamp ) + return capabilities[0] ; + else if ( scenario_year == 1940 + timestamp ) { + if( !month || scenario_month >= month ) + return capabilities[0] ; + } + + return "" ; } function has_ref( val ) @@ -433,8 +471,9 @@ function make_crew_survival( entry ) return null ; // check if the vehicle is subject to brew up - if ( crew_survival.substring(crew_survival.length-7) == ":brewup" ) - crew_survival = crew_survival.substring(0,crew_survival.length-7) + " (brew up)" ; + var pos = crew_survival.indexOf( ":brewup" ) ; + if ( pos !== -1 ) + crew_survival = crew_survival.substring(0,pos) + " (brew up)" + crew_survival.substring(pos+7) ; return crew_survival ; } diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1940.txt new file mode 100644 index 0000000..83faa07 --- /dev/null +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1940.txt @@ -0,0 +1,131 @@ +=== vehicles/british/1940 === + +Name Radio IF Crew survival Capabilities (effective) # Notes +------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- --------------------- ------ ---------------------------------------------------- +Mark VIB n/a yes CS 3 sD6 sD6 1† N P +Mark VIC n/a yes CS 3 sD6 sD6 1† n/a +Tetrarch n/a yes CS 3 sD6 sD6 2† n/a +Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1 +Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P +Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 sD5 3† A C†1 G N P +Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G +Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C† +A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N +A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2 +A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N +A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2 +A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K† +A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N +A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2 +Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N +Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N +Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] sD7 sM8†[2] 10† N Y†1 Z†2 +Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 s8† sM8 11† A C†1 G N P +Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 s8† sD6 11† A C†1 G N P +Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 12† A G K†2 N R†1 W†3 +Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 13† A G K†2 N R†1 W†3 +Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 14† A G K†2 P R†1 W†3 +Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 15† A G K†1 +Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1 +Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1 +Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1 +Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z† +Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1 +Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1 +Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] HE7 sD7 sM8†[2] 21† J†1 Z†2 +Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z† +Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1 +Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1 +Matilda I ® yes CS 2 sD5 sD5 25† B†1 +Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P +Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2 +Valentine II n/a yes CS 4 sM8 sM8 27† N +Valentine V n/a yes CS 4 sM8 sM8 28† K†1 N +Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 N +Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a +Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sM8†[1] 31† N S†2 Z†1 CC +Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] sM8†[3] 32† J†2 N Y†1 Z†3 CC +Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC +Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] s8 sD7 sM8†[2] 34† W†1 Z†2 CC +Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC +Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC +Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P +Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC +Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC +Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC +Deacon n/a yes CS 5 HE7[F3+]†[2] n/a 39† L†1 N Y†2 +Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] HE7 40† A J†1 +Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 HE7 40† A J†1 +Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 HE7 sD7 41† J†1 +Daimler n/a yes CS 2 sD4[4+]† n/a 42† M N P +Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P +Humber n/a yes CS 2 sD4[4+]† n/a 43† L†1 M P BB†2 +Stuart Recce n/a yes CS 5 n/a n/a 44† A D N P +Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2 +Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2 +Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1 +Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1 +Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2 +Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2 +Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2 +Humber II n/a yes CS 3 sD6 sD6 50† L†1 N +Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P +Humber IV n/a yes CS 3 C6[4+]†[2] sD6 sD6 51† A C†2 L†1 P +Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P +AEC I n/a yes CS 3 sM8 sM8 53† N X†1 +AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 sM8 53 J†2 X† Y†1 +AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X† +Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 sM8 54† A C†3 G K†2 X†1 +Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1 +Bishop n/a n/a CS 5 s8 s8 55† K†1 N P +Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P +Sexton(a) n/a yes CS 7 s8 s8 57† A K†1 +M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 s8 58† A N W†1 +Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2 +Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1 +M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1 +Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3 +Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2 +M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N +M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N +M5A1(a) n/a yes cs 5† n/a n/a 63 A I† +M9A1(a) n/a yes cs 4† n/a n/a 63 A I† +Carrier A n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1 +Carrier B n/a yes CS 3 sD5[4+]†[2] n/a 64† N P Q†1 U†2 +Carrier C n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1 +Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] n/a 65† N P Q†1 U†2 +Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] n/a 65† U†2 BB†1 +Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 s7 66† N P U†1 +Carrier, 3-in. MTR n/a yes CS 4 (brew up)1 n/a n/a 67† H†1 N P U BB†2 +Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D +Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1 +White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N +IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1 +IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1 +IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X† +IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4 +Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U +Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M +Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1 +Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2 +Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1 +DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P +Terrapin Mk I n/a yes cs 7 n/a n/a 76† D +2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P +Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1 +Loyd Carrier n/a yes cs 5 n/a n/a 79† N P +Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P +15-cwt Truck n/a yes cs 5 n/a n/a 81† N P +30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P +3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P +¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P +¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N +1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N +2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N +7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1941.txt new file mode 100644 index 0000000..11885c4 --- /dev/null +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1941.txt @@ -0,0 +1,131 @@ +=== vehicles/british/1941 === + +Name Radio IF Crew survival Capabilities (effective) # Notes +------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- --------------------- ------ ---------------------------------------------------- +Mark VIB n/a yes CS 3 sD6 sD6 1† N P +Mark VIC n/a yes CS 3 sD6 sD6 1† n/a +Tetrarch n/a yes CS 3 sD6 sD6 2† n/a +Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1 +Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P +Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 sD5 3† A C†1 G N P +Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G +Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C† +A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N +A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2 +A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N +A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2 +A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K† +A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N +A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2 +Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N +Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N +Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] sD7 sM8†[2] 10† N Y†1 Z†2 +Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 s8† sM8 11† A C†1 G N P +Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 s8† sD6 11† A C†1 G N P +Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 12† A G K†2 N R†1 W†3 +Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 13† A G K†2 N R†1 W†3 +Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 14† A G K†2 P R†1 W†3 +Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 15† A G K†1 +Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1 +Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1 +Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1 +Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z† +Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1 +Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1 +Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] HE7 sD7 sM8†[2] 21† J†1 Z†2 +Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z† +Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1 +Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1 +Matilda I ® yes CS 2 sD5 sD5 25† B†1 +Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P +Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2 +Valentine II n/a yes CS 4 sM8 sM8 27† N +Valentine V n/a yes CS 4 sM8 sM8 28† K†1 N +Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 N +Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a +Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sM8†[1] 31† N S†2 Z†1 CC +Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] sM8†[3] 32† J†2 N Y†1 Z†3 CC +Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC +Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] s8 sD7 sM8†[2] 34† W†1 Z†2 CC +Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC +Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC +Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P +Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC +Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC +Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC +Deacon n/a yes CS 5 HE7[F3+]†[2] n/a 39† L†1 N Y†2 +Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] HE7 40† A J†1 +Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 HE7 40† A J†1 +Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 HE7 sD7 41† J†1 +Daimler n/a yes CS 2 sD4[4+]† n/a 42† M N P +Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P +Humber n/a yes CS 2 sD4[4+]† n/a 43† L†1 M P BB†2 +Stuart Recce n/a yes CS 5 n/a n/a 44† A D N P +Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2 +Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2 +Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1 +Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1 +Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2 +Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2 +Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2 +Humber II n/a yes CS 3 sD6 sD6 50† L†1 N +Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P +Humber IV n/a yes CS 3 C6[4+]†[2] sD6 sD6 51† A C†2 L†1 P +Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P +AEC I n/a yes CS 3 sM8 sM8 53† N X†1 +AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 sM8 53 J†2 X† Y†1 +AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X† +Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 sM8 54† A C†3 G K†2 X†1 +Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1 +Bishop n/a n/a CS 5 s8 s8 55† K†1 N P +Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P +Sexton(a) n/a yes CS 7 s8 s8 57† A K†1 +M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 s8 58† A N W†1 +Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2 +Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1 +M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1 +Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3 +Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2 +M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N +M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N +M5A1(a) n/a yes cs 5† n/a n/a 63 A I† +M9A1(a) n/a yes cs 4† n/a n/a 63 A I† +Carrier A n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1 +Carrier B n/a yes CS 3 sD5[4+]†[2] n/a 64† N P Q†1 U†2 +Carrier C n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1 +Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] n/a 65† N P Q†1 U†2 +Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] n/a 65† U†2 BB†1 +Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 s7 66† N P U†1 +Carrier, 3-in. MTR n/a yes CS 4 (brew up)1 n/a n/a 67† H†1 N P U BB†2 +Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D +Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1 +White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N +IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1 +IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1 +IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X† +IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4 +Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U +Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M +Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1 +Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2 +Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1 +DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P +Terrapin Mk I n/a yes cs 7 n/a n/a 76† D +2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P +Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1 +Loyd Carrier n/a yes cs 5 n/a n/a 79† N P +Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P +15-cwt Truck n/a yes cs 5 n/a n/a 81† N P +30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P +3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P +¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P +¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N +1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N +2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N +7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1942.txt new file mode 100644 index 0000000..4950392 --- /dev/null +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1942.txt @@ -0,0 +1,131 @@ +=== vehicles/british/1942 === + +Name Radio IF Crew survival Capabilities (effective) # Notes +------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- --------------------- ------ ---------------------------------------------------- +Mark VIB n/a yes CS 3 sD6 sD6 1† N P +Mark VIC n/a yes CS 3 sD6 sD6 1† n/a +Tetrarch n/a yes CS 3 sD6 sD6 2† n/a +Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1 +Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P +Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 sD5 3† A C†1 G N P +Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G +Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C† +A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N +A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2 +A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N +A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2 +A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K† +A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N +A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2 +Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N +Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N +Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] sD7 sM8†[2] 10† N Y†1 Z†2 +Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 s8† sM8 11† A C†1 G N P +Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 s8† sD6 11† A C†1 G N P +Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 12† A G K†2 N R†1 W†3 +Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 13† A G K†2 N R†1 W†3 +Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 14† A G K†2 P R†1 W†3 +Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 15† A G K†1 +Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1 +Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1 +Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1 +Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z† +Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1 +Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1 +Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] HE7 sD7 sM8†[2] 21† J†1 Z†2 +Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z† +Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1 +Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1 +Matilda I ® yes CS 2 sD5 sD5 25† B†1 +Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P +Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2 +Valentine II n/a yes CS 4 sM8 sM8 27† N +Valentine V n/a yes CS 4 sM8 sM8 28† K†1 N +Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 N +Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a +Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sM8†[1] 31† N S†2 Z†1 CC +Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] sM8†[3] 32† J†2 N Y†1 Z†3 CC +Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC +Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] s8 sD7 sM8†[2] 34† W†1 Z†2 CC +Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC +Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC +Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P +Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC +Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC +Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC +Deacon n/a yes CS 5 HE7[F3+]†[2] n/a 39† L†1 N Y†2 +Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] HE7 40† A J†1 +Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 HE7 40† A J†1 +Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 HE7 sD7 41† J†1 +Daimler n/a yes CS 2 sD4[4+]† n/a 42† M N P +Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P +Humber n/a yes CS 2 sD4[4+]† n/a 43† L†1 M P BB†2 +Stuart Recce n/a yes CS 5 n/a n/a 44† A D N P +Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2 +Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2 +Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1 +Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1 +Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2 +Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2 +Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2 +Humber II n/a yes CS 3 sD6 sD6 50† L†1 N +Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P +Humber IV n/a yes CS 3 C6[4+]†[2] sD6 sD6 51† A C†2 L†1 P +Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P +AEC I n/a yes CS 3 sM8 sM8 53† N X†1 +AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 sM8 53 J†2 X† Y†1 +AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X† +Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 sM8 54† A C†3 G K†2 X†1 +Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1 +Bishop n/a n/a CS 5 s8 s8 55† K†1 N P +Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P +Sexton(a) n/a yes CS 7 s8 s8 57† A K†1 +M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 s8 58† A N W†1 +Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2 +Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1 +M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1 +Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3 +Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2 +M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N +M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N +M5A1(a) n/a yes cs 5† n/a n/a 63 A I† +M9A1(a) n/a yes cs 4† n/a n/a 63 A I† +Carrier A n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1 +Carrier B n/a yes CS 3 sD5[4+]†[2] n/a 64† N P Q†1 U†2 +Carrier C n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1 +Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] n/a 65† N P Q†1 U†2 +Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] n/a 65† U†2 BB†1 +Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 IR† s7 66† N P U†1 +Carrier, 3-in. MTR n/a yes CS 4 (brew up)1 n/a n/a 67† H†1 N P U BB†2 +Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D +Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1 +White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N +IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1 +IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1 +IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X† +IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4 +Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U +Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M +Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1 +Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2 +Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1 +DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P +Terrapin Mk I n/a yes cs 7 n/a n/a 76† D +2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P +Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1 +Loyd Carrier n/a yes cs 5 n/a n/a 79† N P +Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P +15-cwt Truck n/a yes cs 5 n/a n/a 81† N P +30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P +3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P +¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P +¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N +1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N +2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N +7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1943.txt new file mode 100644 index 0000000..f64e501 --- /dev/null +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1943.txt @@ -0,0 +1,131 @@ +=== vehicles/british/1943 === + +Name Radio IF Crew survival Capabilities (effective) # Notes +------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- --------------------- ------ ---------------------------------------------------- +Mark VIB n/a yes CS 3 sD6 sD6 1† N P +Mark VIC n/a yes CS 3 sD6 sD6 1† n/a +Tetrarch n/a yes CS 3 sD6 sD6 2† n/a +Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1 +Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P +Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 sD5 3† A C†1 G N P +Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G +Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C† +A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N +A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2 +A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N +A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2 +A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K† +A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N +A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2 +Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N +Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N +Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] sD7 sM8†[2] 10† N Y†1 Z†2 +Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 s8† sM8 11† A C†1 G N P +Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 s8† sD6 11† A C†1 G N P +Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 12† A G K†2 N R†1 W†3 +Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 13† A G K†2 N R†1 W†3 +Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 14† A G K†2 P R†1 W†3 +Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 sM8 15† A G K†1 +Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1 +Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1 +Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1 +Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z† +Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1 +Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1 +Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] HE7 sD7 sM8†[2] 21† J†1 Z†2 +Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z† +Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1 +Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1 +Matilda I ® yes CS 2 sD5 sD5 25† B†1 +Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P +Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2 +Valentine II n/a yes CS 4 sM8 sM8 27† N +Valentine V n/a yes CS 4 sM8 sM8 28† K†1 N +Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 N +Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a +Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sM8†[1] 31† N S†2 Z†1 CC +Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] sM8†[3] 32† J†2 N Y†1 Z†3 CC +Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC +Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] s8 sD7 sM8†[2] 34† W†1 Z†2 CC +Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC +Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC +Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P +Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC +Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC +Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC +Deacon n/a yes CS 5 HE7[F3+]†[2] n/a 39† L†1 N Y†2 +Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] HE7 40† A J†1 +Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 HE7 40† A J†1 +Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 HE7 sD7 41† J†1 +Daimler n/a yes CS 2 sD4[4+]† n/a 42† M N P +Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P +Humber n/a yes CS 2 sD4[4+]† n/a 43† L†1 M P BB†2 +Stuart Recce n/a yes CS 5 n/a n/a 44† A D N P +Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2 +Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2 +Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1 +Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1 +Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2 +Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2 +Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2 +Humber II n/a yes CS 3 sD6 sD6 50† L†1 N +Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P +Humber IV n/a yes CS 3 C6[4+]†[2] sD6 sD6 51† A C†2 L†1 P +Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P +AEC I n/a yes CS 3 sM8 sM8 53† N X†1 +AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 HE7†[1] sM8 53 J†2 X† Y†1 +AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X† +Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 sM8 54† A C†3 G K†2 X†1 +Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1 +Bishop n/a n/a CS 5 s8 s8 55† K†1 N P +Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P +Sexton(a) n/a yes CS 7 s8 s8 57† A K†1 +M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 s8 58† A N W†1 +Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2 +Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1 +M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1 +Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3 +Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2 +M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N +M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N +M5A1(a) n/a yes cs 5† n/a n/a 63 A I† +M9A1(a) n/a yes cs 4† n/a n/a 63 A I† +Carrier A n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1 +Carrier B n/a yes CS 3 sD5[4+]†[2] n/a 64† N P Q†1 U†2 +Carrier C n/a yes CS 3 sD5[4+]†[1] n/a 64† N P U†1 +Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] n/a 65† N P Q†1 U†2 +Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] n/a 65† U†2 BB†1 +Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 IR† s7 66† N P U†1 +Carrier, 3-in. MTR n/a yes CS 4 (brew up)1 n/a n/a 67† H†1 N P U BB†2 +Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D +Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1 +White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N +IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1 +IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1 +IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X† +IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4 +Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U +Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M +Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1 +Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2 +Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1 +DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P +Terrapin Mk I n/a yes cs 7 n/a n/a 76† D +2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P +Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1 +Loyd Carrier n/a yes cs 5 n/a n/a 79† N P +Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P +15-cwt Truck n/a yes cs 5 n/a n/a 81† N P +30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P +3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P +¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P +¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N +1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N +2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N +7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1944.txt new file mode 100644 index 0000000..c8e0017 --- /dev/null +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1944.txt @@ -0,0 +1,131 @@ +=== vehicles/british/1944 === + +Name Radio IF Crew survival Capabilities (effective) # Notes +------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- ------------------------- ------ ---------------------------------------------------- +Mark VIB n/a yes CS 3 sD6 sD6 1† N P +Mark VIC n/a yes CS 3 sD6 sD6 1† n/a +Tetrarch n/a yes CS 3 sD6 sD6 2† n/a +Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1 +Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P +Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 C6†[1] HE sD5 3† A C†1 G N P +Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G +Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C† +A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N +A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2 +A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N +A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2 +A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K† +A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N +A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2 +Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N +Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N +Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] HE7†[1] sD7 sM8†[2] 10† N Y†1 Z†2 +Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 C5†[1] HE s8† sM8 11† A C†1 G N P +Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 C5†[1] HE s8† sD6 11† A C†1 G N P +Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 12† A G K†2 N R†1 W†3 +Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 13† A G K†2 N R†1 W†3 +Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 s8 sD6 14† A G K†2 P R†1 W†3 +Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 A4 sM8 15† A G K†1 +Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1 +Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 HE7 sM8 16† A J†2 K†1 +Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1 +Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z† +Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1 +Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1 +Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] HE7 sD7 sM8†[2] 21† J†1 Z†2 +Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z† +Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1 +Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1 +Matilda I ® yes CS 2 sD5 sD5 25† B†1 +Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P +Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2 +Valentine II n/a yes CS 4 sM8 sM8 27† N +Valentine V n/a yes CS 4 sM8 sM8 28† K†1 N +Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 N +Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a +Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sD5 sM8†[1] 31† N S†2 Z†1 CC +Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] HE8†[1] sD6 sM8†[3] 32† J†2 N Y†1 Z†3 CC +Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC +Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] s8 sD7 sM8†[2] 34† W†1 Z†2 CC +Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC +Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC +Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P +Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC +Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC +Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC +Deacon n/a yes CS 5 HE7[F3+]†[2] HE7†[2] 39† L†1 N Y†2 +Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] HE7 40† A J†1 +Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 HE7 40† A J†1 +Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 D6†[1] HE7 sD7 41† J†1 +Daimler n/a yes CS 2 sD4[4+]† sD4† 42† M N P +Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P +Humber n/a yes CS 2 sD4[4+]† sD4† 43† L†1 M P BB†2 +Stuart Recce n/a yes CS 5 n/a n/a 44† A D N P +Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2 +Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2 +Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1 +Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1 +Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2 +Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2 +Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2 +Humber II n/a yes CS 3 sD6 sD6 50† L†1 N +Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P +Humber IV n/a yes CS 3 C6[4+]†[2] sD6 C6†[2] sD6 51† A C†2 L†1 P +Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P +AEC I n/a yes CS 3 sM8 sM8 53† N X†1 +AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 HE8†[1] sM8 53 J†2 X† Y†1 +AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X† +Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 C6†[3] sM8 54† A C†3 G K†2 X†1 +Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1 +Bishop n/a n/a CS 5 s8 s8 55† K†1 N P +Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P +Sexton(a) n/a yes CS 7 s8 s8 57† A K†1 +M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 s8 58† A N W†1 +Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2 +Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1 +M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1 +Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3 +Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2 +M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N +M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N +M5A1(a) n/a yes cs 5† n/a n/a 63 A I† +M9A1(a) n/a yes cs 4† n/a n/a 63 A I† +Carrier A n/a yes CS 3 sD5[4+]†[1] sD5†[1] 64† N P U†1 +Carrier B n/a yes CS 3 sD5[4+]†[2] sD5†[2] 64† N P Q†1 U†2 +Carrier C n/a yes CS 3 sD5[4+]†[1] sD5†[1] 64† N P U†1 +Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] sD5†[2] 65† N P Q†1 U†2 +Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] sD5†[2] 65† U†2 BB†1 +Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 IR† s7 66† N P U†1 +Carrier, 3-in. MTR n/a yes CS 4 (brew up)1 n/a n/a 67† H†1 N P U BB†2 +Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D +Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1 +White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N +IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1 +IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1 +IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X† +IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4 +Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U +Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M +Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1 +Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2 +Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1 +DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P +Terrapin Mk I n/a yes cs 7 n/a n/a 76† D +2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P +Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1 +Loyd Carrier n/a yes cs 5 n/a n/a 79† N P +Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P +15-cwt Truck n/a yes cs 5 n/a n/a 81† N P +30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P +3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P +¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P +¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N +1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N +2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N +7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1945.txt new file mode 100644 index 0000000..4a2376d --- /dev/null +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/british/1945.txt @@ -0,0 +1,131 @@ +=== vehicles/british/1945 === + +Name Radio IF Crew survival Capabilities (effective) # Notes +------------------------- ------- ---- ------------------------------------------------- ----------------------------------------------- -------------------------- ------ ---------------------------------------------------- +Mark VIB n/a yes CS 3 sD6 sD6 1† N P +Mark VIC n/a yes CS 3 sD6 sD6 1† n/a +Tetrarch n/a yes CS 3 sD6 sD6 2† n/a +Tetrarch CS n/a yes CS 3 HE9†[1] s†[1] sD6 HE9†[1] s†[1] sD6 2† S†1 +Stuart I(a) n/a yes CS 4 sD5 sD5 3† A N P +Stuart III(a) n/a yes CS 4 C6[4+]†[1] HE[4+] sD5 C6†[1] HE sD5 3† A C†1 G N P +Stuart V(a) n/a yes CS 4 C6†[1] sD5 C6†[1] sD5 4† A C†1 G +Locust(a) n/a yes CS 3 C6† sD6 C6† sD6 5 A C† +A9 n/a yes CS 5 (brew up) sD6 sD6 6† K†1 N +A9 CS n/a yes CS 5 (brew up) s†[2] sD6 s†[2] sD6 6† K†1 N S†2 +A10 Mk IA n/a yes CS 5 (brew up)† sD6 sD6 7† B†1 K†2 N +A10 Mk IA CS n/a yes CS 5 (brew up)† s†[2] sD6 s†[2] sD6 7† K†1 N S†2 +A13 Mk I n/a yes CS 4 (brew up) sD6 sD6 8 K† +A13 Mk II n/a yes CS 4 (brew up) sD6 sD6 8† B†1 K†2 N +A13 Mk II CS n/a yes CS 4 (brew up) s†[2] sD6 s†[2] sD6 8† K†1 N S†2 +Crusader I n/a yes CS 5 (brew up) sM8 sM8 9† K†1 N +Crusader I CS n/a yes CS 5 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader II n/a yes CS 4 (brew up) sM8 sM8 9† K†1 N +Crusader II CS n/a yes CS 4 (brew up) HE9 s†[2] sM8 HE9 s†[2] sM8 9† K†1 N S†2 +Crusader III n/a yes CS 3 (brew up) HE7[F3+]†[1] sD7 sM8†[2] HE7†[1] sD7 sM8†[2] 10† N Y†1 Z†2 +Grant(a) n/a yes CS 6 C5[4+]†[1] HE[4+] s8† sM8 C5†[1] HE s8† sM8 11† A C†1 G N P +Lee(a) n/a yes CS 7 C5[4+]†[1] HE[4+] s8† sD6 C5†[1] HE s8† sD6 11† A C†1 G N P +Sherman II(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 WP6†[3] s8 sD6 12† A G K†2 N R†1 W†3 +Sherman III(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 WP6†[3] s8 sD6 13† A G K†2 N R†1 W†3 +Sherman V(a) n/a yes CS 5 (brew up) WP6[J4+]†[3] s8 sD6 WP6†[3] s8 sD6 14† A G K†2 P R†1 W†3 +Sherman IIA(a) n/a yes CS 6 A4[4]5[5] s5[5] sM8 A5 s5 sM8 15† A G K†1 +Sherman IIC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 D6†[2] HE7 sM8 16† A J†2 K†1 +Sherman VC(a) n/a yes CS 5 (brew up) D5[S4]6[5]†[2] HE7 sM8 D6†[2] HE7 sM8 16† A J†2 K†1 +Sherman IB(a) n/a yes CS 6 H9 WP9 s7 sM8 H9 WP9 s7 sM8 17† A K†1 +Centaur IV n/a yes CS 5 H6 s9 sD7 sM8† H6 s9 sD7 sM8† 18 S Z† +Cromwell IV n/a yes CS 5 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 19† Z†1 +Cromwell VI n/a yes CS 5 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Cromwell VII n/a yes CS 6 WP6 s8 sD7 sM8† WP6 s8 sD7 sM8† 19† Z†1 +Cromwell VIII n/a yes CS 6 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 20† S Z†1 +Challenger n/a yes CS 6 D5[S4]6[5]†[1] HE7 sD7 sM8†[2] D6†[1] HE7 sD7 sM8†[2] 21† J†1 Z†2 +Comet n/a yes CS 6 sD7 sM8† sD7 sM8† 22 Z† +Sherman Dozer(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 23† A G K†2 P R†1 +Sherman Crab(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 24† A G K†2 P R†1 +Matilda I ® yes CS 2 sD5 sD5 25† B†1 +Matilda II n/a yes CS 5 sD6 sD6 26† B†1 K†2 N P +Matilda II CS n/a yes CS 5 HE9†[2] s†[2] sD6 HE9†[2] s†[2] sD6 26† K†1 N P S†2 +Valentine II n/a yes CS 4 sM8 sM8 27† N +Valentine V n/a yes CS 4 sM8 sM8 28† K†1 N +Valentine VIII n/a yes CS 4 HE7 sD6 HE7 sD6 29 N +Valentine XI n/a yes CS 4 WP6 s8 sD8 WP6 s8 sD8 30 n/a +Churchill I n/a yes CS 7 HE9†[2] s†[2] sD5[4] sM8†[1] HE9†[2] s†[2] sD5 sM8†[1] 31† N S†2 Z†1 CC +Churchill IV n/a yes CS 7 D6[J4]7[5]†[2] HE7[F3]8[4+]†[1] sD6[4+] sM8†[3] D7†[2] HE8†[1] sD6 sM8†[3] 32† J†2 N Y†1 Z†3 CC +Churchill V n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 33† S Z†1 CC +Churchill VI n/a yes CS 7 WP6[J4+]†[1] s8 sD7 sM8†[2] WP6†[1] s8 sD7 sM8†[2] 34† W†1 Z†2 CC +Churchill VII n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 35† Z†1 CC +Churchill VIII n/a yes CS 7 H6 s9 sD7 sM8†[1] H6 s9 sD7 sM8†[1] 35† S Z†1 CC +Valentine Bridgelayer n/a yes CS 2 sD7 sD7 36† M P +Churchill Bridgelayer n/a yes CS 2 sD7 sD7 36† M CC +Churchill AVRE n/a n/a CS 8 sD7 sM8†[1] sD7 sM8†[1] 37† Z†1 CC +Churchill Crocodile n/a yes CS 7 WP6 s8 sD7 sM8†[1] WP6 s8 sD7 sM8†[1] 38† Z†1 CC +Deacon n/a yes CS 5 HE7[F3+]†[2] HE7†[2] 39† L†1 N Y†2 +Wolverine(a) n/a yes CS 7 A5[S4]6[5]†[1] HE7 s5[5] A6†[1] HE7 s5 40† A J†1 +Achilles(a) n/a yes CS 7 D6[S4]7[5]†[1] HE7 D7†[1] HE7 40† A J†1 +Archer n/a yes CS 5 D6[4]7[5]†[1] HE7 sD7 D7†[1] HE7 sD7 41† J†1 +Daimler n/a yes CS 2 sD4[4+]† sD4† 42† M N P +Lynx n/a yes CS 2 sD5 sD5 42† L†1 M P +Humber n/a yes CS 2 sD4[4+]† sD4† 43† L†1 M P BB†2 +Stuart Recce n/a yes CS 5 n/a n/a 44† A D N P +Humber III LRC n/a yes CS 3 sD5 sD5 45† L†1 N P Q†2 +Otter LRC n/a yes CS 3 sD5 sD5 45† L†1 P Q†2 +Morris CS9 n/a yes CS 4 sD5 sD5 46† N Q†2 T†3 X†1 +Rolls Royce n/a yes CS 3 sD5 sD5 47† N Q†2 T†3 X†1 +Marmon-Herrington II ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIv n/a yes CS 4 n/a n/a 49† L†1 N AA†2 +Marmon-Herrington III MFF n/a yes CS 4 n/a n/a 48† L†1 P Q†2 +Marmon-Herrington III ME n/a yes CS 4 n/a n/a 48† L†1 N Q†2 T†3 +Marmon-Herrington IIIv n/a yes CS 4 n/a n/a 49† K†2 L†1 N T†2 +Humber II n/a yes CS 3 sD6 sD6 50† L†1 N +Humber III n/a yes CS 4 sD6 sD6 50† K†2 L†1 N P +Humber IV n/a yes CS 3 C6[4+]†[2] sD6 C6†[2] sD6 51† A C†2 L†1 P +Daimler n/a yes CS 3 sD6 sD6 52† K†1 N P +AEC I n/a yes CS 3 sM8 sM8 53† N X†1 +AEC II n/a yes CS 4 D6[J4]7[5]†[2] HE7[3]8[4+]†[1] sM8 D7†[2] HE8†[1] sM8 53 J†2 X† Y†1 +AEC III n/a yes CS 4 WP6 s8 sM8 WP6 s8 sM8 53 X† +Staghound I(a) n/a yes CS 5 C6[4+]†[3] sM8 C6†[3] sM8 54† A C†3 G K†2 X†1 +Staghound II(a) n/a yes CS 4 s9 sD6 s9 sD6 54† A K†3 S†2 X†1 +Bishop n/a n/a CS 5 s8 s8 55† K†1 N P +Priest(a) n/a yes CS 7 H6 WP7 s8 H6 WP7 s8 56† A N P +Sexton(a) n/a yes CS 7 s8 s8 57† A K†1 +M3 GMC(a) n/a yes CS 4 WP7[J4+]†[1] s8 WP7†[1] s8 58† A N W†1 +Mk VI AA n/a yes CS 2 n/a n/a 59† N O†1 AA†2 +Crusader AA n/a yes CS 4 (brew up) sD7 sD7 60† AA†1 +M17 MGMC(a) n/a yes CS 4 n/a n/a 61† A F† AA†1 +Humber AA n/a yes CS 2 n/a n/a 62† L†1 N O†2 AA†3 +Staghound AA(a) n/a yes CS 3 n/a n/a 62† A F† X†1 AA†2 +M5(a) n/a yes cs 5†1 n/a n/a 63† A I†1 N +M9(a) n/a yes cs 4†1 n/a n/a 63† A I†1 N +M5A1(a) n/a yes cs 5† n/a n/a 63 A I† +M9A1(a) n/a yes cs 4† n/a n/a 63 A I† +Carrier A n/a yes CS 3 sD5[4+]†[1] sD5†[1] 64† N P U†1 +Carrier B n/a yes CS 3 sD5[4+]†[2] sD5†[2] 64† N P Q†1 U†2 +Carrier C n/a yes CS 3 sD5[4+]†[1] sD5†[1] 64† N P U†1 +Carrier, MMG A n/a yes CS 3 sD5[4+]†[2] sD5†[2] 65† N P Q†1 U†2 +Carrier, MMG B n/a yes CS 4 sD5[4+]†[2] sD5†[2] 65† U†2 BB†1 +Carrier, 2-in. MTR n/a yes CS 3 IR[2+]† s7 IR† s7 66† N P U†1 +Carrier, 3-in. MTR n/a yes CS 4 (brew up)1 n/a n/a 67† H†1 N P U BB†2 +Priest Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D +Ram Kangaroo(a) n/a yes CS 7 n/a n/a 68† A D K†1 +White(a) SC n/a yes cs 4†1 n/a n/a 69† A I†1 N +IP Carrier Mk IIA n/a yes CS 4 n/a n/a 70† N P V X†1 +IP Carrier Mk IIB n/a yes CS 4 n/a n/a 70† N P Q†2 V X†1 +IP Carrier AOV n/a yes CS 4 n/a n/a 70† P Q†1 V X† +IP Carrier, 3-in. MTR n/a yes CS 5 (brew up)† IR WP7 s8 IR WP7 s8 71†[2] E†3 H† P V X†1 BB†4 +Wasp n/a yes CS 3 (brew up) sD5† sD5† 72† K†1 U +Badger(a) n/a yes CS 3 n/a n/a 72† A K†1 M +Buffalo Mk II(a) n/a yes CS 6 sD5† sD5† 73† A D AA†1 +Buffalo Mk IV(a) n/a yes CS 6 sD5† sD5† 73† A D E†1 AA†2 +Sherman III DD(a) n/a yes CS 5 (brew up) WP6 s8 sD6 WP6 s8 sD6 74† A G K†2 R†1 +DUKW(a) n/a yes cs 7†1 n/a n/a 75† A D I†1 P +Terrapin Mk I n/a yes cs 7 n/a n/a 76† D +2pdr Portee n/a yes CS 4†1 n/a n/a 77† H†1 N P +Morris C9/B n/a yes CS 4 n/a n/a 78† P AA†1 +Loyd Carrier n/a yes cs 5 n/a n/a 79† N P +Quad FAT n/a yes CS 5 (brew up)† n/a n/a 80† N P +15-cwt Truck n/a yes cs 5 n/a n/a 81† N P +30-cwt Lorry n/a yes cs 6 n/a n/a 82† N P +3-Ton Lorry n/a yes cs 7 n/a n/a 83† N P +¼-Ton Jeep(a) n/a yes cs 2†1 n/a n/a 84† A I†1 N P +¾-Ton Truck(a) n/a yes cs 4 n/a n/a 85 A N +1½-Ton Truck(a) n/a yes cs 6 n/a n/a 85 A N +2½-Ton Truck(a) n/a yes cs 7 n/a n/a 85 A N +7½-Ton Truck(a) n/a yes cs 7 n/a n/a 85† A N diff --git a/vasl_templates/webapp/tests/test_capabilities.py b/vasl_templates/webapp/tests/test_capabilities.py index f78de92..5add455 100644 --- a/vasl_templates/webapp/tests/test_capabilities.py +++ b/vasl_templates/webapp/tests/test_capabilities.py @@ -122,6 +122,112 @@ def test_month_capabilities( webapp, webdriver ): _check_capabilities( webdriver, webapp, *ordnance, "ETO", "09/1944", "NT D5\u2020 HE8\u2020" ) _check_capabilities( webdriver, webapp, *ordnance, "ETO", "01/1945", "NT D6\u2020 HE8\u2020" ) + # Crusader III: HE7(F3+)†1 + vehicle = [ "british", "vehicles", "Crusader III" ] + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sD7 sM8\u20202" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "sD7 sM8\u20202" ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "02/1943", "HE7\u20201 sD7 sM8\u20202" + ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "01/1944", "HE7\u20201 sD7 sM8\u20202" + ) + + # Sherman II(a)/III(a)/V(a): WP6(J4+)†3 + for vo_name in ("Sherman II(a)","Sherman III(a)","Sherman V(a)"): + vehicle = [ "british", "vehicles", vo_name ] + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8 sD6" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8 sD6" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP6\u20203 s8 sD6" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP6\u20203 s8 sD6" ) + + # Sherman IIC(a)/VC(a): D5(S4)6(5)†2 + for vo_name in ("Sherman IIC(a)","Sherman VC(a)"): + vehicle = [ "british", "vehicles", vo_name ] + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7 sM8" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7 sM8" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "09/1944", "D5\u20202 HE7 sM8" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "D6\u20202 HE7 sM8" ) + + # Challenger: D5(S4)6(5)†1 + vehicle = [ "british", "vehicles", "Challenger" ] + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7 sD7 sM8\u20202" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7 sD7 sM8\u20202" ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "09/1944", "D5\u20201 HE7 sD7 sM8\u20202" + ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "01/1945", "D6\u20201 HE7 sD7 sM8\u20202" + ) + + # Churchill IV: D6(J4)7(5)†2 HE7(F3)8(4)+†1 sD6(4+) + vehicle = [ "british", "vehicles", "Churchill IV" ] + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sM8\u20203" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "sM8\u20203" ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "02/1943", "HE7\u20201 sM8\u20203" + ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "05/1944", "HE8\u20201 sD6 sM8\u20203" + ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "06/1944", "D6\u20202 HE8\u20201 sD6 sM8\u20203" + ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "01/1945", "D7\u20202 HE8\u20201 sD6 sM8\u20203" + ) + + # Churchill VI: WP6(J4+)†1 + vehicle = [ "british", "vehicles", "Churchill VI" ] + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8 sD7 sM8\u20202" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8 sD7 sM8\u20202" ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "06/1944", "WP6\u20201 s8 sD7 sM8\u20202" + ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "01/1945", "WP6\u20201 s8 sD7 sM8\u20202" + ) + + # Deacon: HE7(F3+)†2 + vehicle = [ "british", "vehicles", "Deacon" ] + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "n/a" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "n/a" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "02/1943", "HE7\u20202" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1944", "HE7\u20202" ) + + # Wolverine(a): A5(S4)6(5)†1 s5(5) + vehicle = [ "british", "vehicles", "Wolverine(a)" ] + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "09/1944", "A5\u20201 HE7" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "A6\u20201 HE7 s5" ) + + # Achilles(a): D6(S4)7(5)†1 + vehicle = [ "british", "vehicles", "Achilles(a)" ] + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "HE7" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "08/1944", "HE7" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "09/1944", "D6\u20201 HE7" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "D7\u20201 HE7" ) + + # AEC II: D6(J4)7(5)†2 HE7(3)8(4)+†1 + vehicle = [ "british", "vehicles", "AEC II" ] + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1942", "sM8" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1943", "HE7\u20201 sM8" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "HE8\u20201 sM8" ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "06/1944", "D6\u20202 HE8\u20201 sM8" + ) + _check_capabilities( webdriver, webapp, *vehicle, + "ETO", "01/1945", "D7\u20202 HE8\u20201 sM8" + ) + + # M3C GMC(a): WP7(J4+)†1 + vehicle = [ "british", "vehicles", "M3 GMC(a)" ] + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "12/1943", "s8" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "05/1944", "s8" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "06/1944", "WP7\u20201 s8" ) + _check_capabilities( webdriver, webapp, *vehicle, "ETO", "01/1945", "WP7\u20201 s8" ) + # --------------------------------------------------------------------- @pytest.mark.skipif( diff --git a/vasl_templates/webapp/tests/test_vo_reports.py b/vasl_templates/webapp/tests/test_vo_reports.py index a29671b..a47cfbd 100644 --- a/vasl_templates/webapp/tests/test_vo_reports.py +++ b/vasl_templates/webapp/tests/test_vo_reports.py @@ -36,7 +36,7 @@ def test_vo_reports( webapp, webdriver ): ) # check each vehicle/ordnance report - for nat in ["german","russian","american"]: + for nat in ["german","russian","american","british"]: for vo_type in ["vehicles","ordnance"]: for year in range(1940,1945+1):