From d8444cd03fe9ff9bdc0ea6b93cf139a22efbe506 Mon Sep 17 00:00:00 2001 From: Taka Date: Sat, 18 Aug 2018 12:39:15 +0000 Subject: [PATCH] Optimized the vehicles/ordnance report test. --- setup.py | 1 + vasl_templates/webapp/static/snippets.js | 7 +- .../vo-reports/vehicles/russian/1940.txt | 174 +++++++++--------- .../vo-reports/vehicles/russian/1941.txt | 174 +++++++++--------- .../vo-reports/vehicles/russian/1942.txt | 174 +++++++++--------- .../vo-reports/vehicles/russian/1943.txt | 174 +++++++++--------- .../vo-reports/vehicles/russian/1944.txt | 174 +++++++++--------- .../vo-reports/vehicles/russian/1945.txt | 174 +++++++++--------- .../webapp/tests/test_vo_reports.py | 37 ++-- 9 files changed, 546 insertions(+), 543 deletions(-) diff --git a/setup.py b/setup.py index fca6988..d6427ef 100644 --- a/setup.py +++ b/setup.py @@ -24,6 +24,7 @@ setup( "pytest==3.6.0", "tabulate==0.8.2", "selenium==3.12.0", + "lxml==4.2.4", "pylint==1.9.2", "pytest-pylint==0.9.0", "cx-Freeze==5.1.1", diff --git a/vasl_templates/webapp/static/snippets.js b/vasl_templates/webapp/static/snippets.js index c50f2f8..66bed84 100644 --- a/vasl_templates/webapp/static/snippets.js +++ b/vasl_templates/webapp/static/snippets.js @@ -335,8 +335,11 @@ function make_raw_capability( name, capability ) { // generate the raw capability string var buf = [ name ] ; - for ( var i=0 ; i < capability.length ; ++i ) - buf.push( escapeHTML(capability[i][0]), ""+escapeHTML(capability[i][1])+"" ) ; + for ( var i=0 ; i < capability.length ; ++i ) { + buf.push( escapeHTML( capability[i][0] ) ) ; + if ( capability[i][1] ) + buf.push( "", escapeHTML( capability[i][1] ), "" ) ; + } return buf.join( "" ) ; } diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1940.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1940.txt index 3b8364c..d8a95f0 100644 --- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1940.txt +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1940.txt @@ -1,89 +1,89 @@ === vehicles/russian/1940 === -Name Radio Crew survival Capabilities (effective) # Notes ------------------ ------- ------------------------------------ ------------------------------------------ ------------- ----- --------------------- -T-37 ® CS 2 n/a n/a 1 H† M -T-27 ® CS 2 n/a n/a 1.1† M Q -T-40 ® CS 2 n/a n/a 2† H† -T-50 ® CS 4 A4[2] n/a 3 n/a -T-60 M40 ® CS 2 n/a n/a 4 n/a -T-60 M42 ®† CS 2 n/a n/a 4 C† -T-70 ®† CS 2 A4[2] n/a 5 C† -T-26 M33 ® CS 3 n/a n/a 6 D I† M P -T-26 M37/39 ® CS 3 n/a n/a 6 D M P -T-26 M31 ® CS 3 n/a n/a 6.1† M P -T-26 M32 ® CS 3 n/a n/a 6.2† M P -OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P -ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M -OT-133 ® CS 3 n/a n/a 7† M P -BT-2A ® CS 3 n/a n/a 7.1† M -BT-5 M34 ® CS 3 n/a n/a 8† M P -BT-7 M37 ® CS 3 n/a n/a 9 D I† M P -BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P -T-28 M34 ® CS 5 s8 s8 11† M -T-28 M34(L) ® CS 5 s8 s8 11.1† M -T-28E M40 ® CS 6 s8 s8 12† M -T-28E M40(L) ® CS 6 s8 s8 12.1† M -T-34 M40 ® CS 5 n/a n/a 13 M -T-34 M41 ®† CS 5 A4[2] n/a 14† C† M -OT-34 ®† CS 4 A2[2] AP7 AP7 15† C† M -T-34 M43 n/a CS 5 A4[2] n/a 16† n/a -T-43 ®† CS 5 A4[2] n/a 17 C† M -T-34/85 n/a CS 6 A5[4] sD6† sD6† 18† J† -M4/76(a) n/a CS 6 A3[4] s8 sM8 s8 sM8 19† N -T-44 n/a CS 5 A6[5] n/a 20 B† M -T-35 ® CS 8 s9 s9 21† M -SMK n/a CS 7 n/a n/a 21.1 M T† -T-100 n/a CS 7 n/a n/a 22.1 M T† -KV-1 M39/40 n/a CS 6 n/a n/a 22† M -KV-1E n/a CS 6 n/a n/a 23 D M -KV-1 M41 n/a CS 6 A4[2] n/a 23 D M -KV-1 M42 n/a CS 6 A4[2] n/a 23 D M -KV-2 n/a CS 7 AP9 AP9 24† M -KV-8 n/a CS 6 A4[2] AP7 AP7 15† D M -KV-1S n/a CS 6 A4[2] n/a 25† n/a -KV-85 n/a CS 5 A4[3]5[4] n/a 26 B† -IS-2 n/a CS 6 n/a n/a 27 B† -IS-2m n/a CS 6 n/a n/a 28 B† G† -IS-3 n/a CS 6 sD6† sD6† 29 G† J† -SU-76M n/a CS 4 (brew up) A5[3] n/a 30† n/a -SU-76i(g) n/a CS 5 A5[3] n/a 31 K -SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a -SU-152 n/a CS 6 n/a n/a 33† n/a -ISU-122 n/a CS 6 s8 s8 34 G† -ISU-152 n/a CS 6 n/a n/a 34 G† -SU-85 n/a CS 5 A5[3] HE7 s7 HE7 s7 35 n/a -SU-100 n/a CS 5 HE7 HE7 36 n/a -SU-57(a) n/a CS 4 A5[3] HE7 HE7 37 K -BA-20 ® CS 3 n/a n/a 38 n/a -BA-6 ® CS 4 A4[2] n/a 39 n/a -BA-64B n/a CS 2 n/a n/a 40† A† -ZSU-37 n/a CS 4 n/a n/a 41† A† -SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† -GAZ-4M-AA n/a CS 4 n/a n/a 43† A† -ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† -LANO AT ® CS 5 A4[2+] n/a 44.1 n/a -LANO AA ® CS 5 n/a n/a 44.2† A†1 -IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† -GAZ-67B n/a CS 2 n/a n/a 46 L† -Komsomolet n/a CS 2† n/a n/a 46.1† n/a -STZ-3 n/a cs 4 n/a n/a 46.2 n/a -STZ-5 n/a cs 7 n/a n/a 46.3 n/a -GAZ-MM n/a cs 6 n/a n/a 47 n/a -ZIS-5 n/a cs 7 n/a n/a 47 n/a -IAG-6 n/a cs 7 n/a n/a 47 n/a -NKL-6 n/a CS 2† n/a n/a 47.1† S†1 -NKL-16 n/a cs 2 n/a n/a 47.1† S†1 -NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 -RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 -Stuart III(a) n/a CS 4 C6 C6 48 N O LL -Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL -Sherman III(a) n/a CS 5 (brew up) WP6[J4+]†[] s8 s8 50† N O R†1 LL -Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL -Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL -Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL -Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL -Churchill III(b) n/a CS 7 D6[J4]7[5]†[] HE7[F3]8[4+]†[] sD6[4+] sM8† sM8† 53† N LL -M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL -Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 -DUKW(a) n/a cs 7 n/a n/a 60† n/a +Name Radio Crew survival Capabilities (effective) # Notes +----------------- ------- ------------------------------------ -------------------------------------- ------------- ----- --------------------- +T-37 ® CS 2 n/a n/a 1 H† M +T-27 ® CS 2 n/a n/a 1.1† M Q +T-40 ® CS 2 n/a n/a 2† H† +T-50 ® CS 4 A4[2] n/a 3 n/a +T-60 M40 ® CS 2 n/a n/a 4 n/a +T-60 M42 ®† CS 2 n/a n/a 4 C† +T-70 ®† CS 2 A4[2] n/a 5 C† +T-26 M33 ® CS 3 n/a n/a 6 D I† M P +T-26 M37/39 ® CS 3 n/a n/a 6 D M P +T-26 M31 ® CS 3 n/a n/a 6.1† M P +T-26 M32 ® CS 3 n/a n/a 6.2† M P +OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P +ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M +OT-133 ® CS 3 n/a n/a 7† M P +BT-2A ® CS 3 n/a n/a 7.1† M +BT-5 M34 ® CS 3 n/a n/a 8† M P +BT-7 M37 ® CS 3 n/a n/a 9 D I† M P +BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P +T-28 M34 ® CS 5 s8 s8 11† M +T-28 M34(L) ® CS 5 s8 s8 11.1† M +T-28E M40 ® CS 6 s8 s8 12† M +T-28E M40(L) ® CS 6 s8 s8 12.1† M +T-34 M40 ® CS 5 n/a n/a 13 M +T-34 M41 ®† CS 5 A4[2] n/a 14† C† M +OT-34 ®† CS 4 A2[2] AP7 AP7 15† C† M +T-34 M43 n/a CS 5 A4[2] n/a 16† n/a +T-43 ®† CS 5 A4[2] n/a 17 C† M +T-34/85 n/a CS 6 A5[4] sD6† sD6† 18† J† +M4/76(a) n/a CS 6 A3[4] s8 sM8 s8 sM8 19† N +T-44 n/a CS 5 A6[5] n/a 20 B† M +T-35 ® CS 8 s9 s9 21† M +SMK n/a CS 7 n/a n/a 21.1 M T† +T-100 n/a CS 7 n/a n/a 22.1 M T† +KV-1 M39/40 n/a CS 6 n/a n/a 22† M +KV-1E n/a CS 6 n/a n/a 23 D M +KV-1 M41 n/a CS 6 A4[2] n/a 23 D M +KV-1 M42 n/a CS 6 A4[2] n/a 23 D M +KV-2 n/a CS 7 AP9 AP9 24† M +KV-8 n/a CS 6 A4[2] AP7 AP7 15† D M +KV-1S n/a CS 6 A4[2] n/a 25† n/a +KV-85 n/a CS 5 A4[3]5[4] n/a 26 B† +IS-2 n/a CS 6 n/a n/a 27 B† +IS-2m n/a CS 6 n/a n/a 28 B† G† +IS-3 n/a CS 6 sD6† sD6† 29 G† J† +SU-76M n/a CS 4 (brew up) A5[3] n/a 30† n/a +SU-76i(g) n/a CS 5 A5[3] n/a 31 K +SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a +SU-152 n/a CS 6 n/a n/a 33† n/a +ISU-122 n/a CS 6 s8 s8 34 G† +ISU-152 n/a CS 6 n/a n/a 34 G† +SU-85 n/a CS 5 A5[3] HE7 s7 HE7 s7 35 n/a +SU-100 n/a CS 5 HE7 HE7 36 n/a +SU-57(a) n/a CS 4 A5[3] HE7 HE7 37 K +BA-20 ® CS 3 n/a n/a 38 n/a +BA-6 ® CS 4 A4[2] n/a 39 n/a +BA-64B n/a CS 2 n/a n/a 40† A† +ZSU-37 n/a CS 4 n/a n/a 41† A† +SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† +GAZ-4M-AA n/a CS 4 n/a n/a 43† A† +ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† +LANO AT ® CS 5 A4[2+] n/a 44.1 n/a +LANO AA ® CS 5 n/a n/a 44.2† A†1 +IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† +GAZ-67B n/a CS 2 n/a n/a 46 L† +Komsomolet n/a CS 2† n/a n/a 46.1† n/a +STZ-3 n/a cs 4 n/a n/a 46.2 n/a +STZ-5 n/a cs 7 n/a n/a 46.3 n/a +GAZ-MM n/a cs 6 n/a n/a 47 n/a +ZIS-5 n/a cs 7 n/a n/a 47 n/a +IAG-6 n/a cs 7 n/a n/a 47 n/a +NKL-6 n/a CS 2† n/a n/a 47.1† S†1 +NKL-16 n/a cs 2 n/a n/a 47.1† S†1 +NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 +RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 +Stuart III(a) n/a CS 4 C6 C6 48 N O LL +Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL +Sherman III(a) n/a CS 5 (brew up) WP6[J4+]† s8 s8 50† N O R†1 LL +Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL +Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL +Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL +Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL +Churchill III(b) n/a CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† sM8† 53† N LL +M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL +Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 +DUKW(a) n/a cs 7 n/a n/a 60† n/a diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1941.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1941.txt index fd995ca..ad23b28 100644 --- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1941.txt +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1941.txt @@ -1,89 +1,89 @@ === vehicles/russian/1941 === -Name Radio Crew survival Capabilities (effective) # Notes ------------------ ------- ------------------------------------ ------------------------------------------ ------------- ----- --------------------- -T-37 ® CS 2 n/a n/a 1 H† M -T-27 ® CS 2 n/a n/a 1.1† M Q -T-40 ® CS 2 n/a n/a 2† H† -T-50 ® CS 4 A4[2] n/a 3 n/a -T-60 M40 ® CS 2 n/a n/a 4 n/a -T-60 M42 ®† CS 2 n/a n/a 4 C† -T-70 ®† CS 2 A4[2] n/a 5 C† -T-26 M33 ® CS 3 n/a n/a 6 D I† M P -T-26 M37/39 ® CS 3 n/a n/a 6 D M P -T-26 M31 ® CS 3 n/a n/a 6.1† M P -T-26 M32 ® CS 3 n/a n/a 6.2† M P -OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P -ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M -OT-133 ® CS 3 n/a n/a 7† M P -BT-2A ® CS 3 n/a n/a 7.1† M -BT-5 M34 ® CS 3 n/a n/a 8† M P -BT-7 M37 ® CS 3 n/a n/a 9 D I† M P -BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P -T-28 M34 ® CS 5 s8 s8 11† M -T-28 M34(L) ® CS 5 s8 s8 11.1† M -T-28E M40 ® CS 6 s8 s8 12† M -T-28E M40(L) ® CS 6 s8 s8 12.1† M -T-34 M40 ® CS 5 n/a n/a 13 M -T-34 M41 ®† CS 5 A4[2] n/a 14† C† M -OT-34 ®† CS 4 A2[2] AP7 AP7 15† C† M -T-34 M43 n/a CS 5 A4[2] n/a 16† n/a -T-43 ®† CS 5 A4[2] n/a 17 C† M -T-34/85 n/a CS 6 A5[4] sD6† sD6† 18† J† -M4/76(a) n/a CS 6 A3[4] s8 sM8 s8 sM8 19† N -T-44 n/a CS 5 A6[5] n/a 20 B† M -T-35 ® CS 8 s9 s9 21† M -SMK n/a CS 7 n/a n/a 21.1 M T† -T-100 n/a CS 7 n/a n/a 22.1 M T† -KV-1 M39/40 n/a CS 6 n/a n/a 22† M -KV-1E n/a CS 6 n/a n/a 23 D M -KV-1 M41 n/a CS 6 A4[2] n/a 23 D M -KV-1 M42 n/a CS 6 A4[2] n/a 23 D M -KV-2 n/a CS 7 AP9 AP9 24† M -KV-8 n/a CS 6 A4[2] AP7 AP7 15† D M -KV-1S n/a CS 6 A4[2] n/a 25† n/a -KV-85 n/a CS 5 A4[3]5[4] n/a 26 B† -IS-2 n/a CS 6 n/a n/a 27 B† -IS-2m n/a CS 6 n/a n/a 28 B† G† -IS-3 n/a CS 6 sD6† sD6† 29 G† J† -SU-76M n/a CS 4 (brew up) A5[3] n/a 30† n/a -SU-76i(g) n/a CS 5 A5[3] n/a 31 K -SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a -SU-152 n/a CS 6 n/a n/a 33† n/a -ISU-122 n/a CS 6 s8 s8 34 G† -ISU-152 n/a CS 6 n/a n/a 34 G† -SU-85 n/a CS 5 A5[3] HE7 s7 HE7 s7 35 n/a -SU-100 n/a CS 5 HE7 HE7 36 n/a -SU-57(a) n/a CS 4 A5[3] HE7 HE7 37 K -BA-20 ® CS 3 n/a n/a 38 n/a -BA-6 ® CS 4 A4[2] n/a 39 n/a -BA-64B n/a CS 2 n/a n/a 40† A† -ZSU-37 n/a CS 4 n/a n/a 41† A† -SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† -GAZ-4M-AA n/a CS 4 n/a n/a 43† A† -ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† -LANO AT ® CS 5 A4[2+] n/a 44.1 n/a -LANO AA ® CS 5 n/a n/a 44.2† A†1 -IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† -GAZ-67B n/a CS 2 n/a n/a 46 L† -Komsomolet n/a CS 2† n/a n/a 46.1† n/a -STZ-3 n/a cs 4 n/a n/a 46.2 n/a -STZ-5 n/a cs 7 n/a n/a 46.3 n/a -GAZ-MM n/a cs 6 n/a n/a 47 n/a -ZIS-5 n/a cs 7 n/a n/a 47 n/a -IAG-6 n/a cs 7 n/a n/a 47 n/a -NKL-6 n/a CS 2† n/a n/a 47.1† S†1 -NKL-16 n/a cs 2 n/a n/a 47.1† S†1 -NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 -RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 -Stuart III(a) n/a CS 4 C6 C6 48 N O LL -Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL -Sherman III(a) n/a CS 5 (brew up) WP6[J4+]†[] s8 s8 50† N O R†1 LL -Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL -Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL -Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL -Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL -Churchill III(b) n/a CS 7 D6[J4]7[5]†[] HE7[F3]8[4+]†[] sD6[4+] sM8† sM8† 53† N LL -M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL -Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 -DUKW(a) n/a cs 7 n/a n/a 60† n/a +Name Radio Crew survival Capabilities (effective) # Notes +----------------- ------- ------------------------------------ -------------------------------------- ------------- ----- --------------------- +T-37 ® CS 2 n/a n/a 1 H† M +T-27 ® CS 2 n/a n/a 1.1† M Q +T-40 ® CS 2 n/a n/a 2† H† +T-50 ® CS 4 A4[2] n/a 3 n/a +T-60 M40 ® CS 2 n/a n/a 4 n/a +T-60 M42 ®† CS 2 n/a n/a 4 C† +T-70 ®† CS 2 A4[2] n/a 5 C† +T-26 M33 ® CS 3 n/a n/a 6 D I† M P +T-26 M37/39 ® CS 3 n/a n/a 6 D M P +T-26 M31 ® CS 3 n/a n/a 6.1† M P +T-26 M32 ® CS 3 n/a n/a 6.2† M P +OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P +ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M +OT-133 ® CS 3 n/a n/a 7† M P +BT-2A ® CS 3 n/a n/a 7.1† M +BT-5 M34 ® CS 3 n/a n/a 8† M P +BT-7 M37 ® CS 3 n/a n/a 9 D I† M P +BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P +T-28 M34 ® CS 5 s8 s8 11† M +T-28 M34(L) ® CS 5 s8 s8 11.1† M +T-28E M40 ® CS 6 s8 s8 12† M +T-28E M40(L) ® CS 6 s8 s8 12.1† M +T-34 M40 ® CS 5 n/a n/a 13 M +T-34 M41 ®† CS 5 A4[2] n/a 14† C† M +OT-34 ®† CS 4 A2[2] AP7 AP7 15† C† M +T-34 M43 n/a CS 5 A4[2] n/a 16† n/a +T-43 ®† CS 5 A4[2] n/a 17 C† M +T-34/85 n/a CS 6 A5[4] sD6† sD6† 18† J† +M4/76(a) n/a CS 6 A3[4] s8 sM8 s8 sM8 19† N +T-44 n/a CS 5 A6[5] n/a 20 B† M +T-35 ® CS 8 s9 s9 21† M +SMK n/a CS 7 n/a n/a 21.1 M T† +T-100 n/a CS 7 n/a n/a 22.1 M T† +KV-1 M39/40 n/a CS 6 n/a n/a 22† M +KV-1E n/a CS 6 n/a n/a 23 D M +KV-1 M41 n/a CS 6 A4[2] n/a 23 D M +KV-1 M42 n/a CS 6 A4[2] n/a 23 D M +KV-2 n/a CS 7 AP9 AP9 24† M +KV-8 n/a CS 6 A4[2] AP7 AP7 15† D M +KV-1S n/a CS 6 A4[2] n/a 25† n/a +KV-85 n/a CS 5 A4[3]5[4] n/a 26 B† +IS-2 n/a CS 6 n/a n/a 27 B† +IS-2m n/a CS 6 n/a n/a 28 B† G† +IS-3 n/a CS 6 sD6† sD6† 29 G† J† +SU-76M n/a CS 4 (brew up) A5[3] n/a 30† n/a +SU-76i(g) n/a CS 5 A5[3] n/a 31 K +SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a +SU-152 n/a CS 6 n/a n/a 33† n/a +ISU-122 n/a CS 6 s8 s8 34 G† +ISU-152 n/a CS 6 n/a n/a 34 G† +SU-85 n/a CS 5 A5[3] HE7 s7 HE7 s7 35 n/a +SU-100 n/a CS 5 HE7 HE7 36 n/a +SU-57(a) n/a CS 4 A5[3] HE7 HE7 37 K +BA-20 ® CS 3 n/a n/a 38 n/a +BA-6 ® CS 4 A4[2] n/a 39 n/a +BA-64B n/a CS 2 n/a n/a 40† A† +ZSU-37 n/a CS 4 n/a n/a 41† A† +SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† +GAZ-4M-AA n/a CS 4 n/a n/a 43† A† +ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† +LANO AT ® CS 5 A4[2+] n/a 44.1 n/a +LANO AA ® CS 5 n/a n/a 44.2† A†1 +IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† +GAZ-67B n/a CS 2 n/a n/a 46 L† +Komsomolet n/a CS 2† n/a n/a 46.1† n/a +STZ-3 n/a cs 4 n/a n/a 46.2 n/a +STZ-5 n/a cs 7 n/a n/a 46.3 n/a +GAZ-MM n/a cs 6 n/a n/a 47 n/a +ZIS-5 n/a cs 7 n/a n/a 47 n/a +IAG-6 n/a cs 7 n/a n/a 47 n/a +NKL-6 n/a CS 2† n/a n/a 47.1† S†1 +NKL-16 n/a cs 2 n/a n/a 47.1† S†1 +NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 +RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 +Stuart III(a) n/a CS 4 C6 C6 48 N O LL +Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL +Sherman III(a) n/a CS 5 (brew up) WP6[J4+]† s8 s8 50† N O R†1 LL +Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL +Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL +Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL +Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL +Churchill III(b) n/a CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† sM8† 53† N LL +M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL +Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 +DUKW(a) n/a cs 7 n/a n/a 60† n/a diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1942.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1942.txt index c5e371e..2ab2d45 100644 --- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1942.txt +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1942.txt @@ -1,89 +1,89 @@ === vehicles/russian/1942 === -Name Radio Crew survival Capabilities (effective) # Notes ------------------ ------- ------------------------------------ ------------------------------------------ ------------- ----- --------------------- -T-37 ® CS 2 n/a n/a 1 H† M -T-27 ® CS 2 n/a n/a 1.1† M Q -T-40 ® CS 2 n/a n/a 2† H† -T-50 ® CS 4 A4[2] A4 3 n/a -T-60 M40 ® CS 2 n/a n/a 4 n/a -T-60 M42 ®† CS 2 n/a n/a 4 C† -T-70 ®† CS 2 A4[2] A4 5 C† -T-26 M33 ® CS 3 n/a n/a 6 D I† M P -T-26 M37/39 ® CS 3 n/a n/a 6 D M P -T-26 M31 ® CS 3 n/a n/a 6.1† M P -T-26 M32 ® CS 3 n/a n/a 6.2† M P -OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P -ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M -OT-133 ® CS 3 n/a n/a 7† M P -BT-2A ® CS 3 n/a n/a 7.1† M -BT-5 M34 ® CS 3 n/a n/a 8† M P -BT-7 M37 ® CS 3 n/a n/a 9 D I† M P -BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P -T-28 M34 ® CS 5 s8 s8 11† M -T-28 M34(L) ® CS 5 s8 s8 11.1† M -T-28E M40 ® CS 6 s8 s8 12† M -T-28E M40(L) ® CS 6 s8 s8 12.1† M -T-34 M40 ® CS 5 n/a n/a 13 M -T-34 M41 ®† CS 5 A4[2] A4 14† C† M -OT-34 ®† CS 4 A2[2] AP7 A2 AP7 15† C† M -T-34 M43 n/a CS 5 A4[2] A4 16† n/a -T-43 ®† CS 5 A4[2] A4 17 C† M -T-34/85 n/a CS 6 A5[4] sD6† sD6† 18† J† -M4/76(a) n/a CS 6 A3[4] s8 sM8 s8 sM8 19† N -T-44 n/a CS 5 A6[5] n/a 20 B† M -T-35 ® CS 8 s9 s9 21† M -SMK n/a CS 7 n/a n/a 21.1 M T† -T-100 n/a CS 7 n/a n/a 22.1 M T† -KV-1 M39/40 n/a CS 6 n/a n/a 22† M -KV-1E n/a CS 6 n/a n/a 23 D M -KV-1 M41 n/a CS 6 A4[2] A4 23 D M -KV-1 M42 n/a CS 6 A4[2] A4 23 D M -KV-2 n/a CS 7 AP9 AP9 24† M -KV-8 n/a CS 6 A4[2] AP7 A4 AP7 15† D M -KV-1S n/a CS 6 A4[2] A4 25† n/a -KV-85 n/a CS 5 A4[3]5[4] n/a 26 B† -IS-2 n/a CS 6 n/a n/a 27 B† -IS-2m n/a CS 6 n/a n/a 28 B† G† -IS-3 n/a CS 6 sD6† sD6† 29 G† J† -SU-76M n/a CS 4 (brew up) A5[3] n/a 30† n/a -SU-76i(g) n/a CS 5 A5[3] n/a 31 K -SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a -SU-152 n/a CS 6 n/a n/a 33† n/a -ISU-122 n/a CS 6 s8 s8 34 G† -ISU-152 n/a CS 6 n/a n/a 34 G† -SU-85 n/a CS 5 A5[3] HE7 s7 HE7 s7 35 n/a -SU-100 n/a CS 5 HE7 HE7 36 n/a -SU-57(a) n/a CS 4 A5[3] HE7 HE7 37 K -BA-20 ® CS 3 n/a n/a 38 n/a -BA-6 ® CS 4 A4[2] A4 39 n/a -BA-64B n/a CS 2 n/a n/a 40† A† -ZSU-37 n/a CS 4 n/a n/a 41† A† -SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† -GAZ-4M-AA n/a CS 4 n/a n/a 43† A† -ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† -LANO AT ® CS 5 A4[2+] A4 44.1 n/a -LANO AA ® CS 5 n/a n/a 44.2† A†1 -IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† -GAZ-67B n/a CS 2 n/a n/a 46 L† -Komsomolet n/a CS 2† n/a n/a 46.1† n/a -STZ-3 n/a cs 4 n/a n/a 46.2 n/a -STZ-5 n/a cs 7 n/a n/a 46.3 n/a -GAZ-MM n/a cs 6 n/a n/a 47 n/a -ZIS-5 n/a cs 7 n/a n/a 47 n/a -IAG-6 n/a cs 7 n/a n/a 47 n/a -NKL-6 n/a CS 2† n/a n/a 47.1† S†1 -NKL-16 n/a cs 2 n/a n/a 47.1† S†1 -NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 -RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 -Stuart III(a) n/a CS 4 C6 C6 48 N O LL -Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL -Sherman III(a) n/a CS 5 (brew up) WP6[J4+]†[] s8 s8 50† N O R†1 LL -Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL -Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL -Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL -Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL -Churchill III(b) n/a CS 7 D6[J4]7[5]†[] HE7[F3]8[4+]†[] sD6[4+] sM8† sM8† 53† N LL -M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL -Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 -DUKW(a) n/a cs 7 n/a n/a 60† n/a +Name Radio Crew survival Capabilities (effective) # Notes +----------------- ------- ------------------------------------ -------------------------------------- ------------- ----- --------------------- +T-37 ® CS 2 n/a n/a 1 H† M +T-27 ® CS 2 n/a n/a 1.1† M Q +T-40 ® CS 2 n/a n/a 2† H† +T-50 ® CS 4 A4[2] A4 3 n/a +T-60 M40 ® CS 2 n/a n/a 4 n/a +T-60 M42 ®† CS 2 n/a n/a 4 C† +T-70 ®† CS 2 A4[2] A4 5 C† +T-26 M33 ® CS 3 n/a n/a 6 D I† M P +T-26 M37/39 ® CS 3 n/a n/a 6 D M P +T-26 M31 ® CS 3 n/a n/a 6.1† M P +T-26 M32 ® CS 3 n/a n/a 6.2† M P +OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P +ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M +OT-133 ® CS 3 n/a n/a 7† M P +BT-2A ® CS 3 n/a n/a 7.1† M +BT-5 M34 ® CS 3 n/a n/a 8† M P +BT-7 M37 ® CS 3 n/a n/a 9 D I† M P +BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P +T-28 M34 ® CS 5 s8 s8 11† M +T-28 M34(L) ® CS 5 s8 s8 11.1† M +T-28E M40 ® CS 6 s8 s8 12† M +T-28E M40(L) ® CS 6 s8 s8 12.1† M +T-34 M40 ® CS 5 n/a n/a 13 M +T-34 M41 ®† CS 5 A4[2] A4 14† C† M +OT-34 ®† CS 4 A2[2] AP7 A2 AP7 15† C† M +T-34 M43 n/a CS 5 A4[2] A4 16† n/a +T-43 ®† CS 5 A4[2] A4 17 C† M +T-34/85 n/a CS 6 A5[4] sD6† sD6† 18† J† +M4/76(a) n/a CS 6 A3[4] s8 sM8 s8 sM8 19† N +T-44 n/a CS 5 A6[5] n/a 20 B† M +T-35 ® CS 8 s9 s9 21† M +SMK n/a CS 7 n/a n/a 21.1 M T† +T-100 n/a CS 7 n/a n/a 22.1 M T† +KV-1 M39/40 n/a CS 6 n/a n/a 22† M +KV-1E n/a CS 6 n/a n/a 23 D M +KV-1 M41 n/a CS 6 A4[2] A4 23 D M +KV-1 M42 n/a CS 6 A4[2] A4 23 D M +KV-2 n/a CS 7 AP9 AP9 24† M +KV-8 n/a CS 6 A4[2] AP7 A4 AP7 15† D M +KV-1S n/a CS 6 A4[2] A4 25† n/a +KV-85 n/a CS 5 A4[3]5[4] n/a 26 B† +IS-2 n/a CS 6 n/a n/a 27 B† +IS-2m n/a CS 6 n/a n/a 28 B† G† +IS-3 n/a CS 6 sD6† sD6† 29 G† J† +SU-76M n/a CS 4 (brew up) A5[3] n/a 30† n/a +SU-76i(g) n/a CS 5 A5[3] n/a 31 K +SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a +SU-152 n/a CS 6 n/a n/a 33† n/a +ISU-122 n/a CS 6 s8 s8 34 G† +ISU-152 n/a CS 6 n/a n/a 34 G† +SU-85 n/a CS 5 A5[3] HE7 s7 HE7 s7 35 n/a +SU-100 n/a CS 5 HE7 HE7 36 n/a +SU-57(a) n/a CS 4 A5[3] HE7 HE7 37 K +BA-20 ® CS 3 n/a n/a 38 n/a +BA-6 ® CS 4 A4[2] A4 39 n/a +BA-64B n/a CS 2 n/a n/a 40† A† +ZSU-37 n/a CS 4 n/a n/a 41† A† +SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† +GAZ-4M-AA n/a CS 4 n/a n/a 43† A† +ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† +LANO AT ® CS 5 A4[2+] A4 44.1 n/a +LANO AA ® CS 5 n/a n/a 44.2† A†1 +IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† +GAZ-67B n/a CS 2 n/a n/a 46 L† +Komsomolet n/a CS 2† n/a n/a 46.1† n/a +STZ-3 n/a cs 4 n/a n/a 46.2 n/a +STZ-5 n/a cs 7 n/a n/a 46.3 n/a +GAZ-MM n/a cs 6 n/a n/a 47 n/a +ZIS-5 n/a cs 7 n/a n/a 47 n/a +IAG-6 n/a cs 7 n/a n/a 47 n/a +NKL-6 n/a CS 2† n/a n/a 47.1† S†1 +NKL-16 n/a cs 2 n/a n/a 47.1† S†1 +NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 +RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 +Stuart III(a) n/a CS 4 C6 C6 48 N O LL +Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL +Sherman III(a) n/a CS 5 (brew up) WP6[J4+]† s8 s8 50† N O R†1 LL +Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL +Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL +Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL +Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL +Churchill III(b) n/a CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† sM8† 53† N LL +M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL +Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 +DUKW(a) n/a cs 7 n/a n/a 60† n/a diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1943.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1943.txt index d8b3717..04a1d9a 100644 --- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1943.txt +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1943.txt @@ -1,89 +1,89 @@ === vehicles/russian/1943 === -Name Radio Crew survival Capabilities (effective) # Notes ------------------ ------- ------------------------------------ ------------------------------------------ ------------- ----- --------------------- -T-37 ® CS 2 n/a n/a 1 H† M -T-27 ® CS 2 n/a n/a 1.1† M Q -T-40 ® CS 2 n/a n/a 2† H† -T-50 ® CS 4 A4[2] A4 3 n/a -T-60 M40 ® CS 2 n/a n/a 4 n/a -T-60 M42 ®† CS 2 n/a n/a 4 C† -T-70 ®† CS 2 A4[2] A4 5 C† -T-26 M33 ® CS 3 n/a n/a 6 D I† M P -T-26 M37/39 ® CS 3 n/a n/a 6 D M P -T-26 M31 ® CS 3 n/a n/a 6.1† M P -T-26 M32 ® CS 3 n/a n/a 6.2† M P -OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P -ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M -OT-133 ® CS 3 n/a n/a 7† M P -BT-2A ® CS 3 n/a n/a 7.1† M -BT-5 M34 ® CS 3 n/a n/a 8† M P -BT-7 M37 ® CS 3 n/a n/a 9 D I† M P -BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P -T-28 M34 ® CS 5 s8 s8 11† M -T-28 M34(L) ® CS 5 s8 s8 11.1† M -T-28E M40 ® CS 6 s8 s8 12† M -T-28E M40(L) ® CS 6 s8 s8 12.1† M -T-34 M40 ® CS 5 n/a n/a 13 M -T-34 M41 ®† CS 5 A4[2] A4 14† C† M -OT-34 ®† CS 4 A2[2] AP7 A2 AP7 15† C† M -T-34 M43 n/a CS 5 A4[2] A4 16† n/a -T-43 ®† CS 5 A4[2] A4 17 C† M -T-34/85 n/a CS 6 A5[4] sD6† sD6† 18† J† -M4/76(a) n/a CS 6 A3[4] s8 sM8 s8 sM8 19† N -T-44 n/a CS 5 A6[5] n/a 20 B† M -T-35 ® CS 8 s9 s9 21† M -SMK n/a CS 7 n/a n/a 21.1 M T† -T-100 n/a CS 7 n/a n/a 22.1 M T† -KV-1 M39/40 n/a CS 6 n/a n/a 22† M -KV-1E n/a CS 6 n/a n/a 23 D M -KV-1 M41 n/a CS 6 A4[2] A4 23 D M -KV-1 M42 n/a CS 6 A4[2] A4 23 D M -KV-2 n/a CS 7 AP9 AP9 24† M -KV-8 n/a CS 6 A4[2] AP7 A4 AP7 15† D M -KV-1S n/a CS 6 A4[2] A4 25† n/a -KV-85 n/a CS 5 A4[3]5[4] A4 26 B† -IS-2 n/a CS 6 n/a n/a 27 B† -IS-2m n/a CS 6 n/a n/a 28 B† G† -IS-3 n/a CS 6 sD6† sD6† 29 G† J† -SU-76M n/a CS 4 (brew up) A5[3] A5 30† n/a -SU-76i(g) n/a CS 5 A5[3] A5 31 K -SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a -SU-152 n/a CS 6 n/a n/a 33† n/a -ISU-122 n/a CS 6 s8 s8 34 G† -ISU-152 n/a CS 6 n/a n/a 34 G† -SU-85 n/a CS 5 A5[3] HE7 s7 A5 HE7 s7 35 n/a -SU-100 n/a CS 5 HE7 HE7 36 n/a -SU-57(a) n/a CS 4 A5[3] HE7 A5 HE7 37 K -BA-20 ® CS 3 n/a n/a 38 n/a -BA-6 ® CS 4 A4[2] A4 39 n/a -BA-64B n/a CS 2 n/a n/a 40† A† -ZSU-37 n/a CS 4 n/a n/a 41† A† -SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† -GAZ-4M-AA n/a CS 4 n/a n/a 43† A† -ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† -LANO AT ® CS 5 A4[2+] A4 44.1 n/a -LANO AA ® CS 5 n/a n/a 44.2† A†1 -IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† -GAZ-67B n/a CS 2 n/a n/a 46 L† -Komsomolet n/a CS 2† n/a n/a 46.1† n/a -STZ-3 n/a cs 4 n/a n/a 46.2 n/a -STZ-5 n/a cs 7 n/a n/a 46.3 n/a -GAZ-MM n/a cs 6 n/a n/a 47 n/a -ZIS-5 n/a cs 7 n/a n/a 47 n/a -IAG-6 n/a cs 7 n/a n/a 47 n/a -NKL-6 n/a CS 2† n/a n/a 47.1† S†1 -NKL-16 n/a cs 2 n/a n/a 47.1† S†1 -NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 -RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 -Stuart III(a) n/a CS 4 C6 C6 48 N O LL -Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL -Sherman III(a) n/a CS 5 (brew up) WP6[J4+]†[] s8 s8 50† N O R†1 LL -Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL -Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL -Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL -Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL -Churchill III(b) n/a CS 7 D6[J4]7[5]†[] HE7[F3]8[4+]†[] sD6[4+] sM8† sM8† 53† N LL -M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL -Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 -DUKW(a) n/a cs 7 n/a n/a 60† n/a +Name Radio Crew survival Capabilities (effective) # Notes +----------------- ------- ------------------------------------ -------------------------------------- ------------- ----- --------------------- +T-37 ® CS 2 n/a n/a 1 H† M +T-27 ® CS 2 n/a n/a 1.1† M Q +T-40 ® CS 2 n/a n/a 2† H† +T-50 ® CS 4 A4[2] A4 3 n/a +T-60 M40 ® CS 2 n/a n/a 4 n/a +T-60 M42 ®† CS 2 n/a n/a 4 C† +T-70 ®† CS 2 A4[2] A4 5 C† +T-26 M33 ® CS 3 n/a n/a 6 D I† M P +T-26 M37/39 ® CS 3 n/a n/a 6 D M P +T-26 M31 ® CS 3 n/a n/a 6.1† M P +T-26 M32 ® CS 3 n/a n/a 6.2† M P +OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P +ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M +OT-133 ® CS 3 n/a n/a 7† M P +BT-2A ® CS 3 n/a n/a 7.1† M +BT-5 M34 ® CS 3 n/a n/a 8† M P +BT-7 M37 ® CS 3 n/a n/a 9 D I† M P +BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P +T-28 M34 ® CS 5 s8 s8 11† M +T-28 M34(L) ® CS 5 s8 s8 11.1† M +T-28E M40 ® CS 6 s8 s8 12† M +T-28E M40(L) ® CS 6 s8 s8 12.1† M +T-34 M40 ® CS 5 n/a n/a 13 M +T-34 M41 ®† CS 5 A4[2] A4 14† C† M +OT-34 ®† CS 4 A2[2] AP7 A2 AP7 15† C† M +T-34 M43 n/a CS 5 A4[2] A4 16† n/a +T-43 ®† CS 5 A4[2] A4 17 C† M +T-34/85 n/a CS 6 A5[4] sD6† sD6† 18† J† +M4/76(a) n/a CS 6 A3[4] s8 sM8 s8 sM8 19† N +T-44 n/a CS 5 A6[5] n/a 20 B† M +T-35 ® CS 8 s9 s9 21† M +SMK n/a CS 7 n/a n/a 21.1 M T† +T-100 n/a CS 7 n/a n/a 22.1 M T† +KV-1 M39/40 n/a CS 6 n/a n/a 22† M +KV-1E n/a CS 6 n/a n/a 23 D M +KV-1 M41 n/a CS 6 A4[2] A4 23 D M +KV-1 M42 n/a CS 6 A4[2] A4 23 D M +KV-2 n/a CS 7 AP9 AP9 24† M +KV-8 n/a CS 6 A4[2] AP7 A4 AP7 15† D M +KV-1S n/a CS 6 A4[2] A4 25† n/a +KV-85 n/a CS 5 A4[3]5[4] A4 26 B† +IS-2 n/a CS 6 n/a n/a 27 B† +IS-2m n/a CS 6 n/a n/a 28 B† G† +IS-3 n/a CS 6 sD6† sD6† 29 G† J† +SU-76M n/a CS 4 (brew up) A5[3] A5 30† n/a +SU-76i(g) n/a CS 5 A5[3] A5 31 K +SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a +SU-152 n/a CS 6 n/a n/a 33† n/a +ISU-122 n/a CS 6 s8 s8 34 G† +ISU-152 n/a CS 6 n/a n/a 34 G† +SU-85 n/a CS 5 A5[3] HE7 s7 A5 HE7 s7 35 n/a +SU-100 n/a CS 5 HE7 HE7 36 n/a +SU-57(a) n/a CS 4 A5[3] HE7 A5 HE7 37 K +BA-20 ® CS 3 n/a n/a 38 n/a +BA-6 ® CS 4 A4[2] A4 39 n/a +BA-64B n/a CS 2 n/a n/a 40† A† +ZSU-37 n/a CS 4 n/a n/a 41† A† +SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† +GAZ-4M-AA n/a CS 4 n/a n/a 43† A† +ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† +LANO AT ® CS 5 A4[2+] A4 44.1 n/a +LANO AA ® CS 5 n/a n/a 44.2† A†1 +IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† +GAZ-67B n/a CS 2 n/a n/a 46 L† +Komsomolet n/a CS 2† n/a n/a 46.1† n/a +STZ-3 n/a cs 4 n/a n/a 46.2 n/a +STZ-5 n/a cs 7 n/a n/a 46.3 n/a +GAZ-MM n/a cs 6 n/a n/a 47 n/a +ZIS-5 n/a cs 7 n/a n/a 47 n/a +IAG-6 n/a cs 7 n/a n/a 47 n/a +NKL-6 n/a CS 2† n/a n/a 47.1† S†1 +NKL-16 n/a cs 2 n/a n/a 47.1† S†1 +NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 +RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 +Stuart III(a) n/a CS 4 C6 C6 48 N O LL +Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL +Sherman III(a) n/a CS 5 (brew up) WP6[J4+]† s8 s8 50† N O R†1 LL +Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL +Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL +Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL +Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL +Churchill III(b) n/a CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† sM8† 53† N LL +M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL +Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 +DUKW(a) n/a cs 7 n/a n/a 60† n/a diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1944.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1944.txt index 9e6a30d..025e042 100644 --- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1944.txt +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1944.txt @@ -1,89 +1,89 @@ === vehicles/russian/1944 === -Name Radio Crew survival Capabilities (effective) # Notes ------------------ ------- ------------------------------------ ------------------------------------------ ------------- ----- --------------------- -T-37 ® CS 2 n/a n/a 1 H† M -T-27 ® CS 2 n/a n/a 1.1† M Q -T-40 ® CS 2 n/a n/a 2† H† -T-50 ® CS 4 A4[2] A4 3 n/a -T-60 M40 ® CS 2 n/a n/a 4 n/a -T-60 M42 ®† CS 2 n/a n/a 4 C† -T-70 ®† CS 2 A4[2] A4 5 C† -T-26 M33 ® CS 3 n/a n/a 6 D I† M P -T-26 M37/39 ® CS 3 n/a n/a 6 D M P -T-26 M31 ® CS 3 n/a n/a 6.1† M P -T-26 M32 ® CS 3 n/a n/a 6.2† M P -OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P -ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M -OT-133 ® CS 3 n/a n/a 7† M P -BT-2A ® CS 3 n/a n/a 7.1† M -BT-5 M34 ® CS 3 n/a n/a 8† M P -BT-7 M37 ® CS 3 n/a n/a 9 D I† M P -BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P -T-28 M34 ® CS 5 s8 s8 11† M -T-28 M34(L) ® CS 5 s8 s8 11.1† M -T-28E M40 ® CS 6 s8 s8 12† M -T-28E M40(L) ® CS 6 s8 s8 12.1† M -T-34 M40 ® CS 5 n/a n/a 13 M -T-34 M41 ®† CS 5 A4[2] A4 14† C† M -OT-34 ®† CS 4 A2[2] AP7 A2 AP7 15† C† M -T-34 M43 n/a CS 5 A4[2] A4 16† n/a -T-43 ®† CS 5 A4[2] A4 17 C† M -T-34/85 n/a CS 6 A5[4] sD6† A5 sD6† 18† J† -M4/76(a) n/a CS 6 A3[4] s8 sM8 A3 s8 sM8 19† N -T-44 n/a CS 5 A6[5] n/a 20 B† M -T-35 ® CS 8 s9 s9 21† M -SMK n/a CS 7 n/a n/a 21.1 M T† -T-100 n/a CS 7 n/a n/a 22.1 M T† -KV-1 M39/40 n/a CS 6 n/a n/a 22† M -KV-1E n/a CS 6 n/a n/a 23 D M -KV-1 M41 n/a CS 6 A4[2] A4 23 D M -KV-1 M42 n/a CS 6 A4[2] A4 23 D M -KV-2 n/a CS 7 AP9 AP9 24† M -KV-8 n/a CS 6 A4[2] AP7 A4 AP7 15† D M -KV-1S n/a CS 6 A4[2] A4 25† n/a -KV-85 n/a CS 5 A4[3]5[4] A5 26 B† -IS-2 n/a CS 6 n/a n/a 27 B† -IS-2m n/a CS 6 n/a n/a 28 B† G† -IS-3 n/a CS 6 sD6† sD6† 29 G† J† -SU-76M n/a CS 4 (brew up) A5[3] A5 30† n/a -SU-76i(g) n/a CS 5 A5[3] A5 31 K -SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a -SU-152 n/a CS 6 n/a n/a 33† n/a -ISU-122 n/a CS 6 s8 s8 34 G† -ISU-152 n/a CS 6 n/a n/a 34 G† -SU-85 n/a CS 5 A5[3] HE7 s7 A5 HE7 s7 35 n/a -SU-100 n/a CS 5 HE7 HE7 36 n/a -SU-57(a) n/a CS 4 A5[3] HE7 A5 HE7 37 K -BA-20 ® CS 3 n/a n/a 38 n/a -BA-6 ® CS 4 A4[2] A4 39 n/a -BA-64B n/a CS 2 n/a n/a 40† A† -ZSU-37 n/a CS 4 n/a n/a 41† A† -SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† -GAZ-4M-AA n/a CS 4 n/a n/a 43† A† -ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† -LANO AT ® CS 5 A4[2+] A4 44.1 n/a -LANO AA ® CS 5 n/a n/a 44.2† A†1 -IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† -GAZ-67B n/a CS 2 n/a n/a 46 L† -Komsomolet n/a CS 2† n/a n/a 46.1† n/a -STZ-3 n/a cs 4 n/a n/a 46.2 n/a -STZ-5 n/a cs 7 n/a n/a 46.3 n/a -GAZ-MM n/a cs 6 n/a n/a 47 n/a -ZIS-5 n/a cs 7 n/a n/a 47 n/a -IAG-6 n/a cs 7 n/a n/a 47 n/a -NKL-6 n/a CS 2† n/a n/a 47.1† S†1 -NKL-16 n/a cs 2 n/a n/a 47.1† S†1 -NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 -RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 -Stuart III(a) n/a CS 4 C6 C6 48 N O LL -Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL -Sherman III(a) n/a CS 5 (brew up) WP6[J4+]†[] s8 s8 50† N O R†1 LL -Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL -Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL -Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL -Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL -Churchill III(b) n/a CS 7 D6[J4]7[5]†[] HE7[F3]8[4+]†[] sD6[4+] sM8† HE8 sD6 sM8† 53† N LL -M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL -Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 -DUKW(a) n/a cs 7 n/a n/a 60† n/a +Name Radio Crew survival Capabilities (effective) # Notes +----------------- ------- ------------------------------------ -------------------------------------- ------------- ----- --------------------- +T-37 ® CS 2 n/a n/a 1 H† M +T-27 ® CS 2 n/a n/a 1.1† M Q +T-40 ® CS 2 n/a n/a 2† H† +T-50 ® CS 4 A4[2] A4 3 n/a +T-60 M40 ® CS 2 n/a n/a 4 n/a +T-60 M42 ®† CS 2 n/a n/a 4 C† +T-70 ®† CS 2 A4[2] A4 5 C† +T-26 M33 ® CS 3 n/a n/a 6 D I† M P +T-26 M37/39 ® CS 3 n/a n/a 6 D M P +T-26 M31 ® CS 3 n/a n/a 6.1† M P +T-26 M32 ® CS 3 n/a n/a 6.2† M P +OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P +ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M +OT-133 ® CS 3 n/a n/a 7† M P +BT-2A ® CS 3 n/a n/a 7.1† M +BT-5 M34 ® CS 3 n/a n/a 8† M P +BT-7 M37 ® CS 3 n/a n/a 9 D I† M P +BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P +T-28 M34 ® CS 5 s8 s8 11† M +T-28 M34(L) ® CS 5 s8 s8 11.1† M +T-28E M40 ® CS 6 s8 s8 12† M +T-28E M40(L) ® CS 6 s8 s8 12.1† M +T-34 M40 ® CS 5 n/a n/a 13 M +T-34 M41 ®† CS 5 A4[2] A4 14† C† M +OT-34 ®† CS 4 A2[2] AP7 A2 AP7 15† C† M +T-34 M43 n/a CS 5 A4[2] A4 16† n/a +T-43 ®† CS 5 A4[2] A4 17 C† M +T-34/85 n/a CS 6 A5[4] sD6† A5 sD6† 18† J† +M4/76(a) n/a CS 6 A3[4] s8 sM8 A3 s8 sM8 19† N +T-44 n/a CS 5 A6[5] n/a 20 B† M +T-35 ® CS 8 s9 s9 21† M +SMK n/a CS 7 n/a n/a 21.1 M T† +T-100 n/a CS 7 n/a n/a 22.1 M T† +KV-1 M39/40 n/a CS 6 n/a n/a 22† M +KV-1E n/a CS 6 n/a n/a 23 D M +KV-1 M41 n/a CS 6 A4[2] A4 23 D M +KV-1 M42 n/a CS 6 A4[2] A4 23 D M +KV-2 n/a CS 7 AP9 AP9 24† M +KV-8 n/a CS 6 A4[2] AP7 A4 AP7 15† D M +KV-1S n/a CS 6 A4[2] A4 25† n/a +KV-85 n/a CS 5 A4[3]5[4] A5 26 B† +IS-2 n/a CS 6 n/a n/a 27 B† +IS-2m n/a CS 6 n/a n/a 28 B† G† +IS-3 n/a CS 6 sD6† sD6† 29 G† J† +SU-76M n/a CS 4 (brew up) A5[3] A5 30† n/a +SU-76i(g) n/a CS 5 A5[3] A5 31 K +SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a +SU-152 n/a CS 6 n/a n/a 33† n/a +ISU-122 n/a CS 6 s8 s8 34 G† +ISU-152 n/a CS 6 n/a n/a 34 G† +SU-85 n/a CS 5 A5[3] HE7 s7 A5 HE7 s7 35 n/a +SU-100 n/a CS 5 HE7 HE7 36 n/a +SU-57(a) n/a CS 4 A5[3] HE7 A5 HE7 37 K +BA-20 ® CS 3 n/a n/a 38 n/a +BA-6 ® CS 4 A4[2] A4 39 n/a +BA-64B n/a CS 2 n/a n/a 40† A† +ZSU-37 n/a CS 4 n/a n/a 41† A† +SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† +GAZ-4M-AA n/a CS 4 n/a n/a 43† A† +ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† +LANO AT ® CS 5 A4[2+] A4 44.1 n/a +LANO AA ® CS 5 n/a n/a 44.2† A†1 +IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† +GAZ-67B n/a CS 2 n/a n/a 46 L† +Komsomolet n/a CS 2† n/a n/a 46.1† n/a +STZ-3 n/a cs 4 n/a n/a 46.2 n/a +STZ-5 n/a cs 7 n/a n/a 46.3 n/a +GAZ-MM n/a cs 6 n/a n/a 47 n/a +ZIS-5 n/a cs 7 n/a n/a 47 n/a +IAG-6 n/a cs 7 n/a n/a 47 n/a +NKL-6 n/a CS 2† n/a n/a 47.1† S†1 +NKL-16 n/a cs 2 n/a n/a 47.1† S†1 +NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 +RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 +Stuart III(a) n/a CS 4 C6 C6 48 N O LL +Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL +Sherman III(a) n/a CS 5 (brew up) WP6[J4+]† s8 s8 50† N O R†1 LL +Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL +Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL +Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL +Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL +Churchill III(b) n/a CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† HE8 sD6 sM8† 53† N LL +M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL +Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 +DUKW(a) n/a cs 7 n/a n/a 60† n/a diff --git a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1945.txt b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1945.txt index 7501495..7684a74 100644 --- a/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1945.txt +++ b/vasl_templates/webapp/tests/fixtures/vo-reports/vehicles/russian/1945.txt @@ -1,89 +1,89 @@ === vehicles/russian/1945 === -Name Radio Crew survival Capabilities (effective) # Notes ------------------ ------- ------------------------------------ ------------------------------------------ --------------- ----- --------------------- -T-37 ® CS 2 n/a n/a 1 H† M -T-27 ® CS 2 n/a n/a 1.1† M Q -T-40 ® CS 2 n/a n/a 2† H† -T-50 ® CS 4 A4[2] A4 3 n/a -T-60 M40 ® CS 2 n/a n/a 4 n/a -T-60 M42 ®† CS 2 n/a n/a 4 C† -T-70 ®† CS 2 A4[2] A4 5 C† -T-26 M33 ® CS 3 n/a n/a 6 D I† M P -T-26 M37/39 ® CS 3 n/a n/a 6 D M P -T-26 M31 ® CS 3 n/a n/a 6.1† M P -T-26 M32 ® CS 3 n/a n/a 6.2† M P -OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P -ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M -OT-133 ® CS 3 n/a n/a 7† M P -BT-2A ® CS 3 n/a n/a 7.1† M -BT-5 M34 ® CS 3 n/a n/a 8† M P -BT-7 M37 ® CS 3 n/a n/a 9 D I† M P -BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P -T-28 M34 ® CS 5 s8 s8 11† M -T-28 M34(L) ® CS 5 s8 s8 11.1† M -T-28E M40 ® CS 6 s8 s8 12† M -T-28E M40(L) ® CS 6 s8 s8 12.1† M -T-34 M40 ® CS 5 n/a n/a 13 M -T-34 M41 ®† CS 5 A4[2] A4 14† C† M -OT-34 ®† CS 4 A2[2] AP7 A2 AP7 15† C† M -T-34 M43 n/a CS 5 A4[2] A4 16† n/a -T-43 ®† CS 5 A4[2] A4 17 C† M -T-34/85 n/a CS 6 A5[4] sD6† A5 sD6† 18† J† -M4/76(a) n/a CS 6 A3[4] s8 sM8 A3 s8 sM8 19† N -T-44 n/a CS 5 A6[5] A6 20 B† M -T-35 ® CS 8 s9 s9 21† M -SMK n/a CS 7 n/a n/a 21.1 M T† -T-100 n/a CS 7 n/a n/a 22.1 M T† -KV-1 M39/40 n/a CS 6 n/a n/a 22† M -KV-1E n/a CS 6 n/a n/a 23 D M -KV-1 M41 n/a CS 6 A4[2] A4 23 D M -KV-1 M42 n/a CS 6 A4[2] A4 23 D M -KV-2 n/a CS 7 AP9 AP9 24† M -KV-8 n/a CS 6 A4[2] AP7 A4 AP7 15† D M -KV-1S n/a CS 6 A4[2] A4 25† n/a -KV-85 n/a CS 5 A4[3]5[4] A5 26 B† -IS-2 n/a CS 6 n/a n/a 27 B† -IS-2m n/a CS 6 n/a n/a 28 B† G† -IS-3 n/a CS 6 sD6† sD6† 29 G† J† -SU-76M n/a CS 4 (brew up) A5[3] A5 30† n/a -SU-76i(g) n/a CS 5 A5[3] A5 31 K -SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a -SU-152 n/a CS 6 n/a n/a 33† n/a -ISU-122 n/a CS 6 s8 s8 34 G† -ISU-152 n/a CS 6 n/a n/a 34 G† -SU-85 n/a CS 5 A5[3] HE7 s7 A5 HE7 s7 35 n/a -SU-100 n/a CS 5 HE7 HE7 36 n/a -SU-57(a) n/a CS 4 A5[3] HE7 A5 HE7 37 K -BA-20 ® CS 3 n/a n/a 38 n/a -BA-6 ® CS 4 A4[2] A4 39 n/a -BA-64B n/a CS 2 n/a n/a 40† A† -ZSU-37 n/a CS 4 n/a n/a 41† A† -SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† -GAZ-4M-AA n/a CS 4 n/a n/a 43† A† -ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† -LANO AT ® CS 5 A4[2+] A4 44.1 n/a -LANO AA ® CS 5 n/a n/a 44.2† A†1 -IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† -GAZ-67B n/a CS 2 n/a n/a 46 L† -Komsomolet n/a CS 2† n/a n/a 46.1† n/a -STZ-3 n/a cs 4 n/a n/a 46.2 n/a -STZ-5 n/a cs 7 n/a n/a 46.3 n/a -GAZ-MM n/a cs 6 n/a n/a 47 n/a -ZIS-5 n/a cs 7 n/a n/a 47 n/a -IAG-6 n/a cs 7 n/a n/a 47 n/a -NKL-6 n/a CS 2† n/a n/a 47.1† S†1 -NKL-16 n/a cs 2 n/a n/a 47.1† S†1 -NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 -RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 -Stuart III(a) n/a CS 4 C6 C6 48 N O LL -Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL -Sherman III(a) n/a CS 5 (brew up) WP6[J4+]†[] s8 WP6 s8 50† N O R†1 LL -Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL -Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL -Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL -Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL -Churchill III(b) n/a CS 7 D6[J4]7[5]†[] HE7[F3]8[4+]†[] sD6[4+] sM8† D7 HE8 sD6 sM8† 53† N LL -M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL -Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 -DUKW(a) n/a cs 7 n/a n/a 60† n/a +Name Radio Crew survival Capabilities (effective) # Notes +----------------- ------- ------------------------------------ -------------------------------------- --------------- ----- --------------------- +T-37 ® CS 2 n/a n/a 1 H† M +T-27 ® CS 2 n/a n/a 1.1† M Q +T-40 ® CS 2 n/a n/a 2† H† +T-50 ® CS 4 A4[2] A4 3 n/a +T-60 M40 ® CS 2 n/a n/a 4 n/a +T-60 M42 ®† CS 2 n/a n/a 4 C† +T-70 ®† CS 2 A4[2] A4 5 C† +T-26 M33 ® CS 3 n/a n/a 6 D I† M P +T-26 M37/39 ® CS 3 n/a n/a 6 D M P +T-26 M31 ® CS 3 n/a n/a 6.1† M P +T-26 M32 ® CS 3 n/a n/a 6.2† M P +OT-26 ® CS 3 (brew up) n/a n/a 6.3† M P +ST-26 Bridgelayer n/a CS 3 n/a n/a 6.4† M +OT-133 ® CS 3 n/a n/a 7† M P +BT-2A ® CS 3 n/a n/a 7.1† M +BT-5 M34 ® CS 3 n/a n/a 8† M P +BT-7 M37 ® CS 3 n/a n/a 9 D I† M P +BT-7A n/a CS 3 AP7 s9 AP7 s9 10 M P +T-28 M34 ® CS 5 s8 s8 11† M +T-28 M34(L) ® CS 5 s8 s8 11.1† M +T-28E M40 ® CS 6 s8 s8 12† M +T-28E M40(L) ® CS 6 s8 s8 12.1† M +T-34 M40 ® CS 5 n/a n/a 13 M +T-34 M41 ®† CS 5 A4[2] A4 14† C† M +OT-34 ®† CS 4 A2[2] AP7 A2 AP7 15† C† M +T-34 M43 n/a CS 5 A4[2] A4 16† n/a +T-43 ®† CS 5 A4[2] A4 17 C† M +T-34/85 n/a CS 6 A5[4] sD6† A5 sD6† 18† J† +M4/76(a) n/a CS 6 A3[4] s8 sM8 A3 s8 sM8 19† N +T-44 n/a CS 5 A6[5] A6 20 B† M +T-35 ® CS 8 s9 s9 21† M +SMK n/a CS 7 n/a n/a 21.1 M T† +T-100 n/a CS 7 n/a n/a 22.1 M T† +KV-1 M39/40 n/a CS 6 n/a n/a 22† M +KV-1E n/a CS 6 n/a n/a 23 D M +KV-1 M41 n/a CS 6 A4[2] A4 23 D M +KV-1 M42 n/a CS 6 A4[2] A4 23 D M +KV-2 n/a CS 7 AP9 AP9 24† M +KV-8 n/a CS 6 A4[2] AP7 A4 AP7 15† D M +KV-1S n/a CS 6 A4[2] A4 25† n/a +KV-85 n/a CS 5 A4[3]5[4] A5 26 B† +IS-2 n/a CS 6 n/a n/a 27 B† +IS-2m n/a CS 6 n/a n/a 28 B† G† +IS-3 n/a CS 6 sD6† sD6† 29 G† J† +SU-76M n/a CS 4 (brew up) A5[3] A5 30† n/a +SU-76i(g) n/a CS 5 A5[3] A5 31 K +SU-122 n/a CS 5 H9 s8 H9 s8 32 n/a +SU-152 n/a CS 6 n/a n/a 33† n/a +ISU-122 n/a CS 6 s8 s8 34 G† +ISU-152 n/a CS 6 n/a n/a 34 G† +SU-85 n/a CS 5 A5[3] HE7 s7 A5 HE7 s7 35 n/a +SU-100 n/a CS 5 HE7 HE7 36 n/a +SU-57(a) n/a CS 4 A5[3] HE7 A5 HE7 37 K +BA-20 ® CS 3 n/a n/a 38 n/a +BA-6 ® CS 4 A4[2] A4 39 n/a +BA-64B n/a CS 2 n/a n/a 40† A† +ZSU-37 n/a CS 4 n/a n/a 41† A† +SU-12 n/a CS 4 AP7 s8 AP7 s8 42 F† +GAZ-4M-AA n/a CS 4 n/a n/a 43† A† +ZIS-42-AA n/a CS 4 n/a n/a 44 A† F† +LANO AT ® CS 5 A4[2+] A4 44.1 n/a +LANO AA ® CS 5 n/a n/a 44.2† A†1 +IAG-10-AA n/a CS 4 AP7 AP7 45 A† F† +GAZ-67B n/a CS 2 n/a n/a 46 L† +Komsomolet n/a CS 2† n/a n/a 46.1† n/a +STZ-3 n/a cs 4 n/a n/a 46.2 n/a +STZ-5 n/a cs 7 n/a n/a 46.3 n/a +GAZ-MM n/a cs 6 n/a n/a 47 n/a +ZIS-5 n/a cs 7 n/a n/a 47 n/a +IAG-6 n/a cs 7 n/a n/a 47 n/a +NKL-6 n/a CS 2† n/a n/a 47.1† S†1 +NKL-16 n/a cs 2 n/a n/a 47.1† S†1 +NKL-26 n/a CS 2 n/a n/a 47.2† Q S†1 +RF-8-GAZ-98 n/a CS 3 n/a n/a 47.3† S†1 +Stuart III(a) n/a CS 4 C6 C6 48 N O LL +Lee(a) n/a CS 7 C4† s8† C4† s8† 49† B†1 N O LL +Sherman III(a) n/a CS 5 (brew up) WP6[J4+]† s8 WP6 s8 50† N O R†1 LL +Sherman III(L)(a) n/a CS 6 (brew up) WP7 s5 sM8 WP7 s5 sM8 50.1 N O R† LL +Matilda II(b) n/a CS 5 sD6 sD6 51† M†1 N LL +Valentine V(b) n/a CS 4 sM8 sM8 52.1 N LL +Valentine VIII(b) n/a CS 4 HE7 sD6 HE7 sD6 52.2 N LL +Churchill III(b) n/a CS 7 D6[J4]7[5]† HE7[F3]8[4+]† sD6[4+] sM8† D7 HE8 sD6 sM8† 53† N LL +M3A1 Scout Car(a) n/a CS 4 n/a n/a 54† N LL +Jeep GPA(a) n/a cs 2 n/a n/a 59 H† L†1 +DUKW(a) n/a cs 7 n/a n/a 60† n/a diff --git a/vasl_templates/webapp/tests/test_vo_reports.py b/vasl_templates/webapp/tests/test_vo_reports.py index b383a7a..95d2bf9 100644 --- a/vasl_templates/webapp/tests/test_vo_reports.py +++ b/vasl_templates/webapp/tests/test_vo_reports.py @@ -5,19 +5,14 @@ import io import shutil import re +import lxml.html +import lxml.etree import tabulate -import pytest -from vasl_templates.webapp.tests.utils import find_child, find_children, wait_for +from vasl_templates.webapp.tests.utils import find_child, wait_for # --------------------------------------------------------------------- -# NOTE: Running these checks is fairly slow, and once done, don't provide a great deal of value -# in the day-to-day development process, so we make them optional. -@pytest.mark.skipif( - pytest.config.option.short_tests, #pylint: disable=no-member - reason = "--short-tests specified" -) def test_vo_reports( webapp, webdriver ): """Check the vehicle/ordnance reports.""" @@ -89,22 +84,26 @@ def get_vo_report( webapp, webdriver, nat, vo_type, year ): webdriver.get( webapp.url_for( "get_vo_report", nat=nat, vo_type=vo_type, year=year ) ) - wait_for( 5, lambda: find_child("#results").is_displayed() ) + wait_for( 2, lambda: find_child("#results").is_displayed() ) - # unload the results - def getval( cell ): - """Get a table cell's value (cleaned up).""" - val = cell.get_attribute( "innerHTML" ) + def tidy( cell ): + """Tidy up a cell value.""" + val = lxml.etree.tostring( cell ).decode( "utf-8" ) #pylint: disable=c-extension-no-member + mo = re.search( r"^<(th|td).*?>(.*)$", val ) + val = mo.group(2) if val == "n/a": return "n/a" val = val.replace( '', "" ).replace( "", "" ) + val = val.replace( "†", "\u2020" ).replace( "®", "\u00ae" ) return val + + # unload the results + # NOTE: Getting each table cell via Selenium is insanely slow - we parse the HTML manually :-/ results = [] - elem = find_child( "#results" ) - for row in find_children( "tr", elem ): - if not results: - results.append( [ getval(c) for c in find_children("th",row) ] ) - else: - results.append( [ getval(c) for c in find_children("td",row) ] ) + doc = lxml.html.fromstring( webdriver.page_source ) + for row in doc.xpath( "//div[@id='results']//table//tr" ): + tag = "td" if results else "th" + cells = row.xpath( ".//{}".format( tag ) ) + results.append( list( tidy(c) for c in cells ) ) return results