From 8dfe4eb9f2a758b607a1b75e1c1777b7e7bac542 Mon Sep 17 00:00:00 2001 From: Corban-Lee <77944149+XordK@users.noreply.github.com> Date: Thu, 11 May 2023 10:03:48 +0100 Subject: [PATCH] General rewrite of sections + UI changes General rewrite of sections: sections are rewritten to be their own model UI Changes: updated teams page for sections changes, also rewrote home page. --- src/mainapp/fixtures/members_fixture.json | 1740 ++++---- src/mainapp/fixtures/sections_fixture.json | 3502 +++++++++++++++++ src/mainapp/fixtures/teams_fixture.json | 140 +- .../commands/create_members_fixture.py | 131 +- .../commands/create_sections_fixture.py | 79 + .../commands/create_teams_fixture.py | 38 +- src/mainapp/migrations/0001_initial.py | 8 +- ...eam_number_team_name_alter_section_name.py | 23 - src/mainapp/models.py | 94 +- src/mainapp/templates/index.html | 105 +- src/mainapp/templates/teams.html | 125 +- src/mainapp/urls.py | 2 +- src/mainapp/views.py | 13 +- src/static/js/teams.js | 82 +- 14 files changed, 4909 insertions(+), 1173 deletions(-) create mode 100644 src/mainapp/fixtures/sections_fixture.json create mode 100644 src/mainapp/management/commands/create_sections_fixture.py delete mode 100644 src/mainapp/migrations/0002_rename_team_number_team_name_alter_section_name.py diff --git a/src/mainapp/fixtures/members_fixture.json b/src/mainapp/fixtures/members_fixture.json index 8c884d3..6fe915f 100644 --- a/src/mainapp/fixtures/members_fixture.json +++ b/src/mainapp/fixtures/members_fixture.json @@ -1,1102 +1,1080 @@ [ { "model": "mainapp.member", - "pk": 1, + "pk": null, "fields": { - "first_name": "Duane", - "last_name": "Bent", + "first_name": "Ronald", + "last_name": "Williams", "team": 1, - "peg_number": null, - "section": "A" + "section": 83, + "peg_number": 118 } }, { "model": "mainapp.member", - "pk": 2, + "pk": null, "fields": { - "first_name": "Erwin", - "last_name": "Napier", - "team": 1, - "peg_number": 1, - "section": "B" - } - }, - { - "model": "mainapp.member", - "pk": 3, - "fields": { - "first_name": "Arthur", - "last_name": "Dillon", - "team": 1, - "peg_number": 2, - "section": "C" - } - }, - { - "model": "mainapp.member", - "pk": 4, - "fields": { - "first_name": "William", - "last_name": "Hector", - "team": 1, - "peg_number": 3, - "section": "D" - } - }, - { - "model": "mainapp.member", - "pk": 5, - "fields": { - "first_name": "Warren", - "last_name": "Dixon", - "team": 1, - "peg_number": 4, - "section": "E" - } - }, - { - "model": "mainapp.member", - "pk": 6, - "fields": { - "first_name": "Hallie", - "last_name": "Fountain", - "team": 1, - "peg_number": 5, - "section": "F" - } - }, - { - "model": "mainapp.member", - "pk": 7, - "fields": { - "first_name": "Hal", - "last_name": "Fisher", - "team": 1, - "peg_number": 6, - "section": "G" - } - }, - { - "model": "mainapp.member", - "pk": 8, - "fields": { - "first_name": "Lamar", - "last_name": "Ferguson", - "team": 1, - "peg_number": 7, - "section": "H" - } - }, - { - "model": "mainapp.member", - "pk": 9, - "fields": { - "first_name": "Alix", + "first_name": "Amanda", "last_name": "Campbell", "team": 1, - "peg_number": 8, - "section": "I" + "section": 12, + "peg_number": 119 } }, { "model": "mainapp.member", - "pk": 10, + "pk": null, "fields": { - "first_name": "Jule", - "last_name": "Oleary", + "first_name": "Sherita", + "last_name": "Horne", "team": 1, - "peg_number": 9, - "section": "J" + "section": 135, + "peg_number": 120 } }, { "model": "mainapp.member", - "pk": 11, + "pk": null, "fields": { - "first_name": "Dorothy", - "last_name": "Maginnis", + "first_name": "Malik", + "last_name": "Edmunds", + "team": 1, + "section": 102, + "peg_number": 121 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Anne", + "last_name": "Gridley", + "team": 1, + "section": 123, + "peg_number": 122 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Clara", + "last_name": "Mayfield", + "team": 1, + "section": 146, + "peg_number": 123 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Santo", + "last_name": "Ross", "team": 2, - "peg_number": 10, - "section": "K" + "section": 43, + "peg_number": 124 } }, { "model": "mainapp.member", - "pk": 12, + "pk": null, "fields": { - "first_name": "George", - "last_name": "Lofgren", + "first_name": "Sara", + "last_name": "Kjelland", "team": 2, - "peg_number": 11, - "section": "L" + "section": 130, + "peg_number": 125 } }, { "model": "mainapp.member", - "pk": 13, + "pk": null, "fields": { - "first_name": "Evita", - "last_name": "Tolentino", + "first_name": "Elizabeth", + "last_name": "Cochran", "team": 2, - "peg_number": 12, - "section": "M" + "section": 128, + "peg_number": 126 } }, { "model": "mainapp.member", - "pk": 14, + "pk": null, "fields": { - "first_name": "David", - "last_name": "Bundy", - "team": 2, - "peg_number": 13, - "section": "N" - } - }, - { - "model": "mainapp.member", - "pk": 15, - "fields": { - "first_name": "Ellen", - "last_name": "Ota", - "team": 2, - "peg_number": 14, - "section": "O" - } - }, - { - "model": "mainapp.member", - "pk": 16, - "fields": { - "first_name": "Vivian", - "last_name": "Myers", - "team": 2, - "peg_number": 15, - "section": "P" - } - }, - { - "model": "mainapp.member", - "pk": 17, - "fields": { - "first_name": "Brenda", - "last_name": "Getty", - "team": 2, - "peg_number": 16, - "section": "Q" - } - }, - { - "model": "mainapp.member", - "pk": 18, - "fields": { - "first_name": "Charles", - "last_name": "Adams", - "team": 2, - "peg_number": 17, - "section": "R" - } - }, - { - "model": "mainapp.member", - "pk": 19, - "fields": { - "first_name": "Stephen", - "last_name": "Patterson", - "team": 2, - "peg_number": 18, - "section": "S" - } - }, - { - "model": "mainapp.member", - "pk": 20, - "fields": { - "first_name": "Christine", - "last_name": "Reynolds", - "team": 2, - "peg_number": 19, - "section": "T" - } - }, - { - "model": "mainapp.member", - "pk": 21, - "fields": { - "first_name": "Mary", - "last_name": "Baca", + "first_name": "Donald", + "last_name": "Shannon", "team": 3, - "peg_number": 20, - "section": "U" + "section": 37, + "peg_number": 127 } }, { "model": "mainapp.member", - "pk": 22, + "pk": null, + "fields": { + "first_name": "Casey", + "last_name": "Kane", + "team": 3, + "section": 10, + "peg_number": 128 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Jim", + "last_name": "Bagley", + "team": 3, + "section": 40, + "peg_number": 129 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Jennifer", + "last_name": "Harter", + "team": 4, + "section": 85, + "peg_number": 130 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Scott", + "last_name": "Nicolosi", + "team": 4, + "section": 8, + "peg_number": 131 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Alberto", + "last_name": "Lanford", + "team": 4, + "section": 153, + "peg_number": 132 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Andrew", + "last_name": "Bond", + "team": 5, + "section": 81, + "peg_number": 133 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Owen", + "last_name": "Stimmell", + "team": 5, + "section": 5, + "peg_number": 134 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Rosie", + "last_name": "Canales", + "team": 5, + "section": 136, + "peg_number": 135 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Paul", + "last_name": "Howell", + "team": 6, + "section": 99, + "peg_number": 136 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Franklin", + "last_name": "Crawford", + "team": 6, + "section": 28, + "peg_number": 137 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Erwin", + "last_name": "Golding", + "team": 6, + "section": 129, + "peg_number": 138 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Jesse", + "last_name": "Soto", + "team": 7, + "section": 101, + "peg_number": 139 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Robert", + "last_name": "Alway", + "team": 7, + "section": 65, + "peg_number": 140 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Donald", + "last_name": "Tillman", + "team": 7, + "section": 155, + "peg_number": 141 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Philip", + "last_name": "Koehler", + "team": 7, + "section": 58, + "peg_number": 142 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Phillip", + "last_name": "Bishop", + "team": 8, + "section": 38, + "peg_number": 143 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Timothy", + "last_name": "Heller", + "team": 8, + "section": 98, + "peg_number": 144 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Dennis", + "last_name": "Elliott", + "team": 8, + "section": 152, + "peg_number": 145 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Louis", + "last_name": "Huang", + "team": 9, + "section": 15, + "peg_number": 146 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Susan", + "last_name": "Martinez", + "team": 9, + "section": 25, + "peg_number": 147 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Margaret", + "last_name": "Myles", + "team": 9, + "section": 57, + "peg_number": 148 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Wendell", + "last_name": "Morrison", + "team": 9, + "section": 154, + "peg_number": 149 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Gregory", + "last_name": "Oliver", + "team": 10, + "section": 126, + "peg_number": 150 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Raymond", + "last_name": "Gentry", + "team": 10, + "section": 157, + "peg_number": 151 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Andy", + "last_name": "Mckinney", + "team": 10, + "section": 148, + "peg_number": 152 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Kathy", + "last_name": "Pacheco", + "team": 11, + "section": 104, + "peg_number": 153 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "James", + "last_name": "Jones", + "team": 11, + "section": 80, + "peg_number": 154 + } + }, + { + "model": "mainapp.member", + "pk": null, "fields": { "first_name": "Sandra", - "last_name": "Nunez", - "team": 3, - "peg_number": 21, - "section": "V" + "last_name": "Payne", + "team": 11, + "section": 125, + "peg_number": 155 } }, { "model": "mainapp.member", - "pk": 23, + "pk": null, "fields": { - "first_name": "Gina", - "last_name": "Jett", - "team": 3, - "peg_number": 22, - "section": "W" + "first_name": "Lynn", + "last_name": "Snider", + "team": 11, + "section": 98, + "peg_number": 156 } }, { "model": "mainapp.member", - "pk": 24, + "pk": null, "fields": { - "first_name": "Jessica", - "last_name": "Bacot", - "team": 3, - "peg_number": 23, - "section": "X" + "first_name": "Joseph", + "last_name": "Lewis", + "team": 12, + "section": 48, + "peg_number": 157 } }, { "model": "mainapp.member", - "pk": 25, + "pk": null, "fields": { - "first_name": "Nancy", - "last_name": "Seifert", - "team": 3, - "peg_number": 24, - "section": "Y" + "first_name": "Carrie", + "last_name": "Broussard", + "team": 12, + "section": 86, + "peg_number": 158 } }, { "model": "mainapp.member", - "pk": 26, + "pk": null, "fields": { - "first_name": "Edith", - "last_name": "Roberts", - "team": 3, - "peg_number": 25, - "section": "Z" + "first_name": "Leora", + "last_name": "Yeaton", + "team": 12, + "section": 118, + "peg_number": 159 } }, { "model": "mainapp.member", - "pk": 27, - "fields": { - "first_name": "Jean", - "last_name": "Klein", - "team": 3, - "peg_number": 26, - "section": "ZA" - } - }, - { - "model": "mainapp.member", - "pk": 28, - "fields": { - "first_name": "Gertrude", - "last_name": "Young", - "team": 3, - "peg_number": 27, - "section": "ZB" - } - }, - { - "model": "mainapp.member", - "pk": 29, + "pk": null, "fields": { "first_name": "John", "last_name": "Walker", - "team": 3, - "peg_number": 28, - "section": "ZC" + "team": 13, + "section": 137, + "peg_number": 160 } }, { "model": "mainapp.member", - "pk": 30, + "pk": null, "fields": { - "first_name": "Jeanette", - "last_name": "Parker", - "team": 3, - "peg_number": 29, - "section": "ZD" + "first_name": "Bart", + "last_name": "Simmons", + "team": 13, + "section": 80, + "peg_number": 161 } }, { "model": "mainapp.member", - "pk": 31, + "pk": null, "fields": { - "first_name": "Tracey", - "last_name": "Kilgore", - "team": 4, - "peg_number": 30, - "section": "ZE" + "first_name": "Anthony", + "last_name": "Delacruz", + "team": 13, + "section": 73, + "peg_number": 162 } }, { "model": "mainapp.member", - "pk": 32, + "pk": null, "fields": { - "first_name": "Jeff", - "last_name": "Seigler", - "team": 4, - "peg_number": 31, - "section": "ZF" + "first_name": "Autumn", + "last_name": "Scott", + "team": 14, + "section": 39, + "peg_number": 163 } }, { "model": "mainapp.member", - "pk": 33, + "pk": null, "fields": { - "first_name": "Victoria", - "last_name": "Callahan", - "team": 4, - "peg_number": 32, - "section": "ZG" + "first_name": "Candace", + "last_name": "Olds", + "team": 14, + "section": 98, + "peg_number": 164 } }, { "model": "mainapp.member", - "pk": 34, + "pk": null, "fields": { - "first_name": "Josie", - "last_name": "Davis", - "team": 4, - "peg_number": 33, - "section": "ZH" + "first_name": "Sara", + "last_name": "Huerta", + "team": 14, + "section": 126, + "peg_number": 165 } }, { "model": "mainapp.member", - "pk": 35, + "pk": null, "fields": { - "first_name": "John", - "last_name": "Kissane", - "team": 4, - "peg_number": 34, - "section": "ZI" + "first_name": "Earl", + "last_name": "Bryan", + "team": 14, + "section": 117, + "peg_number": 166 } }, { "model": "mainapp.member", - "pk": 36, + "pk": null, "fields": { - "first_name": "Dina", - "last_name": "Carney", - "team": 4, - "peg_number": 35, - "section": "ZJ" + "first_name": "Max", + "last_name": "Coon", + "team": 15, + "section": 138, + "peg_number": 167 } }, { "model": "mainapp.member", - "pk": 37, + "pk": null, "fields": { - "first_name": "Miguel", - "last_name": "Young", - "team": 4, - "peg_number": 36, - "section": "ZK" + "first_name": "Brooke", + "last_name": "Pizzo", + "team": 15, + "section": 151, + "peg_number": 168 } }, { "model": "mainapp.member", - "pk": 38, + "pk": null, "fields": { - "first_name": "Paulette", - "last_name": "Hartman", - "team": 4, - "peg_number": 37, - "section": "ZL" + "first_name": "Terry", + "last_name": "Lawrence", + "team": 15, + "section": 8, + "peg_number": 169 } }, { "model": "mainapp.member", - "pk": 39, + "pk": null, "fields": { - "first_name": "Donald", - "last_name": "Leblanc", - "team": 4, - "peg_number": 38, - "section": "ZM" + "first_name": "Jacqueline", + "last_name": "Brown", + "team": 16, + "section": 54, + "peg_number": 170 } }, { "model": "mainapp.member", - "pk": 40, + "pk": null, "fields": { - "first_name": "Brian", - "last_name": "Diaz", - "team": 4, - "peg_number": 39, - "section": "ZN" + "first_name": "Ervin", + "last_name": "Gervasio", + "team": 16, + "section": 114, + "peg_number": 171 } }, { "model": "mainapp.member", - "pk": 41, + "pk": null, "fields": { - "first_name": "Howard", - "last_name": "Kerr", - "team": 5, - "peg_number": 40, - "section": "ZO" + "first_name": "Anthony", + "last_name": "Herrera", + "team": 16, + "section": 82, + "peg_number": 172 } }, { "model": "mainapp.member", - "pk": 42, + "pk": null, "fields": { - "first_name": "Elsie", - "last_name": "Servais", - "team": 5, - "peg_number": 41, - "section": "ZP" + "first_name": "Sheila", + "last_name": "Hewitt", + "team": 17, + "section": 107, + "peg_number": 173 } }, { "model": "mainapp.member", - "pk": 43, + "pk": null, "fields": { - "first_name": "Michael", - "last_name": "Golden", - "team": 5, - "peg_number": 42, - "section": "ZQ" + "first_name": "Jill", + "last_name": "Weisman", + "team": 17, + "section": 150, + "peg_number": 174 } }, { "model": "mainapp.member", - "pk": 44, - "fields": { - "first_name": "Pedro", - "last_name": "Beyer", - "team": 5, - "peg_number": 43, - "section": "ZR" - } - }, - { - "model": "mainapp.member", - "pk": 45, - "fields": { - "first_name": "Barbara", - "last_name": "Vallejos", - "team": 5, - "peg_number": 44, - "section": "ZS" - } - }, - { - "model": "mainapp.member", - "pk": 46, - "fields": { - "first_name": "Kenneth", - "last_name": "Hartry", - "team": 5, - "peg_number": 45, - "section": "ZT" - } - }, - { - "model": "mainapp.member", - "pk": 47, - "fields": { - "first_name": "Sandra", - "last_name": "Harrison", - "team": 5, - "peg_number": 46, - "section": "ZU" - } - }, - { - "model": "mainapp.member", - "pk": 48, - "fields": { - "first_name": "Elizabeth", - "last_name": "Hwang", - "team": 5, - "peg_number": 47, - "section": "ZV" - } - }, - { - "model": "mainapp.member", - "pk": 49, - "fields": { - "first_name": "Francis", - "last_name": "Cain", - "team": 5, - "peg_number": 48, - "section": "ZW" - } - }, - { - "model": "mainapp.member", - "pk": 50, - "fields": { - "first_name": "Annie", - "last_name": "Potter", - "team": 5, - "peg_number": 49, - "section": "ZX" - } - }, - { - "model": "mainapp.member", - "pk": 51, - "fields": { - "first_name": "Dennis", - "last_name": "Raymond", - "team": 6, - "peg_number": 50, - "section": "ZY" - } - }, - { - "model": "mainapp.member", - "pk": 52, - "fields": { - "first_name": "Jeffrey", - "last_name": "Lytle", - "team": 6, - "peg_number": 51, - "section": "ZZ" - } - }, - { - "model": "mainapp.member", - "pk": 53, - "fields": { - "first_name": "Crystal", - "last_name": "Ware", - "team": 6, - "peg_number": 52, - "section": "ZZA" - } - }, - { - "model": "mainapp.member", - "pk": 54, - "fields": { - "first_name": "Marie", - "last_name": "Zeiler", - "team": 6, - "peg_number": 53, - "section": "ZZB" - } - }, - { - "model": "mainapp.member", - "pk": 55, - "fields": { - "first_name": "Dan", - "last_name": "Febres", - "team": 6, - "peg_number": 54, - "section": "ZZC" - } - }, - { - "model": "mainapp.member", - "pk": 56, - "fields": { - "first_name": "Edward", - "last_name": "Millard", - "team": 6, - "peg_number": 55, - "section": "ZZD" - } - }, - { - "model": "mainapp.member", - "pk": 57, - "fields": { - "first_name": "Duncan", - "last_name": "Preciado", - "team": 6, - "peg_number": 56, - "section": "ZZE" - } - }, - { - "model": "mainapp.member", - "pk": 58, - "fields": { - "first_name": "Ina", - "last_name": "Lara", - "team": 6, - "peg_number": 57, - "section": "ZZF" - } - }, - { - "model": "mainapp.member", - "pk": 59, - "fields": { - "first_name": "James", - "last_name": "Ortiz", - "team": 6, - "peg_number": 58, - "section": "ZZG" - } - }, - { - "model": "mainapp.member", - "pk": 60, - "fields": { - "first_name": "Tomoko", - "last_name": "Best", - "team": 6, - "peg_number": 59, - "section": "ZZH" - } - }, - { - "model": "mainapp.member", - "pk": 61, - "fields": { - "first_name": "James", - "last_name": "Ramerez", - "team": 7, - "peg_number": 60, - "section": "ZZI" - } - }, - { - "model": "mainapp.member", - "pk": 62, - "fields": { - "first_name": "Rebbeca", - "last_name": "Schultz", - "team": 7, - "peg_number": 61, - "section": "ZZJ" - } - }, - { - "model": "mainapp.member", - "pk": 63, - "fields": { - "first_name": "John", - "last_name": "Hogue", - "team": 7, - "peg_number": 62, - "section": "ZZK" - } - }, - { - "model": "mainapp.member", - "pk": 64, - "fields": { - "first_name": "Yessenia", - "last_name": "Garcia", - "team": 7, - "peg_number": 63, - "section": "ZZL" - } - }, - { - "model": "mainapp.member", - "pk": 65, - "fields": { - "first_name": "Elvira", - "last_name": "Lehnen", - "team": 7, - "peg_number": 64, - "section": "ZZM" - } - }, - { - "model": "mainapp.member", - "pk": 66, - "fields": { - "first_name": "Ernest", - "last_name": "Thomas", - "team": 7, - "peg_number": 65, - "section": "ZZN" - } - }, - { - "model": "mainapp.member", - "pk": 67, - "fields": { - "first_name": "Richard", - "last_name": "Bowman", - "team": 7, - "peg_number": 66, - "section": "ZZO" - } - }, - { - "model": "mainapp.member", - "pk": 68, - "fields": { - "first_name": "Lisa", - "last_name": "Gilmore", - "team": 7, - "peg_number": 67, - "section": "ZZP" - } - }, - { - "model": "mainapp.member", - "pk": 69, - "fields": { - "first_name": "Diane", - "last_name": "Coleman", - "team": 7, - "peg_number": 68, - "section": "ZZQ" - } - }, - { - "model": "mainapp.member", - "pk": 70, - "fields": { - "first_name": "Ellie", - "last_name": "Sheppard", - "team": 7, - "peg_number": 69, - "section": "ZZR" - } - }, - { - "model": "mainapp.member", - "pk": 71, - "fields": { - "first_name": "Michael", - "last_name": "Cruz", - "team": 8, - "peg_number": 70, - "section": "ZZS" - } - }, - { - "model": "mainapp.member", - "pk": 72, + "pk": null, "fields": { "first_name": "Mary", - "last_name": "Nimmo", - "team": 8, - "peg_number": 71, - "section": "ZZT" + "last_name": "Williams", + "team": 17, + "section": 143, + "peg_number": 175 } }, { "model": "mainapp.member", - "pk": 73, - "fields": { - "first_name": "James", - "last_name": "Davis", - "team": 8, - "peg_number": 72, - "section": "ZZU" - } - }, - { - "model": "mainapp.member", - "pk": 74, - "fields": { - "first_name": "Mary", - "last_name": "Holmes", - "team": 8, - "peg_number": 73, - "section": "ZZV" - } - }, - { - "model": "mainapp.member", - "pk": 75, - "fields": { - "first_name": "Ruby", - "last_name": "Rosario", - "team": 8, - "peg_number": 74, - "section": "ZZW" - } - }, - { - "model": "mainapp.member", - "pk": 76, - "fields": { - "first_name": "Brenda", - "last_name": "Mcclinton", - "team": 8, - "peg_number": 75, - "section": "ZZX" - } - }, - { - "model": "mainapp.member", - "pk": 77, - "fields": { - "first_name": "Gregory", - "last_name": "Looft", - "team": 8, - "peg_number": 76, - "section": "ZZY" - } - }, - { - "model": "mainapp.member", - "pk": 78, - "fields": { - "first_name": "Bertha", - "last_name": "Acevedo", - "team": 8, - "peg_number": 77, - "section": "ZZZ" - } - }, - { - "model": "mainapp.member", - "pk": 79, - "fields": { - "first_name": "Daniel", - "last_name": "Baldwin", - "team": 8, - "peg_number": 78, - "section": "ZZZA" - } - }, - { - "model": "mainapp.member", - "pk": 80, - "fields": { - "first_name": "Paulette", - "last_name": "Buxton", - "team": 8, - "peg_number": 79, - "section": "ZZZB" - } - }, - { - "model": "mainapp.member", - "pk": 81, - "fields": { - "first_name": "Ramona", - "last_name": "Ballard", - "team": 9, - "peg_number": 80, - "section": "ZZZC" - } - }, - { - "model": "mainapp.member", - "pk": 82, - "fields": { - "first_name": "James", - "last_name": "Martinez", - "team": 9, - "peg_number": 81, - "section": "ZZZD" - } - }, - { - "model": "mainapp.member", - "pk": 83, - "fields": { - "first_name": "Christopher", - "last_name": "Hill", - "team": 9, - "peg_number": 82, - "section": "ZZZE" - } - }, - { - "model": "mainapp.member", - "pk": 84, - "fields": { - "first_name": "Holly", - "last_name": "Parker", - "team": 9, - "peg_number": 83, - "section": "ZZZF" - } - }, - { - "model": "mainapp.member", - "pk": 85, - "fields": { - "first_name": "Laurie", - "last_name": "Hamburger", - "team": 9, - "peg_number": 84, - "section": "ZZZG" - } - }, - { - "model": "mainapp.member", - "pk": 86, - "fields": { - "first_name": "David", - "last_name": "Oldenkamp", - "team": 9, - "peg_number": 85, - "section": "ZZZH" - } - }, - { - "model": "mainapp.member", - "pk": 87, - "fields": { - "first_name": "Wallace", - "last_name": "Rolle", - "team": 9, - "peg_number": 86, - "section": "ZZZI" - } - }, - { - "model": "mainapp.member", - "pk": 88, + "pk": null, "fields": { "first_name": "Janice", - "last_name": "Foster", - "team": 9, - "peg_number": 87, - "section": "ZZZJ" + "last_name": "Ali", + "team": 18, + "section": 9, + "peg_number": 176 } }, { "model": "mainapp.member", - "pk": 89, + "pk": null, "fields": { - "first_name": "Victor", - "last_name": "Cothran", - "team": 9, - "peg_number": 88, - "section": "ZZZK" + "first_name": "Scott", + "last_name": "Hancock", + "team": 18, + "section": 39, + "peg_number": 177 } }, { "model": "mainapp.member", - "pk": 90, + "pk": null, "fields": { - "first_name": "James", - "last_name": "Allen", - "team": 9, - "peg_number": 89, - "section": "ZZZL" + "first_name": "Emily", + "last_name": "Marconis", + "team": 18, + "section": 69, + "peg_number": 178 } }, { "model": "mainapp.member", - "pk": 91, + "pk": null, "fields": { - "first_name": "Gordon", - "last_name": "Fultz", - "team": 10, - "peg_number": 90, - "section": "ZZZM" + "first_name": "Martha", + "last_name": "Johnson", + "team": 19, + "section": 88, + "peg_number": 179 } }, { "model": "mainapp.member", - "pk": 92, + "pk": null, "fields": { - "first_name": "Joel", - "last_name": "Martin", - "team": 10, - "peg_number": 91, - "section": "ZZZN" + "first_name": "Charles", + "last_name": "Ober", + "team": 19, + "section": 91, + "peg_number": 180 } }, { "model": "mainapp.member", - "pk": 93, + "pk": null, "fields": { - "first_name": "David", - "last_name": "Greenfield", - "team": 10, - "peg_number": 92, - "section": "ZZZO" + "first_name": "Kristy", + "last_name": "Mayo", + "team": 19, + "section": 102, + "peg_number": 181 } }, { "model": "mainapp.member", - "pk": 94, + "pk": null, "fields": { - "first_name": "Alfred", - "last_name": "Cable", - "team": 10, - "peg_number": 93, - "section": "ZZZP" + "first_name": "Mabel", + "last_name": "Caraballo", + "team": 20, + "section": 129, + "peg_number": 182 } }, { "model": "mainapp.member", - "pk": 95, + "pk": null, "fields": { - "first_name": "Linda", - "last_name": "Mann", - "team": 10, - "peg_number": 94, - "section": "ZZZQ" + "first_name": "Shelley", + "last_name": "Gardea", + "team": 20, + "section": 13, + "peg_number": 183 } }, { "model": "mainapp.member", - "pk": 96, + "pk": null, "fields": { - "first_name": "Troy", - "last_name": "Alvardo", - "team": 10, - "peg_number": 95, - "section": "ZZZR" + "first_name": "Kristina", + "last_name": "Goad", + "team": 20, + "section": 91, + "peg_number": 184 } }, { "model": "mainapp.member", - "pk": 97, + "pk": null, "fields": { - "first_name": "Joseph", - "last_name": "Douglas", - "team": 10, - "peg_number": 96, - "section": "ZZZS" + "first_name": "Sammie", + "last_name": "Reed", + "team": 21, + "section": 31, + "peg_number": 185 } }, { "model": "mainapp.member", - "pk": 98, + "pk": null, + "fields": { + "first_name": "Frank", + "last_name": "Wilson", + "team": 21, + "section": 119, + "peg_number": 186 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Hazel", + "last_name": "Orosco", + "team": 21, + "section": 101, + "peg_number": 187 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Jorge", + "last_name": "Dangelo", + "team": 22, + "section": 88, + "peg_number": 188 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Richard", + "last_name": "Broach", + "team": 22, + "section": 60, + "peg_number": 189 + } + }, + { + "model": "mainapp.member", + "pk": null, "fields": { "first_name": "William", - "last_name": "Randel", - "team": 10, - "peg_number": 97, - "section": "ZZZT" + "last_name": "Mcclellan", + "team": 22, + "section": 94, + "peg_number": 190 } }, { "model": "mainapp.member", - "pk": 99, + "pk": null, "fields": { - "first_name": "James", - "last_name": "Richardson", - "team": 10, - "peg_number": 98, - "section": "ZZZU" + "first_name": "Warren", + "last_name": "Camara", + "team": 23, + "section": 35, + "peg_number": 191 } }, { "model": "mainapp.member", - "pk": 100, + "pk": null, "fields": { - "first_name": "Bradley", - "last_name": "Suber", - "team": 10, - "peg_number": 99, - "section": "ZZZV" + "first_name": "Gabriela", + "last_name": "Davis", + "team": 23, + "section": 32, + "peg_number": 192 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Rebecca", + "last_name": "Foster", + "team": 23, + "section": 83, + "peg_number": 193 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Ann", + "last_name": "Parks", + "team": 24, + "section": 36, + "peg_number": 194 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Melinda", + "last_name": "Gardner", + "team": 24, + "section": 141, + "peg_number": 195 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Paula", + "last_name": "Flagge", + "team": 24, + "section": 138, + "peg_number": 196 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Delores", + "last_name": "Jenkins", + "team": 25, + "section": 68, + "peg_number": 197 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Amanda", + "last_name": "Zamora", + "team": 25, + "section": 45, + "peg_number": 198 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Grace", + "last_name": "Hill", + "team": 25, + "section": 144, + "peg_number": 199 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Ronnie", + "last_name": "Hornick", + "team": 26, + "section": 115, + "peg_number": 200 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Rebecca", + "last_name": "Lilly", + "team": 26, + "section": 65, + "peg_number": 201 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Gena", + "last_name": "Hernandez", + "team": 26, + "section": 74, + "peg_number": 202 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Anthony", + "last_name": "Mccauley", + "team": 27, + "section": 103, + "peg_number": 203 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Evelyn", + "last_name": "Woodman", + "team": 27, + "section": 59, + "peg_number": 204 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Julie", + "last_name": "Senecal", + "team": 27, + "section": 105, + "peg_number": 205 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Karen", + "last_name": "Smith", + "team": 27, + "section": 89, + "peg_number": 206 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Anna", + "last_name": "Ritz", + "team": 28, + "section": 80, + "peg_number": 207 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Chris", + "last_name": "Peachey", + "team": 28, + "section": 157, + "peg_number": 208 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Guadalupe", + "last_name": "Cannon", + "team": 28, + "section": 82, + "peg_number": 209 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Holly", + "last_name": "Solano", + "team": 29, + "section": 36, + "peg_number": 210 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Alice", + "last_name": "Prahl", + "team": 29, + "section": 12, + "peg_number": 211 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Robert", + "last_name": "Foster", + "team": 29, + "section": 147, + "peg_number": 212 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Rick", + "last_name": "Washington", + "team": 30, + "section": 57, + "peg_number": 213 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Frieda", + "last_name": "Hoover", + "team": 30, + "section": 80, + "peg_number": 214 + } + }, + { + "model": "mainapp.member", + "pk": null, + "fields": { + "first_name": "Clara", + "last_name": "Moore", + "team": 30, + "section": 33, + "peg_number": 215 } } ] \ No newline at end of file diff --git a/src/mainapp/fixtures/sections_fixture.json b/src/mainapp/fixtures/sections_fixture.json new file mode 100644 index 0000000..37199ed --- /dev/null +++ b/src/mainapp/fixtures/sections_fixture.json @@ -0,0 +1,3502 @@ +[ + { + "model": "mainapp.section", + "pk": 1, + "fields": { + "name": "A" + } + }, + { + "model": "mainapp.section", + "pk": 2, + "fields": { + "name": "B" + } + }, + { + "model": "mainapp.section", + "pk": 3, + "fields": { + "name": "C" + } + }, + { + "model": "mainapp.section", + "pk": 4, + "fields": { + "name": "D" + } + }, + { + "model": "mainapp.section", + "pk": 5, + "fields": { + "name": "E" + } + }, + { + "model": "mainapp.section", + "pk": 6, + "fields": { + "name": "F" + } + }, + { + "model": "mainapp.section", + "pk": 7, + "fields": { + "name": "G" + } + }, + { + "model": "mainapp.section", + "pk": 8, + "fields": { + "name": "H" + } + }, + { + "model": "mainapp.section", + "pk": 9, + "fields": { + "name": "I" + } + }, + { + "model": "mainapp.section", + "pk": 10, + "fields": { + "name": "J" + } + }, + { + "model": "mainapp.section", + "pk": 11, + "fields": { + "name": "K" + } + }, + { + "model": "mainapp.section", + "pk": 12, + "fields": { + "name": "L" + } + }, + { + "model": "mainapp.section", + "pk": 13, + "fields": { + "name": "M" + } + }, + { + "model": "mainapp.section", + "pk": 14, + "fields": { + "name": "N" + } + }, + { + "model": "mainapp.section", + "pk": 15, + "fields": { + "name": "O" + } + }, + { + "model": "mainapp.section", + "pk": 16, + "fields": { + "name": "P" + } + }, + { + "model": "mainapp.section", + "pk": 17, + "fields": { + "name": "Q" + } + }, + { + "model": "mainapp.section", + "pk": 18, + "fields": { + "name": "R" + } + }, + { + "model": "mainapp.section", + "pk": 19, + "fields": { + "name": "S" + } + }, + { + "model": "mainapp.section", + "pk": 20, + "fields": { + "name": "T" + } + }, + { + "model": "mainapp.section", + "pk": 21, + "fields": { + "name": "U" + } + }, + { + "model": "mainapp.section", + "pk": 22, + "fields": { + "name": "V" + } + }, + { + "model": "mainapp.section", + "pk": 23, + "fields": { + "name": "W" + } + }, + { + "model": "mainapp.section", + "pk": 24, + "fields": { + "name": "X" + } + }, + { + "model": "mainapp.section", + "pk": 25, + "fields": { + "name": "Y" + } + }, + { + "model": "mainapp.section", + "pk": 26, + "fields": { + "name": "Z" + } + }, + { + "model": "mainapp.section", + "pk": 27, + "fields": { + "name": "AA" + } + }, + { + "model": "mainapp.section", + "pk": 28, + "fields": { + "name": "AB" + } + }, + { + "model": "mainapp.section", + "pk": 29, + "fields": { + "name": "AC" + } + }, + { + "model": "mainapp.section", + "pk": 30, + "fields": { + "name": "AD" + } + }, + { + "model": "mainapp.section", + "pk": 31, + "fields": { + "name": "AE" + } + }, + { + "model": "mainapp.section", + "pk": 32, + "fields": { + "name": "AF" + } + }, + { + "model": "mainapp.section", + "pk": 33, + "fields": { + "name": "AG" + } + }, + { + "model": "mainapp.section", + "pk": 34, + "fields": { + "name": "AH" + } + }, + { + "model": "mainapp.section", + "pk": 35, + "fields": { + "name": "AI" + } + }, + { + "model": "mainapp.section", + "pk": 36, + "fields": { + "name": "AJ" + } + }, + { + "model": "mainapp.section", + "pk": 37, + "fields": { + "name": "AK" + } + }, + { + "model": "mainapp.section", + "pk": 38, + "fields": { + "name": "AL" + } + }, + { + "model": "mainapp.section", + "pk": 39, + "fields": { + "name": "AM" + } + }, + { + "model": "mainapp.section", + "pk": 40, + "fields": { + "name": "AN" + } + }, + { + "model": "mainapp.section", + "pk": 41, + "fields": { + "name": "AO" + } + }, + { + "model": "mainapp.section", + "pk": 42, + "fields": { + "name": "AP" + } + }, + { + "model": "mainapp.section", + "pk": 43, + "fields": { + "name": "AQ" + } + }, + { + "model": "mainapp.section", + "pk": 44, + "fields": { + "name": "AR" + } + }, + { + "model": "mainapp.section", + "pk": 45, + "fields": { + "name": "AS" + } + }, + { + "model": "mainapp.section", + "pk": 46, + "fields": { + "name": "AT" + } + }, + { + "model": "mainapp.section", + "pk": 47, + "fields": { + "name": "AU" + } + }, + { + "model": "mainapp.section", + "pk": 48, + "fields": { + "name": "AV" + } + }, + { + "model": "mainapp.section", + "pk": 49, + "fields": { + "name": "AW" + } + }, + { + "model": "mainapp.section", + "pk": 50, + "fields": { + "name": "AX" + } + }, + { + "model": "mainapp.section", + "pk": 51, + "fields": { + "name": "AY" + } + }, + { + "model": "mainapp.section", + "pk": 52, + "fields": { + "name": "AZ" + } + }, + { + "model": "mainapp.section", + "pk": 53, + "fields": { + "name": "BA" + } + }, + { + "model": "mainapp.section", + "pk": 54, + "fields": { + "name": "BB" + } + }, + { + "model": "mainapp.section", + "pk": 55, + "fields": { + "name": "BC" + } + }, + { + "model": "mainapp.section", + "pk": 56, + "fields": { + "name": "BD" + } + }, + { + "model": "mainapp.section", + "pk": 57, + "fields": { + "name": "BE" + } + }, + { + "model": "mainapp.section", + "pk": 58, + "fields": { + "name": "BF" + } + }, + { + "model": "mainapp.section", + "pk": 59, + "fields": { + "name": "BG" + } + }, + { + "model": "mainapp.section", + "pk": 60, + "fields": { + "name": "BH" + } + }, + { + "model": "mainapp.section", + "pk": 61, + "fields": { + "name": "BI" + } + }, + { + "model": "mainapp.section", + "pk": 62, + "fields": { + "name": "BJ" + } + }, + { + "model": "mainapp.section", + "pk": 63, + "fields": { + "name": "BK" + } + }, + { + "model": "mainapp.section", + "pk": 64, + "fields": { + "name": "BL" + } + }, + { + "model": "mainapp.section", + "pk": 65, + "fields": { + "name": "BM" + } + }, + { + "model": "mainapp.section", + "pk": 66, + "fields": { + "name": "BN" + } + }, + { + "model": "mainapp.section", + "pk": 67, + "fields": { + "name": "BO" + } + }, + { + "model": "mainapp.section", + "pk": 68, + "fields": { + "name": "BP" + } + }, + { + "model": "mainapp.section", + "pk": 69, + "fields": { + "name": "BQ" + } + }, + { + "model": "mainapp.section", + "pk": 70, + "fields": { + "name": "BR" + } + }, + { + "model": "mainapp.section", + "pk": 71, + "fields": { + "name": "BS" + } + }, + { + "model": "mainapp.section", + "pk": 72, + "fields": { + "name": "BT" + } + }, + { + "model": "mainapp.section", + "pk": 73, + "fields": { + "name": "BU" + } + }, + { + "model": "mainapp.section", + "pk": 74, + "fields": { + "name": "BV" + } + }, + { + "model": "mainapp.section", + "pk": 75, + "fields": { + "name": "BW" + } + }, + { + "model": "mainapp.section", + "pk": 76, + "fields": { + "name": "BX" + } + }, + { + "model": "mainapp.section", + "pk": 77, + "fields": { + "name": "BY" + } + }, + { + "model": "mainapp.section", + "pk": 78, + "fields": { + "name": "BZ" + } + }, + { + "model": "mainapp.section", + "pk": 79, + "fields": { + "name": "CA" + } + }, + { + "model": "mainapp.section", + "pk": 80, + "fields": { + "name": "CB" + } + }, + { + "model": "mainapp.section", + "pk": 81, + "fields": { + "name": "CC" + } + }, + { + "model": "mainapp.section", + "pk": 82, + "fields": { + "name": "CD" + } + }, + { + "model": "mainapp.section", + "pk": 83, + "fields": { + "name": "CE" + } + }, + { + "model": "mainapp.section", + "pk": 84, + "fields": { + "name": "CF" + } + }, + { + "model": "mainapp.section", + "pk": 85, + "fields": { + "name": "CG" + } + }, + { + "model": "mainapp.section", + "pk": 86, + "fields": { + "name": "CH" + } + }, + { + "model": "mainapp.section", + "pk": 87, + "fields": { + "name": "CI" + } + }, + { + "model": "mainapp.section", + "pk": 88, + "fields": { + "name": "CJ" + } + }, + { + "model": "mainapp.section", + "pk": 89, + "fields": { + "name": "CK" + } + }, + { + "model": "mainapp.section", + "pk": 90, + "fields": { + "name": "CL" + } + }, + { + "model": "mainapp.section", + "pk": 91, + "fields": { + "name": "CM" + } + }, + { + "model": "mainapp.section", + "pk": 92, + "fields": { + "name": "CN" + } + }, + { + "model": "mainapp.section", + "pk": 93, + "fields": { + "name": "CO" + } + }, + { + "model": "mainapp.section", + "pk": 94, + "fields": { + "name": "CP" + } + }, + { + "model": "mainapp.section", + "pk": 95, + "fields": { + "name": "CQ" + } + }, + { + "model": "mainapp.section", + "pk": 96, + "fields": { + "name": "CR" + } + }, + { + "model": "mainapp.section", + "pk": 97, + "fields": { + "name": "CS" + } + }, + { + "model": "mainapp.section", + "pk": 98, + "fields": { + "name": "CT" + } + }, + { + "model": "mainapp.section", + "pk": 99, + "fields": { + "name": "CU" + } + }, + { + "model": "mainapp.section", + "pk": 100, + "fields": { + "name": "CV" + } + }, + { + "model": "mainapp.section", + "pk": 101, + "fields": { + "name": "CW" + } + }, + { + "model": "mainapp.section", + "pk": 102, + "fields": { + "name": "CX" + } + }, + { + "model": "mainapp.section", + "pk": 103, + "fields": { + "name": "CY" + } + }, + { + "model": "mainapp.section", + "pk": 104, + "fields": { + "name": "CZ" + } + }, + { + "model": "mainapp.section", + "pk": 105, + "fields": { + "name": "DA" + } + }, + { + "model": "mainapp.section", + "pk": 106, + "fields": { + "name": "DB" + } + }, + { + "model": "mainapp.section", + "pk": 107, + "fields": { + "name": "DC" + } + }, + { + "model": "mainapp.section", + "pk": 108, + "fields": { + "name": "DD" + } + }, + { + "model": "mainapp.section", + "pk": 109, + "fields": { + "name": "DE" + } + }, + { + "model": "mainapp.section", + "pk": 110, + "fields": { + "name": "DF" + } + }, + { + "model": "mainapp.section", + "pk": 111, + "fields": { + "name": "DG" + } + }, + { + "model": "mainapp.section", + "pk": 112, + "fields": { + "name": "DH" + } + }, + { + "model": "mainapp.section", + "pk": 113, + "fields": { + "name": "DI" + } + }, + { + "model": "mainapp.section", + "pk": 114, + "fields": { + "name": "DJ" + } + }, + { + "model": "mainapp.section", + "pk": 115, + "fields": { + "name": "DK" + } + }, + { + "model": "mainapp.section", + "pk": 116, + "fields": { + "name": "DL" + } + }, + { + "model": "mainapp.section", + "pk": 117, + "fields": { + "name": "DM" + } + }, + { + "model": "mainapp.section", + "pk": 118, + "fields": { + "name": "DN" + } + }, + { + "model": "mainapp.section", + "pk": 119, + "fields": { + "name": "DO" + } + }, + { + "model": "mainapp.section", + "pk": 120, + "fields": { + "name": "DP" + } + }, + { + "model": "mainapp.section", + "pk": 121, + "fields": { + "name": "DQ" + } + }, + { + "model": "mainapp.section", + "pk": 122, + "fields": { + "name": "DR" + } + }, + { + "model": "mainapp.section", + "pk": 123, + "fields": { + "name": "DS" + } + }, + { + "model": "mainapp.section", + "pk": 124, + "fields": { + "name": "DT" + } + }, + { + "model": "mainapp.section", + "pk": 125, + "fields": { + "name": "DU" + } + }, + { + "model": "mainapp.section", + "pk": 126, + "fields": { + "name": "DV" + } + }, + { + "model": "mainapp.section", + "pk": 127, + "fields": { + "name": "DW" + } + }, + { + "model": "mainapp.section", + "pk": 128, + "fields": { + "name": "DX" + } + }, + { + "model": "mainapp.section", + "pk": 129, + "fields": { + "name": "DY" + } + }, + { + "model": "mainapp.section", + "pk": 130, + "fields": { + "name": "DZ" + } + }, + { + "model": "mainapp.section", + "pk": 131, + "fields": { + "name": "EA" + } + }, + { + "model": "mainapp.section", + "pk": 132, + "fields": { + "name": "EB" + } + }, + { + "model": "mainapp.section", + "pk": 133, + "fields": { + "name": "EC" + } + }, + { + "model": "mainapp.section", + "pk": 134, + "fields": { + "name": "ED" + } + }, + { + "model": "mainapp.section", + "pk": 135, + "fields": { + "name": "EE" + } + }, + { + "model": "mainapp.section", + "pk": 136, + "fields": { + "name": "EF" + } + }, + { + "model": "mainapp.section", + "pk": 137, + "fields": { + "name": "EG" + } + }, + { + "model": "mainapp.section", + "pk": 138, + "fields": { + "name": "EH" + } + }, + { + "model": "mainapp.section", + "pk": 139, + "fields": { + "name": "EI" + } + }, + { + "model": "mainapp.section", + "pk": 140, + "fields": { + "name": "EJ" + } + }, + { + "model": "mainapp.section", + "pk": 141, + "fields": { + "name": "EK" + } + }, + { + "model": "mainapp.section", + "pk": 142, + "fields": { + "name": "EL" + } + }, + { + "model": "mainapp.section", + "pk": 143, + "fields": { + "name": "EM" + } + }, + { + "model": "mainapp.section", + "pk": 144, + "fields": { + "name": "EN" + } + }, + { + "model": "mainapp.section", + "pk": 145, + "fields": { + "name": "EO" + } + }, + { + "model": "mainapp.section", + "pk": 146, + "fields": { + "name": "EP" + } + }, + { + "model": "mainapp.section", + "pk": 147, + "fields": { + "name": "EQ" + } + }, + { + "model": "mainapp.section", + "pk": 148, + "fields": { + "name": "ER" + } + }, + { + "model": "mainapp.section", + "pk": 149, + "fields": { + "name": "ES" + } + }, + { + "model": "mainapp.section", + "pk": 150, + "fields": { + "name": "ET" + } + }, + { + "model": "mainapp.section", + "pk": 151, + "fields": { + "name": "EU" + } + }, + { + "model": "mainapp.section", + "pk": 152, + "fields": { + "name": "EV" + } + }, + { + "model": "mainapp.section", + "pk": 153, + "fields": { + "name": "EW" + } + }, + { + "model": "mainapp.section", + "pk": 154, + "fields": { + "name": "EX" + } + }, + { + "model": "mainapp.section", + "pk": 155, + "fields": { + "name": "EY" + } + }, + { + "model": "mainapp.section", + "pk": 156, + "fields": { + "name": "EZ" + } + }, + { + "model": "mainapp.section", + "pk": 157, + "fields": { + "name": "FA" + } + }, + { + "model": "mainapp.section", + "pk": 158, + "fields": { + "name": "FB" + } + }, + { + "model": "mainapp.section", + "pk": 159, + "fields": { + "name": "FC" + } + }, + { + "model": "mainapp.section", + "pk": 160, + "fields": { + "name": "FD" + } + }, + { + "model": "mainapp.section", + "pk": 161, + "fields": { + "name": "FE" + } + }, + { + "model": "mainapp.section", + "pk": 162, + "fields": { + "name": "FF" + } + }, + { + "model": "mainapp.section", + "pk": 163, + "fields": { + "name": "FG" + } + }, + { + "model": "mainapp.section", + "pk": 164, + "fields": { + "name": "FH" + } + }, + { + "model": "mainapp.section", + "pk": 165, + "fields": { + "name": "FI" + } + }, + { + "model": "mainapp.section", + "pk": 166, + "fields": { + "name": "FJ" + } + }, + { + "model": "mainapp.section", + "pk": 167, + "fields": { + "name": "FK" + } + }, + { + "model": "mainapp.section", + "pk": 168, + "fields": { + "name": "FL" + } + }, + { + "model": "mainapp.section", + "pk": 169, + "fields": { + "name": "FM" + } + }, + { + "model": "mainapp.section", + "pk": 170, + "fields": { + "name": "FN" + } + }, + { + "model": "mainapp.section", + "pk": 171, + "fields": { + "name": "FO" + } + }, + { + "model": "mainapp.section", + "pk": 172, + "fields": { + "name": "FP" + } + }, + { + "model": "mainapp.section", + "pk": 173, + "fields": { + "name": "FQ" + } + }, + { + "model": "mainapp.section", + "pk": 174, + "fields": { + "name": "FR" + } + }, + { + "model": "mainapp.section", + "pk": 175, + "fields": { + "name": "FS" + } + }, + { + "model": "mainapp.section", + "pk": 176, + "fields": { + "name": "FT" + } + }, + { + "model": "mainapp.section", + "pk": 177, + "fields": { + "name": "FU" + } + }, + { + "model": "mainapp.section", + "pk": 178, + "fields": { + "name": "FV" + } + }, + { + "model": "mainapp.section", + "pk": 179, + "fields": { + "name": "FW" + } + }, + { + "model": "mainapp.section", + "pk": 180, + "fields": { + "name": "FX" + } + }, + { + "model": "mainapp.section", + "pk": 181, + "fields": { + "name": "FY" + } + }, + { + "model": "mainapp.section", + "pk": 182, + "fields": { + "name": "FZ" + } + }, + { + "model": "mainapp.section", + "pk": 183, + "fields": { + "name": "GA" + } + }, + { + "model": "mainapp.section", + "pk": 184, + "fields": { + "name": "GB" + } + }, + { + "model": "mainapp.section", + "pk": 185, + "fields": { + "name": "GC" + } + }, + { + "model": "mainapp.section", + "pk": 186, + "fields": { + "name": "GD" + } + }, + { + "model": "mainapp.section", + "pk": 187, + "fields": { + "name": "GE" + } + }, + { + "model": "mainapp.section", + "pk": 188, + "fields": { + "name": "GF" + } + }, + { + "model": "mainapp.section", + "pk": 189, + "fields": { + "name": "GG" + } + }, + { + "model": "mainapp.section", + "pk": 190, + "fields": { + "name": "GH" + } + }, + { + "model": "mainapp.section", + "pk": 191, + "fields": { + "name": "GI" + } + }, + { + "model": "mainapp.section", + "pk": 192, + "fields": { + "name": "GJ" + } + }, + { + "model": "mainapp.section", + "pk": 193, + "fields": { + "name": "GK" + } + }, + { + "model": "mainapp.section", + "pk": 194, + "fields": { + "name": "GL" + } + }, + { + "model": "mainapp.section", + "pk": 195, + "fields": { + "name": "GM" + } + }, + { + "model": "mainapp.section", + "pk": 196, + "fields": { + "name": "GN" + } + }, + { + "model": "mainapp.section", + "pk": 197, + "fields": { + "name": "GO" + } + }, + { + "model": "mainapp.section", + "pk": 198, + "fields": { + "name": "GP" + } + }, + { + "model": "mainapp.section", + "pk": 199, + "fields": { + "name": "GQ" + } + }, + { + "model": "mainapp.section", + "pk": 200, + "fields": { + "name": "GR" + } + }, + { + "model": "mainapp.section", + "pk": 201, + "fields": { + "name": "GS" + } + }, + { + "model": "mainapp.section", + "pk": 202, + "fields": { + "name": "GT" + } + }, + { + "model": "mainapp.section", + "pk": 203, + "fields": { + "name": "GU" + } + }, + { + "model": "mainapp.section", + "pk": 204, + "fields": { + "name": "GV" + } + }, + { + "model": "mainapp.section", + "pk": 205, + "fields": { + "name": "GW" + } + }, + { + "model": "mainapp.section", + "pk": 206, + "fields": { + "name": "GX" + } + }, + { + "model": "mainapp.section", + "pk": 207, + "fields": { + "name": "GY" + } + }, + { + "model": "mainapp.section", + "pk": 208, + "fields": { + "name": "GZ" + } + }, + { + "model": "mainapp.section", + "pk": 209, + "fields": { + "name": "HA" + } + }, + { + "model": "mainapp.section", + "pk": 210, + "fields": { + "name": "HB" + } + }, + { + "model": "mainapp.section", + "pk": 211, + "fields": { + "name": "HC" + } + }, + { + "model": "mainapp.section", + "pk": 212, + "fields": { + "name": "HD" + } + }, + { + "model": "mainapp.section", + "pk": 213, + "fields": { + "name": "HE" + } + }, + { + "model": "mainapp.section", + "pk": 214, + "fields": { + "name": "HF" + } + }, + { + "model": "mainapp.section", + "pk": 215, + "fields": { + "name": "HG" + } + }, + { + "model": "mainapp.section", + "pk": 216, + "fields": { + "name": "HH" + } + }, + { + "model": "mainapp.section", + "pk": 217, + "fields": { + "name": "HI" + } + }, + { + "model": "mainapp.section", + "pk": 218, + "fields": { + "name": "HJ" + } + }, + { + "model": "mainapp.section", + "pk": 219, + "fields": { + "name": "HK" + } + }, + { + "model": "mainapp.section", + "pk": 220, + "fields": { + "name": "HL" + } + }, + { + "model": "mainapp.section", + "pk": 221, + "fields": { + "name": "HM" + } + }, + { + "model": "mainapp.section", + "pk": 222, + "fields": { + "name": "HN" + } + }, + { + "model": "mainapp.section", + "pk": 223, + "fields": { + "name": "HO" + } + }, + { + "model": "mainapp.section", + "pk": 224, + "fields": { + "name": "HP" + } + }, + { + "model": "mainapp.section", + "pk": 225, + "fields": { + "name": "HQ" + } + }, + { + "model": "mainapp.section", + "pk": 226, + "fields": { + "name": "HR" + } + }, + { + "model": "mainapp.section", + "pk": 227, + "fields": { + "name": "HS" + } + }, + { + "model": "mainapp.section", + "pk": 228, + "fields": { + "name": "HT" + } + }, + { + "model": "mainapp.section", + "pk": 229, + "fields": { + "name": "HU" + } + }, + { + "model": "mainapp.section", + "pk": 230, + "fields": { + "name": "HV" + } + }, + { + "model": "mainapp.section", + "pk": 231, + "fields": { + "name": "HW" + } + }, + { + "model": "mainapp.section", + "pk": 232, + "fields": { + "name": "HX" + } + }, + { + "model": "mainapp.section", + "pk": 233, + "fields": { + "name": "HY" + } + }, + { + "model": "mainapp.section", + "pk": 234, + "fields": { + "name": "HZ" + } + }, + { + "model": "mainapp.section", + "pk": 235, + "fields": { + "name": "IA" + } + }, + { + "model": "mainapp.section", + "pk": 236, + "fields": { + "name": "IB" + } + }, + { + "model": "mainapp.section", + "pk": 237, + "fields": { + "name": "IC" + } + }, + { + "model": "mainapp.section", + "pk": 238, + "fields": { + "name": "ID" + } + }, + { + "model": "mainapp.section", + "pk": 239, + "fields": { + "name": "IE" + } + }, + { + "model": "mainapp.section", + "pk": 240, + "fields": { + "name": "IF" + } + }, + { + "model": "mainapp.section", + "pk": 241, + "fields": { + "name": "IG" + } + }, + { + "model": "mainapp.section", + "pk": 242, + "fields": { + "name": "IH" + } + }, + { + "model": "mainapp.section", + "pk": 243, + "fields": { + "name": "II" + } + }, + { + "model": "mainapp.section", + "pk": 244, + "fields": { + "name": "IJ" + } + }, + { + "model": "mainapp.section", + "pk": 245, + "fields": { + "name": "IK" + } + }, + { + "model": "mainapp.section", + "pk": 246, + "fields": { + "name": "IL" + } + }, + { + "model": "mainapp.section", + "pk": 247, + "fields": { + "name": "IM" + } + }, + { + "model": "mainapp.section", + "pk": 248, + "fields": { + "name": "IN" + } + }, + { + "model": "mainapp.section", + "pk": 249, + "fields": { + "name": "IO" + } + }, + { + "model": "mainapp.section", + "pk": 250, + "fields": { + "name": "IP" + } + }, + { + "model": "mainapp.section", + "pk": 251, + "fields": { + "name": "IQ" + } + }, + { + "model": "mainapp.section", + "pk": 252, + "fields": { + "name": "IR" + } + }, + { + "model": "mainapp.section", + "pk": 253, + "fields": { + "name": "IS" + } + }, + { + "model": "mainapp.section", + "pk": 254, + "fields": { + "name": "IT" + } + }, + { + "model": "mainapp.section", + "pk": 255, + "fields": { + "name": "IU" + } + }, + { + "model": "mainapp.section", + "pk": 256, + "fields": { + "name": "IV" + } + }, + { + "model": "mainapp.section", + "pk": 257, + "fields": { + "name": "IW" + } + }, + { + "model": "mainapp.section", + "pk": 258, + "fields": { + "name": "IX" + } + }, + { + "model": "mainapp.section", + "pk": 259, + "fields": { + "name": "IY" + } + }, + { + "model": "mainapp.section", + "pk": 260, + "fields": { + "name": "IZ" + } + }, + { + "model": "mainapp.section", + "pk": 261, + "fields": { + "name": "JA" + } + }, + { + "model": "mainapp.section", + "pk": 262, + "fields": { + "name": "JB" + } + }, + { + "model": "mainapp.section", + "pk": 263, + "fields": { + "name": "JC" + } + }, + { + "model": "mainapp.section", + "pk": 264, + "fields": { + "name": "JD" + } + }, + { + "model": "mainapp.section", + "pk": 265, + "fields": { + "name": "JE" + } + }, + { + "model": "mainapp.section", + "pk": 266, + "fields": { + "name": "JF" + } + }, + { + "model": "mainapp.section", + "pk": 267, + "fields": { + "name": "JG" + } + }, + { + "model": "mainapp.section", + "pk": 268, + "fields": { + "name": "JH" + } + }, + { + "model": "mainapp.section", + "pk": 269, + "fields": { + "name": "JI" + } + }, + { + "model": "mainapp.section", + "pk": 270, + "fields": { + "name": "JJ" + } + }, + { + "model": "mainapp.section", + "pk": 271, + "fields": { + "name": "JK" + } + }, + { + "model": "mainapp.section", + "pk": 272, + "fields": { + "name": "JL" + } + }, + { + "model": "mainapp.section", + "pk": 273, + "fields": { + "name": "JM" + } + }, + { + "model": "mainapp.section", + "pk": 274, + "fields": { + "name": "JN" + } + }, + { + "model": "mainapp.section", + "pk": 275, + "fields": { + "name": "JO" + } + }, + { + "model": "mainapp.section", + "pk": 276, + "fields": { + "name": "JP" + } + }, + { + "model": "mainapp.section", + "pk": 277, + "fields": { + "name": "JQ" + } + }, + { + "model": "mainapp.section", + "pk": 278, + "fields": { + "name": "JR" + } + }, + { + "model": "mainapp.section", + "pk": 279, + "fields": { + "name": "JS" + } + }, + { + "model": "mainapp.section", + "pk": 280, + "fields": { + "name": "JT" + } + }, + { + "model": "mainapp.section", + "pk": 281, + "fields": { + "name": "JU" + } + }, + { + "model": "mainapp.section", + "pk": 282, + "fields": { + "name": "JV" + } + }, + { + "model": "mainapp.section", + "pk": 283, + "fields": { + "name": "JW" + } + }, + { + "model": "mainapp.section", + "pk": 284, + "fields": { + "name": "JX" + } + }, + { + "model": "mainapp.section", + "pk": 285, + "fields": { + "name": "JY" + } + }, + { + "model": "mainapp.section", + "pk": 286, + "fields": { + "name": "JZ" + } + }, + { + "model": "mainapp.section", + "pk": 287, + "fields": { + "name": "KA" + } + }, + { + "model": "mainapp.section", + "pk": 288, + "fields": { + "name": "KB" + } + }, + { + "model": "mainapp.section", + "pk": 289, + "fields": { + "name": "KC" + } + }, + { + "model": "mainapp.section", + "pk": 290, + "fields": { + "name": "KD" + } + }, + { + "model": "mainapp.section", + "pk": 291, + "fields": { + "name": "KE" + } + }, + { + "model": "mainapp.section", + "pk": 292, + "fields": { + "name": "KF" + } + }, + { + "model": "mainapp.section", + "pk": 293, + "fields": { + "name": "KG" + } + }, + { + "model": "mainapp.section", + "pk": 294, + "fields": { + "name": "KH" + } + }, + { + "model": "mainapp.section", + "pk": 295, + "fields": { + "name": "KI" + } + }, + { + "model": "mainapp.section", + "pk": 296, + "fields": { + "name": "KJ" + } + }, + { + "model": "mainapp.section", + "pk": 297, + "fields": { + "name": "KK" + } + }, + { + "model": "mainapp.section", + "pk": 298, + "fields": { + "name": "KL" + } + }, + { + "model": "mainapp.section", + "pk": 299, + "fields": { + "name": "KM" + } + }, + { + "model": "mainapp.section", + "pk": 300, + "fields": { + "name": "KN" + } + }, + { + "model": "mainapp.section", + "pk": 301, + "fields": { + "name": "KO" + } + }, + { + "model": "mainapp.section", + "pk": 302, + "fields": { + "name": "KP" + } + }, + { + "model": "mainapp.section", + "pk": 303, + "fields": { + "name": "KQ" + } + }, + { + "model": "mainapp.section", + "pk": 304, + "fields": { + "name": "KR" + } + }, + { + "model": "mainapp.section", + "pk": 305, + "fields": { + "name": "KS" + } + }, + { + "model": "mainapp.section", + "pk": 306, + "fields": { + "name": "KT" + } + }, + { + "model": "mainapp.section", + "pk": 307, + "fields": { + "name": "KU" + } + }, + { + "model": "mainapp.section", + "pk": 308, + "fields": { + "name": "KV" + } + }, + { + "model": "mainapp.section", + "pk": 309, + "fields": { + "name": "KW" + } + }, + { + "model": "mainapp.section", + "pk": 310, + "fields": { + "name": "KX" + } + }, + { + "model": "mainapp.section", + "pk": 311, + "fields": { + "name": "KY" + } + }, + { + "model": "mainapp.section", + "pk": 312, + "fields": { + "name": "KZ" + } + }, + { + "model": "mainapp.section", + "pk": 313, + "fields": { + "name": "LA" + } + }, + { + "model": "mainapp.section", + "pk": 314, + "fields": { + "name": "LB" + } + }, + { + "model": "mainapp.section", + "pk": 315, + "fields": { + "name": "LC" + } + }, + { + "model": "mainapp.section", + "pk": 316, + "fields": { + "name": "LD" + } + }, + { + "model": "mainapp.section", + "pk": 317, + "fields": { + "name": "LE" + } + }, + { + "model": "mainapp.section", + "pk": 318, + "fields": { + "name": "LF" + } + }, + { + "model": "mainapp.section", + "pk": 319, + "fields": { + "name": "LG" + } + }, + { + "model": "mainapp.section", + "pk": 320, + "fields": { + "name": "LH" + } + }, + { + "model": "mainapp.section", + "pk": 321, + "fields": { + "name": "LI" + } + }, + { + "model": "mainapp.section", + "pk": 322, + "fields": { + "name": "LJ" + } + }, + { + "model": "mainapp.section", + "pk": 323, + "fields": { + "name": "LK" + } + }, + { + "model": "mainapp.section", + "pk": 324, + "fields": { + "name": "LL" + } + }, + { + "model": "mainapp.section", + "pk": 325, + "fields": { + "name": "LM" + } + }, + { + "model": "mainapp.section", + "pk": 326, + "fields": { + "name": "LN" + } + }, + { + "model": "mainapp.section", + "pk": 327, + "fields": { + "name": "LO" + } + }, + { + "model": "mainapp.section", + "pk": 328, + "fields": { + "name": "LP" + } + }, + { + "model": "mainapp.section", + "pk": 329, + "fields": { + "name": "LQ" + } + }, + { + "model": "mainapp.section", + "pk": 330, + "fields": { + "name": "LR" + } + }, + { + "model": "mainapp.section", + "pk": 331, + "fields": { + "name": "LS" + } + }, + { + "model": "mainapp.section", + "pk": 332, + "fields": { + "name": "LT" + } + }, + { + "model": "mainapp.section", + "pk": 333, + "fields": { + "name": "LU" + } + }, + { + "model": "mainapp.section", + "pk": 334, + "fields": { + "name": "LV" + } + }, + { + "model": "mainapp.section", + "pk": 335, + "fields": { + "name": "LW" + } + }, + { + "model": "mainapp.section", + "pk": 336, + "fields": { + "name": "LX" + } + }, + { + "model": "mainapp.section", + "pk": 337, + "fields": { + "name": "LY" + } + }, + { + "model": "mainapp.section", + "pk": 338, + "fields": { + "name": "LZ" + } + }, + { + "model": "mainapp.section", + "pk": 339, + "fields": { + "name": "MA" + } + }, + { + "model": "mainapp.section", + "pk": 340, + "fields": { + "name": "MB" + } + }, + { + "model": "mainapp.section", + "pk": 341, + "fields": { + "name": "MC" + } + }, + { + "model": "mainapp.section", + "pk": 342, + "fields": { + "name": "MD" + } + }, + { + "model": "mainapp.section", + "pk": 343, + "fields": { + "name": "ME" + } + }, + { + "model": "mainapp.section", + "pk": 344, + "fields": { + "name": "MF" + } + }, + { + "model": "mainapp.section", + "pk": 345, + "fields": { + "name": "MG" + } + }, + { + "model": "mainapp.section", + "pk": 346, + "fields": { + "name": "MH" + } + }, + { + "model": "mainapp.section", + "pk": 347, + "fields": { + "name": "MI" + } + }, + { + "model": "mainapp.section", + "pk": 348, + "fields": { + "name": "MJ" + } + }, + { + "model": "mainapp.section", + "pk": 349, + "fields": { + "name": "MK" + } + }, + { + "model": "mainapp.section", + "pk": 350, + "fields": { + "name": "ML" + } + }, + { + "model": "mainapp.section", + "pk": 351, + "fields": { + "name": "MM" + } + }, + { + "model": "mainapp.section", + "pk": 352, + "fields": { + "name": "MN" + } + }, + { + "model": "mainapp.section", + "pk": 353, + "fields": { + "name": "MO" + } + }, + { + "model": "mainapp.section", + "pk": 354, + "fields": { + "name": "MP" + } + }, + { + "model": "mainapp.section", + "pk": 355, + "fields": { + "name": "MQ" + } + }, + { + "model": "mainapp.section", + "pk": 356, + "fields": { + "name": "MR" + } + }, + { + "model": "mainapp.section", + "pk": 357, + "fields": { + "name": "MS" + } + }, + { + "model": "mainapp.section", + "pk": 358, + "fields": { + "name": "MT" + } + }, + { + "model": "mainapp.section", + "pk": 359, + "fields": { + "name": "MU" + } + }, + { + "model": "mainapp.section", + "pk": 360, + "fields": { + "name": "MV" + } + }, + { + "model": "mainapp.section", + "pk": 361, + "fields": { + "name": "MW" + } + }, + { + "model": "mainapp.section", + "pk": 362, + "fields": { + "name": "MX" + } + }, + { + "model": "mainapp.section", + "pk": 363, + "fields": { + "name": "MY" + } + }, + { + "model": "mainapp.section", + "pk": 364, + "fields": { + "name": "MZ" + } + }, + { + "model": "mainapp.section", + "pk": 365, + "fields": { + "name": "NA" + } + }, + { + "model": "mainapp.section", + "pk": 366, + "fields": { + "name": "NB" + } + }, + { + "model": "mainapp.section", + "pk": 367, + "fields": { + "name": "NC" + } + }, + { + "model": "mainapp.section", + "pk": 368, + "fields": { + "name": "ND" + } + }, + { + "model": "mainapp.section", + "pk": 369, + "fields": { + "name": "NE" + } + }, + { + "model": "mainapp.section", + "pk": 370, + "fields": { + "name": "NF" + } + }, + { + "model": "mainapp.section", + "pk": 371, + "fields": { + "name": "NG" + } + }, + { + "model": "mainapp.section", + "pk": 372, + "fields": { + "name": "NH" + } + }, + { + "model": "mainapp.section", + "pk": 373, + "fields": { + "name": "NI" + } + }, + { + "model": "mainapp.section", + "pk": 374, + "fields": { + "name": "NJ" + } + }, + { + "model": "mainapp.section", + "pk": 375, + "fields": { + "name": "NK" + } + }, + { + "model": "mainapp.section", + "pk": 376, + "fields": { + "name": "NL" + } + }, + { + "model": "mainapp.section", + "pk": 377, + "fields": { + "name": "NM" + } + }, + { + "model": "mainapp.section", + "pk": 378, + "fields": { + "name": "NN" + } + }, + { + "model": "mainapp.section", + "pk": 379, + "fields": { + "name": "NO" + } + }, + { + "model": "mainapp.section", + "pk": 380, + "fields": { + "name": "NP" + } + }, + { + "model": "mainapp.section", + "pk": 381, + "fields": { + "name": "NQ" + } + }, + { + "model": "mainapp.section", + "pk": 382, + "fields": { + "name": "NR" + } + }, + { + "model": "mainapp.section", + "pk": 383, + "fields": { + "name": "NS" + } + }, + { + "model": "mainapp.section", + "pk": 384, + "fields": { + "name": "NT" + } + }, + { + "model": "mainapp.section", + "pk": 385, + "fields": { + "name": "NU" + } + }, + { + "model": "mainapp.section", + "pk": 386, + "fields": { + "name": "NV" + } + }, + { + "model": "mainapp.section", + "pk": 387, + "fields": { + "name": "NW" + } + }, + { + "model": "mainapp.section", + "pk": 388, + "fields": { + "name": "NX" + } + }, + { + "model": "mainapp.section", + "pk": 389, + "fields": { + "name": "NY" + } + }, + { + "model": "mainapp.section", + "pk": 390, + "fields": { + "name": "NZ" + } + }, + { + "model": "mainapp.section", + "pk": 391, + "fields": { + "name": "OA" + } + }, + { + "model": "mainapp.section", + "pk": 392, + "fields": { + "name": "OB" + } + }, + { + "model": "mainapp.section", + "pk": 393, + "fields": { + "name": "OC" + } + }, + { + "model": "mainapp.section", + "pk": 394, + "fields": { + "name": "OD" + } + }, + { + "model": "mainapp.section", + "pk": 395, + "fields": { + "name": "OE" + } + }, + { + "model": "mainapp.section", + "pk": 396, + "fields": { + "name": "OF" + } + }, + { + "model": "mainapp.section", + "pk": 397, + "fields": { + "name": "OG" + } + }, + { + "model": "mainapp.section", + "pk": 398, + "fields": { + "name": "OH" + } + }, + { + "model": "mainapp.section", + "pk": 399, + "fields": { + "name": "OI" + } + }, + { + "model": "mainapp.section", + "pk": 400, + "fields": { + "name": "OJ" + } + }, + { + "model": "mainapp.section", + "pk": 401, + "fields": { + "name": "OK" + } + }, + { + "model": "mainapp.section", + "pk": 402, + "fields": { + "name": "OL" + } + }, + { + "model": "mainapp.section", + "pk": 403, + "fields": { + "name": "OM" + } + }, + { + "model": "mainapp.section", + "pk": 404, + "fields": { + "name": "ON" + } + }, + { + "model": "mainapp.section", + "pk": 405, + "fields": { + "name": "OO" + } + }, + { + "model": "mainapp.section", + "pk": 406, + "fields": { + "name": "OP" + } + }, + { + "model": "mainapp.section", + "pk": 407, + "fields": { + "name": "OQ" + } + }, + { + "model": "mainapp.section", + "pk": 408, + "fields": { + "name": "OR" + } + }, + { + "model": "mainapp.section", + "pk": 409, + "fields": { + "name": "OS" + } + }, + { + "model": "mainapp.section", + "pk": 410, + "fields": { + "name": "OT" + } + }, + { + "model": "mainapp.section", + "pk": 411, + "fields": { + "name": "OU" + } + }, + { + "model": "mainapp.section", + "pk": 412, + "fields": { + "name": "OV" + } + }, + { + "model": "mainapp.section", + "pk": 413, + "fields": { + "name": "OW" + } + }, + { + "model": "mainapp.section", + "pk": 414, + "fields": { + "name": "OX" + } + }, + { + "model": "mainapp.section", + "pk": 415, + "fields": { + "name": "OY" + } + }, + { + "model": "mainapp.section", + "pk": 416, + "fields": { + "name": "OZ" + } + }, + { + "model": "mainapp.section", + "pk": 417, + "fields": { + "name": "PA" + } + }, + { + "model": "mainapp.section", + "pk": 418, + "fields": { + "name": "PB" + } + }, + { + "model": "mainapp.section", + "pk": 419, + "fields": { + "name": "PC" + } + }, + { + "model": "mainapp.section", + "pk": 420, + "fields": { + "name": "PD" + } + }, + { + "model": "mainapp.section", + "pk": 421, + "fields": { + "name": "PE" + } + }, + { + "model": "mainapp.section", + "pk": 422, + "fields": { + "name": "PF" + } + }, + { + "model": "mainapp.section", + "pk": 423, + "fields": { + "name": "PG" + } + }, + { + "model": "mainapp.section", + "pk": 424, + "fields": { + "name": "PH" + } + }, + { + "model": "mainapp.section", + "pk": 425, + "fields": { + "name": "PI" + } + }, + { + "model": "mainapp.section", + "pk": 426, + "fields": { + "name": "PJ" + } + }, + { + "model": "mainapp.section", + "pk": 427, + "fields": { + "name": "PK" + } + }, + { + "model": "mainapp.section", + "pk": 428, + "fields": { + "name": "PL" + } + }, + { + "model": "mainapp.section", + "pk": 429, + "fields": { + "name": "PM" + } + }, + { + "model": "mainapp.section", + "pk": 430, + "fields": { + "name": "PN" + } + }, + { + "model": "mainapp.section", + "pk": 431, + "fields": { + "name": "PO" + } + }, + { + "model": "mainapp.section", + "pk": 432, + "fields": { + "name": "PP" + } + }, + { + "model": "mainapp.section", + "pk": 433, + "fields": { + "name": "PQ" + } + }, + { + "model": "mainapp.section", + "pk": 434, + "fields": { + "name": "PR" + } + }, + { + "model": "mainapp.section", + "pk": 435, + "fields": { + "name": "PS" + } + }, + { + "model": "mainapp.section", + "pk": 436, + "fields": { + "name": "PT" + } + }, + { + "model": "mainapp.section", + "pk": 437, + "fields": { + "name": "PU" + } + }, + { + "model": "mainapp.section", + "pk": 438, + "fields": { + "name": "PV" + } + }, + { + "model": "mainapp.section", + "pk": 439, + "fields": { + "name": "PW" + } + }, + { + "model": "mainapp.section", + "pk": 440, + "fields": { + "name": "PX" + } + }, + { + "model": "mainapp.section", + "pk": 441, + "fields": { + "name": "PY" + } + }, + { + "model": "mainapp.section", + "pk": 442, + "fields": { + "name": "PZ" + } + }, + { + "model": "mainapp.section", + "pk": 443, + "fields": { + "name": "QA" + } + }, + { + "model": "mainapp.section", + "pk": 444, + "fields": { + "name": "QB" + } + }, + { + "model": "mainapp.section", + "pk": 445, + "fields": { + "name": "QC" + } + }, + { + "model": "mainapp.section", + "pk": 446, + "fields": { + "name": "QD" + } + }, + { + "model": "mainapp.section", + "pk": 447, + "fields": { + "name": "QE" + } + }, + { + "model": "mainapp.section", + "pk": 448, + "fields": { + "name": "QF" + } + }, + { + "model": "mainapp.section", + "pk": 449, + "fields": { + "name": "QG" + } + }, + { + "model": "mainapp.section", + "pk": 450, + "fields": { + "name": "QH" + } + }, + { + "model": "mainapp.section", + "pk": 451, + "fields": { + "name": "QI" + } + }, + { + "model": "mainapp.section", + "pk": 452, + "fields": { + "name": "QJ" + } + }, + { + "model": "mainapp.section", + "pk": 453, + "fields": { + "name": "QK" + } + }, + { + "model": "mainapp.section", + "pk": 454, + "fields": { + "name": "QL" + } + }, + { + "model": "mainapp.section", + "pk": 455, + "fields": { + "name": "QM" + } + }, + { + "model": "mainapp.section", + "pk": 456, + "fields": { + "name": "QN" + } + }, + { + "model": "mainapp.section", + "pk": 457, + "fields": { + "name": "QO" + } + }, + { + "model": "mainapp.section", + "pk": 458, + "fields": { + "name": "QP" + } + }, + { + "model": "mainapp.section", + "pk": 459, + "fields": { + "name": "QQ" + } + }, + { + "model": "mainapp.section", + "pk": 460, + "fields": { + "name": "QR" + } + }, + { + "model": "mainapp.section", + "pk": 461, + "fields": { + "name": "QS" + } + }, + { + "model": "mainapp.section", + "pk": 462, + "fields": { + "name": "QT" + } + }, + { + "model": "mainapp.section", + "pk": 463, + "fields": { + "name": "QU" + } + }, + { + "model": "mainapp.section", + "pk": 464, + "fields": { + "name": "QV" + } + }, + { + "model": "mainapp.section", + "pk": 465, + "fields": { + "name": "QW" + } + }, + { + "model": "mainapp.section", + "pk": 466, + "fields": { + "name": "QX" + } + }, + { + "model": "mainapp.section", + "pk": 467, + "fields": { + "name": "QY" + } + }, + { + "model": "mainapp.section", + "pk": 468, + "fields": { + "name": "QZ" + } + }, + { + "model": "mainapp.section", + "pk": 469, + "fields": { + "name": "RA" + } + }, + { + "model": "mainapp.section", + "pk": 470, + "fields": { + "name": "RB" + } + }, + { + "model": "mainapp.section", + "pk": 471, + "fields": { + "name": "RC" + } + }, + { + "model": "mainapp.section", + "pk": 472, + "fields": { + "name": "RD" + } + }, + { + "model": "mainapp.section", + "pk": 473, + "fields": { + "name": "RE" + } + }, + { + "model": "mainapp.section", + "pk": 474, + "fields": { + "name": "RF" + } + }, + { + "model": "mainapp.section", + "pk": 475, + "fields": { + "name": "RG" + } + }, + { + "model": "mainapp.section", + "pk": 476, + "fields": { + "name": "RH" + } + }, + { + "model": "mainapp.section", + "pk": 477, + "fields": { + "name": "RI" + } + }, + { + "model": "mainapp.section", + "pk": 478, + "fields": { + "name": "RJ" + } + }, + { + "model": "mainapp.section", + "pk": 479, + "fields": { + "name": "RK" + } + }, + { + "model": "mainapp.section", + "pk": 480, + "fields": { + "name": "RL" + } + }, + { + "model": "mainapp.section", + "pk": 481, + "fields": { + "name": "RM" + } + }, + { + "model": "mainapp.section", + "pk": 482, + "fields": { + "name": "RN" + } + }, + { + "model": "mainapp.section", + "pk": 483, + "fields": { + "name": "RO" + } + }, + { + "model": "mainapp.section", + "pk": 484, + "fields": { + "name": "RP" + } + }, + { + "model": "mainapp.section", + "pk": 485, + "fields": { + "name": "RQ" + } + }, + { + "model": "mainapp.section", + "pk": 486, + "fields": { + "name": "RR" + } + }, + { + "model": "mainapp.section", + "pk": 487, + "fields": { + "name": "RS" + } + }, + { + "model": "mainapp.section", + "pk": 488, + "fields": { + "name": "RT" + } + }, + { + "model": "mainapp.section", + "pk": 489, + "fields": { + "name": "RU" + } + }, + { + "model": "mainapp.section", + "pk": 490, + "fields": { + "name": "RV" + } + }, + { + "model": "mainapp.section", + "pk": 491, + "fields": { + "name": "RW" + } + }, + { + "model": "mainapp.section", + "pk": 492, + "fields": { + "name": "RX" + } + }, + { + "model": "mainapp.section", + "pk": 493, + "fields": { + "name": "RY" + } + }, + { + "model": "mainapp.section", + "pk": 494, + "fields": { + "name": "RZ" + } + }, + { + "model": "mainapp.section", + "pk": 495, + "fields": { + "name": "SA" + } + }, + { + "model": "mainapp.section", + "pk": 496, + "fields": { + "name": "SB" + } + }, + { + "model": "mainapp.section", + "pk": 497, + "fields": { + "name": "SC" + } + }, + { + "model": "mainapp.section", + "pk": 498, + "fields": { + "name": "SD" + } + }, + { + "model": "mainapp.section", + "pk": 499, + "fields": { + "name": "SE" + } + }, + { + "model": "mainapp.section", + "pk": 500, + "fields": { + "name": "SF" + } + } +] \ No newline at end of file diff --git a/src/mainapp/fixtures/teams_fixture.json b/src/mainapp/fixtures/teams_fixture.json index 1c3ecb6..337ffc4 100644 --- a/src/mainapp/fixtures/teams_fixture.json +++ b/src/mainapp/fixtures/teams_fixture.json @@ -2,71 +2,151 @@ { "model": "mainapp.team", "pk": 1, - "fields": { - "section_letter": "M" - } + "fields": {} }, { "model": "mainapp.team", "pk": 2, - "fields": { - "section_letter": "K" - } + "fields": {} }, { "model": "mainapp.team", "pk": 3, - "fields": { - "section_letter": "Q" - } + "fields": {} }, { "model": "mainapp.team", "pk": 4, - "fields": { - "section_letter": "V" - } + "fields": {} }, { "model": "mainapp.team", "pk": 5, - "fields": { - "section_letter": "U" - } + "fields": {} }, { "model": "mainapp.team", "pk": 6, - "fields": { - "section_letter": "H" - } + "fields": {} }, { "model": "mainapp.team", "pk": 7, - "fields": { - "section_letter": "A" - } + "fields": {} }, { "model": "mainapp.team", "pk": 8, - "fields": { - "section_letter": "D" - } + "fields": {} }, { "model": "mainapp.team", "pk": 9, - "fields": { - "section_letter": "P" - } + "fields": {} }, { "model": "mainapp.team", "pk": 10, - "fields": { - "section_letter": "G" - } + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 11, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 12, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 13, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 14, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 15, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 16, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 17, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 18, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 19, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 20, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 21, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 22, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 23, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 24, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 25, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 26, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 27, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 28, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 29, + "fields": {} + }, + { + "model": "mainapp.team", + "pk": 30, + "fields": {} } ] \ No newline at end of file diff --git a/src/mainapp/management/commands/create_members_fixture.py b/src/mainapp/management/commands/create_members_fixture.py index 9365430..27ab6bb 100644 --- a/src/mainapp/management/commands/create_members_fixture.py +++ b/src/mainapp/management/commands/create_members_fixture.py @@ -1,84 +1,117 @@ import names import json +import random from typing import Optional, List, Set from string import ascii_uppercase from django.core.management.base import BaseCommand +from django.db.models import Q, Count -from mainapp.models import Member, Team, SectionValidator +from mainapp.models import Member, Team, SectionValidator, Section # TODO: refactor this file like create_teams_fixtures.py -# SECTION_LETTERS = ascii_uppercase - - -# def get_next_available_section(member: Member, section_validator: SectionValidator) -> Optional[str]: -# """Returns the next available section for a member.""" -# member_sections = member.sections.all().values_list('name', flat=True) -# used_sections = set(member_sections) - -# if not member_sections: -# return "A" - -# used_sections = sorted(used_sections) - -# last_section = member_sections[-1] -# last_section_index = SECTION_LETTERS.index(last_section) - -# for i in range(last_section_index + 1, len(SECTION_LETTERS)): -# section = SECTION_LETTERS[i] -# if section_validator.is_valid_section(section) and section not in used_sections: -# return section - -# for i in range(last_section_index - 1, -1, -1): -# section = SECTION_LETTERS[i] -# if section_validator.is_valid_section(section) and section not in used_sections: -# return section - -# return None - - - class Command(BaseCommand): help = "Creates a fixture with randomly generated Member objects" def add_arguments(self, parser): - parser.add_argument("num_members", type=int) + parser.add_argument("members_per_team", type=int) def handle(self, *args, **options): - num_members = options["num_members"] + members_per_team = options["members_per_team"] + teams = Team.objects.all() + if not teams: - print("No teams found. Please create some teams first.") - return + raise Exception("no teams") - members = [] + new_members = [] for team in teams: - for _ in range(num_members): - first_name = names.get_first_name() - last_name = names.get_last_name() - member = Member.objects.create(first_name=first_name, last_name=last_name, team=team) - members.append(member) - self.stdout.write(self.style.SUCCESS(f"Created {num_members} members.")) + i = members_per_team + while i > 0: - # create a members fixture file - members_fixture = [] - for member in members: - member_fixture = { + team_member_ids = team.members.values_list('id', flat=True) + + print(team_member_ids) + + section = random.choice([ + sec for sec in + Section.objects.exclude(members__id__in=team_member_ids) + ]) + + member = Member.objects.create( + first_name=names.get_first_name(), + last_name=names.get_last_name(), + section=section, + team=team + ) + + if not section.is_joinable(member): + member.delete() + i += 1 + continue + + new_members.append(member) + print(member) + + i -= 1 + + fixtures = [] + for member in new_members: + member.delete() + + fixture = { "model": "mainapp.member", "pk": member.pk, "fields": { "first_name": member.first_name, "last_name": member.last_name, "team": member.team_id, - "peg_number": member.peg_number, + "section": member.section_id, + "peg_number": member.peg_number } } - members_fixture.append(member_fixture) + fixtures.append(fixture) with open("src/mainapp/fixtures/members_fixture.json", "w") as f: - f.write(json.dumps(members_fixture, indent=2)) + f.write(json.dumps(fixtures, indent=2)) self.stdout.write(self.style.SUCCESS("Created members_fixture.json.")) + + # def handle(self, *args, **options): + # num_members = options["num_members"] + # teams = Team.objects.all() + # if not teams: + # print("No teams found. Please create some teams first.") + # return + + # members = [] + # for team in teams: + # for _ in range(num_members): + # first_name = names.get_first_name() + # last_name = names.get_last_name() + # member = Member.objects.create(first_name=first_name, last_name=last_name, team=team) + # members.append(member) + + # self.stdout.write(self.style.SUCCESS(f"Created {num_members} members.")) + + # # create a members fixture file + # members_fixture = [] + # for member in members: + # member_fixture = { + # "model": "mainapp.member", + # "pk": member.pk, + # "fields": { + # "first_name": member.first_name, + # "last_name": member.last_name, + # "team": member.team_id, + # "peg_number": member.peg_number, + # } + # } + # members_fixture.append(member_fixture) + + # with open("src/mainapp/fixtures/members_fixture.json", "w") as f: + # f.write(json.dumps(members_fixture, indent=2)) + # self.stdout.write(self.style.SUCCESS("Created members_fixture.json.")) diff --git a/src/mainapp/management/commands/create_sections_fixture.py b/src/mainapp/management/commands/create_sections_fixture.py new file mode 100644 index 0000000..ed1baaf --- /dev/null +++ b/src/mainapp/management/commands/create_sections_fixture.py @@ -0,0 +1,79 @@ +"""Command to create test data fixture for sections.""" + +import json +from string import ascii_uppercase + +from django.core.management.base import BaseCommand + +from mainapp.models import Section, SectionValidator + + +def name_sort_key(name): + if len(name) == 1: + return (0, name) + else: + return (1, name[:-1], name[-1]) + + +class Command(BaseCommand): + help = "Creates a fixture file for Team objects" + + def add_arguments(self, parser): + parser.add_argument("amount_of_sections", type=int, help="Number of sections to create") + + def handle(self, *args, **options): + amount_of_sections = options["amount_of_sections"] + + used_names = set() + last_name = "" + + for i in range(amount_of_sections): + add_character = last_name.endswith("Z") + if add_character: + last_name = "" + + new_name = last_name if add_character else "" + if not new_name.endswith("Z"): + new_name = new_name[:-1] if len(new_name) > 1 else new_name + + try: + new_name += ascii_uppercase[i] + except IndexError: + quotient, remainder = divmod(i, 26) + new_name += ascii_uppercase[quotient - 1] + ascii_uppercase[remainder] + + while new_name in used_names: + if new_name[-1] == "Z": + idx = len(new_name) - 2 + while idx >= 0 and new_name[idx] == "Z": + idx -= 1 + if idx < 0: + new_name = "A" * (len(new_name) + 1) + else: + new_name = new_name[:idx] + chr(ord(new_name[idx]) + 1) + "A" * (len(new_name) - idx - 1) + else: + new_name = new_name[:-1] + chr(ord(new_name[-1]) + 1) + + used_names.add(new_name) + last_name = new_name + + names = sorted([name for name in used_names], key=name_sort_key) + + print([name for name in names]) + sections = [Section(name=name) for name in names] + Section.objects.bulk_create(sections) + + fixture = [{ + "model": "mainapp.section", + "pk": section.pk, + "fields": { + "name": section.name + } + } for section in sections] + + for section in sections: + section.delete() + + with open("src/mainapp/fixtures/sections_fixture.json", "w") as file: + file.write(json.dumps(fixture, indent=4)) + self.stdout.write(self.style.SUCCESS("Created sections_fixture.json.")) \ No newline at end of file diff --git a/src/mainapp/management/commands/create_teams_fixture.py b/src/mainapp/management/commands/create_teams_fixture.py index 831381f..8b64ca9 100644 --- a/src/mainapp/management/commands/create_teams_fixture.py +++ b/src/mainapp/management/commands/create_teams_fixture.py @@ -1,12 +1,10 @@ """Command to create test data fixture for teams.""" -import random import json -from string import ascii_uppercase from django.core.management.base import BaseCommand -from django.db.utils import IntegrityError -from mainapp.models import Team, BLOCKED_SECTION_LETTERS + +from mainapp.models import Team class Command(BaseCommand): @@ -16,43 +14,15 @@ class Command(BaseCommand): parser.add_argument("amount_of_teams", type=int, help="Number of teams to create") def handle(self, *args, **options): - - existing_teams = Team.objects.all() - - # Available sections - available_sections = [ - char for char in [*ascii_uppercase] - if char.lower() not in BLOCKED_SECTION_LETTERS - and char not in [team.section_letter for team in existing_teams] - ] - - if not available_sections: - self.stdout.write(self.style.ERROR( - f"There are no available sections for new teams." - )) - return - teams_amount = options["amount_of_teams"] - max_teams = len(available_sections) - - if teams_amount > max_teams: - self.stdout.write(self.style.ERROR( - f"Number of teams is too large [{teams_amount}/{max_teams}]." - )) - return # Create the new teams (this will create them in the database)# - new_teams = [] - for i in range(teams_amount): - section_letter = random.choice(available_sections) - available_sections.remove(section_letter) - team = Team.objects.create(section_letter=section_letter) - new_teams.append(team) + new_teams = [Team.objects.create() for i in range(teams_amount)] teams_fixture = [{ "model": "mainapp.team", "pk": team.pk, - "fields": {"section_letter": team.section_letter} + "fields": {} } for team in new_teams] # Remove the teams from the database diff --git a/src/mainapp/migrations/0001_initial.py b/src/mainapp/migrations/0001_initial.py index 54baf42..ed59721 100644 --- a/src/mainapp/migrations/0001_initial.py +++ b/src/mainapp/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.1.5 on 2023-05-09 22:52 +# Generated by Django 4.1.5 on 2023-05-10 08:30 from django.db import migrations, models import django.db.models.deletion @@ -17,13 +17,13 @@ class Migration(migrations.Migration): name='Section', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(editable=False, max_length=3, unique=True)), + ('name', models.CharField(max_length=3, unique=True)), ], ), migrations.CreateModel( name='Team', fields=[ - ('team_number', mainapp.models.ReusableAutoField(default=mainapp.models.ReusableAutoField.get_default, editable=False, primary_key=True, serialize=False)), + ('name', mainapp.models.ReusableAutoField(default=mainapp.models.ReusableAutoField.get_default, editable=False, primary_key=True, serialize=False)), ], ), migrations.CreateModel( @@ -34,7 +34,7 @@ class Migration(migrations.Migration): ('last_name', models.CharField(max_length=255)), ('peg_number', models.PositiveIntegerField(null=True, unique=True)), ('section', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='mainapp.section')), - ('team', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='members', to='mainapp.team', validators=[mainapp.models.validate_team_size])), + ('team', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='members', to='mainapp.team')), ], ), ] diff --git a/src/mainapp/migrations/0002_rename_team_number_team_name_alter_section_name.py b/src/mainapp/migrations/0002_rename_team_number_team_name_alter_section_name.py deleted file mode 100644 index da157db..0000000 --- a/src/mainapp/migrations/0002_rename_team_number_team_name_alter_section_name.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 4.1.5 on 2023-05-09 23:20 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('mainapp', '0001_initial'), - ] - - operations = [ - migrations.RenameField( - model_name='team', - old_name='team_number', - new_name='name', - ), - migrations.AlterField( - model_name='section', - name='name', - field=models.CharField(max_length=3, unique=True), - ), - ] diff --git a/src/mainapp/models.py b/src/mainapp/models.py index 217dd03..14a4ffd 100644 --- a/src/mainapp/models.py +++ b/src/mainapp/models.py @@ -1,4 +1,4 @@ -from string import ascii_uppercase +"""Models for the mainapp.""" from django.db import models from django.core.exceptions import ValidationError @@ -7,7 +7,7 @@ from django.db import models class ReusableAutoField(models.PositiveIntegerField): - """A django auto field that can reuse deleted primary keys""" + """A django auto field that can reuse deleted primary keys.""" def get_next_available_id(self, model_cls, using=None): """ @@ -31,15 +31,6 @@ class ReusableAutoField(models.PositiveIntegerField): return self.get_next_available_id(self.model) -# class Peg(models.Model): -# """Represents a person's peg""" - -# peg_number = ReusableAutoField(primary_key=True, default=ReusableAutoField.get_default, editable=False) - -# def __str__(self): -# return f"Peg {self.peg_number}" - - class SectionValidator: """Validation class for the `section` field on the `member` model.""" @@ -124,13 +115,54 @@ class Section(models.Model): return self.name @property - def members(self): + def get_members(self): return Member.objects.filter(section=self) + @property + def section_after(self): + """Returns the next section after this one, or none if not found.""" + sections = [sec for sec in Section.objects.all()] + sections.sort(key=lambda sec: sec.name) + try: + return sections[sections.index(self) + 1] + except IndexError: + return None -def validate_team_size(value): - if Member.objects.filter(team=value).count() >= 3: - raise ValidationError('Team already has maximal amount of members (3)') + @property + def section_before(self): + """Returns the last section before this one, or none if not found.""" + sections = [sec for sec in Section.objects.all()] + sections.sort(key=lambda sec: sec.name) + try: + return sections[sections.index(self) - 1] + except IndexError: + return None + + def is_joinable(self, member, /) -> bool: + """Returns boolean if a member is able to join this section.""" + + if not member.team: + return True + + teammates = [teammate for teammate in Member.objects.filter(team=member.team)] + + section_after = self.section_after.get_members if self.section_after else [] + section_before = self.section_before.get_members if self.section_before else [] + + for teammate in teammates: + if teammate in section_after: + return False + + if teammate in section_before: + return False + + return True + + return any( + teammate in section_after or teammate in section_before + for teammate in teammates + ) + class Member(models.Model): @@ -138,9 +170,9 @@ class Member(models.Model): first_name = models.CharField(max_length=255) last_name = models.CharField(max_length=255) - team = models.ForeignKey("Team", on_delete=models.SET_NULL, null=True, blank=True, validators=(validate_team_size,), related_name='members') + team = models.ForeignKey("Team", on_delete=models.SET_NULL, null=True, blank=True, related_name='members') peg_number = models.PositiveIntegerField(null=True, editable=True, unique=True) - section = models.ForeignKey(to=Section, on_delete=models.SET_NULL, null=True, swappable=True) + section = models.ForeignKey(to=Section, on_delete=models.SET_NULL, null=True, swappable=True, related_name='members') def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -153,46 +185,22 @@ class Member(models.Model): if peg_numbers: self.peg_number = min (peg_numbers) - # def clean(self): - # super().clean() - - # validator = SectionValidator(max_value="ZZZ") - # if not validator.is_valid(self.section): - # raise ValidationError("Invalid section value.") - def __str__(self): - return f"{self.first_name} {self.last_name} (team {self.team.team_number}))" + return f"{self.first_name} {self.last_name} (team {self.team.name}) [section {self.section.name}]" @property def fullname(self) -> str: return f"{self.first_name} {self.last_name}" - -BLOCKED_SECTION_LETTERS = ["i"] # lowercase only, sections cannot be any of these letters# - - class Team(models.Model): """Represents a team""" name = ReusableAutoField(primary_key=True, default=ReusableAutoField.get_default, editable=False) - # section_letter = models.CharField(max_length=1, unique=True, choices=[ - # (char, char) for char in ascii_uppercase if char.lower() not in BLOCKED_SECTION_LETTERS - # ]) def __str__(self): return f"Team {self.name}" @property - def members(self) -> list[Member]: + def get_members(self) -> list[Member]: return Member.objects.filter(team=self) - -# def validate_section_character(value): -# """Validates the section character""" - -# value = value.upper() -# banned_characters = ["I"] - -# if value in banned_characters: -# raise ValidationError(f"The character <{value}> is a prohibited character.") - diff --git a/src/mainapp/templates/index.html b/src/mainapp/templates/index.html index afeda4e..caf0414 100644 --- a/src/mainapp/templates/index.html +++ b/src/mainapp/templates/index.html @@ -1,53 +1,90 @@ {% extends "base.html" %} {% block content %} -
-
-
-

Results System

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi faucibus elementum diam nec semper. Nullam vestibulum enim eu nisi condimentum, vitae suscipit risus imperdiet.

-
-
-
-
+
-
+
+

+    Angling Trust Results    +
+

+
+ diff --git a/src/mainapp/templates/teams.html b/src/mainapp/templates/teams.html index ba0b33f..0cc482e 100644 --- a/src/mainapp/templates/teams.html +++ b/src/mainapp/templates/teams.html @@ -1,9 +1,14 @@ {% extends "base.html" %} {% block title %} - Teams & Members | + Member Management | {% endblock title %} +{% block style %} + + +{% endblock style %} + {% block content %}
Back @@ -11,8 +16,11 @@
-
-

Teams & Members

+
+

+ Member Management +
+

@@ -22,6 +30,9 @@ +
@@ -84,12 +95,26 @@