Coverage for browsing/filters.py: 100%

202 statements  

« prev     ^ index     » next       coverage.py v7.5.3, created at 2024-06-10 15:48 +0000

1import django_filters 

2from burials.models import ( 

3 BurialSite, 

4 BurialGroup, 

5 Burial, 

6 Urn, 

7 UrnCover, 

8 GraveGood, 

9 GraveGoodOther, 

10 DeadBodyRemains, 

11 AnimalRemains, 

12) 

13from vocabs.models import ( 

14 SkosConcept, 

15) 

16from places.models import ( 

17 Place, 

18) 

19 

20# To do: django_filters.MethodFilter are commented because raising errors after version upgrade 

21# test and remove if not needed anymore 

22 

23django_filters.filters.LOOKUP_TYPES = [ 

24 ("", "---------"), 

25 ("exact", "Is equal to"), 

26 ("iexact", "Is equal to (case insensitive)"), 

27 ("not_exact", "Is not equal to"), 

28 ("lt", "Lesser than/before"), 

29 ("gt", "Greater than/after"), 

30 ("gte", "Greater than or equal to"), 

31 ("lte", "Lesser than or equal to"), 

32 ("startswith", "Starts with"), 

33 ("endswith", "Ends with"), 

34 ("contains", "Contains"), 

35 ("icontains", "Contains (case insensitive)"), 

36 ("not_contains", "Does not contain"), 

37] 

38 

39YESNO = ((True, "Yes"), (False, "No")) 

40 

41FULLYPARTLYEXCAVATED = ( 

42 ("fully excavated", "fully excavated"), 

43 ("partly excavated", "partly excavated"), 

44) 

45 

46 

47class BurialSiteListFilter(django_filters.FilterSet): 

48 name = django_filters.CharFilter( 

49 lookup_expr="icontains", label="Burial Site name", help_text=False 

50 ) 

51 alternative_name = django_filters.CharFilter( 

52 lookup_expr="icontains", help_text=False, label="Alternative name" 

53 ) 

54 location = django_filters.ModelMultipleChoiceFilter( 

55 queryset=Place.objects.all(), help_text=False 

56 ) 

57 topography = django_filters.ModelMultipleChoiceFilter( 

58 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="topography"), 

59 help_text=False, 

60 ) 

61 distance_to_next_settlement = django_filters.ModelMultipleChoiceFilter( 

62 queryset=SkosConcept.objects.filter(scheme__dc_title__icontains="distance"), 

63 help_text=False, 

64 ) 

65 type_of_burial_site = django_filters.ModelMultipleChoiceFilter( 

66 queryset=SkosConcept.objects.filter( 

67 scheme__dc_title__iexact="type of burial site" 

68 ), 

69 help_text=False, 

70 ) 

71 dating = django_filters.ModelMultipleChoiceFilter( 

72 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="dating"), 

73 help_text=False, 

74 ) 

75 

76 class Meta: 

77 model = BurialSite 

78 fields = "__all__" 

79 

80 

81class BurialGroupListFilter(django_filters.FilterSet): 

82 burial_group_id = django_filters.CharFilter( 

83 lookup_expr="icontains", help_text=False, label="Burial group number" 

84 ) 

85 burial_site__name = django_filters.CharFilter( 

86 lookup_expr="icontains", help_text=False, label="Burial site name" 

87 ) 

88 burial_group_type = django_filters.ModelMultipleChoiceFilter( 

89 queryset=SkosConcept.objects.filter( 

90 scheme__dc_title__iexact="Burial group type" 

91 ), 

92 help_text=False, 

93 ) 

94 material = django_filters.ModelMultipleChoiceFilter( 

95 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Material"), 

96 help_text=False, 

97 ) 

98 length = django_filters.CharFilter( 

99 lookup_expr="exact", 

100 help_text=False, 

101 ) 

102 width = django_filters.CharFilter( 

103 lookup_expr="exact", 

104 help_text=False, 

105 ) 

106 diameter = django_filters.CharFilter( 

107 lookup_expr="exact", 

108 help_text=False, 

109 ) 

110 height = django_filters.CharFilter( 

111 lookup_expr="exact", 

112 help_text=False, 

113 ) 

114 

115 class Meta: 

116 model = BurialGroup 

117 fields = ["id", "burial_group_id", "burial_site__name"] 

118 

119 

120class BurialListFilter(django_filters.FilterSet): 

121 burial_id = django_filters.CharFilter( 

122 lookup_expr="exact", 

123 help_text=False, 

124 ) 

125 burial_group = django_filters.CharFilter( 

126 lookup_expr="icontains", help_text=False, label="Burial group" 

127 ) 

128 burial_site__name = django_filters.CharFilter( 

129 lookup_expr="icontains", help_text=False, label="Burial site name" 

130 ) 

131 C14_dendro = django_filters.ChoiceFilter( 

132 null_label="Unknown", 

133 help_text=False, 

134 label="Absolute dating (C14/Dendro)", 

135 choices=YESNO, 

136 ) 

137 absolute_age = django_filters.CharFilter( 

138 lookup_expr="icontains", help_text=False, label="Absolute age" 

139 ) 

140 burial_type = django_filters.ModelMultipleChoiceFilter( 

141 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Burial type"), 

142 help_text=False, 

143 ) 

144 # i don't know what this is? there is no field 'individuals' in models 

145 # individuals = django_filters.ChoiceFilter( 

146 # choices=YESNO, help_text=False, 

147 # ) 

148 secondary_burial = django_filters.ChoiceFilter( 

149 null_label="Unknown", help_text=False, choices=YESNO 

150 ) 

151 displaced = django_filters.ChoiceFilter( 

152 null_label="Unknown", help_text=False, choices=YESNO 

153 ) 

154 extraordinary_burial = django_filters.ChoiceFilter( 

155 null_label="Unknown", help_text=False, choices=YESNO 

156 ) 

157 construction = django_filters.ModelMultipleChoiceFilter( 

158 queryset=SkosConcept.objects.filter( 

159 scheme__dc_title__iexact="Burial construction" 

160 ), 

161 help_text=False, 

162 ) 

163 arrangement = django_filters.ModelMultipleChoiceFilter( 

164 queryset=SkosConcept.objects.filter( 

165 scheme__dc_title__iexact="Burial arrangement" 

166 ), 

167 help_text=False, 

168 ) 

169 cover = django_filters.ChoiceFilter( 

170 null_label="Unknown", help_text=False, choices=YESNO 

171 ) 

172 cover_type = django_filters.ModelMultipleChoiceFilter( 

173 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Cover type"), 

174 help_text=False, 

175 ) 

176 grave_pit_form = django_filters.ModelMultipleChoiceFilter( 

177 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Grave pit form"), 

178 help_text=False, 

179 ) 

180 grave_pit_orientation = django_filters.ModelMultipleChoiceFilter( 

181 queryset=SkosConcept.objects.filter( 

182 scheme__dc_title__iexact="Grave pit orientation" 

183 ), 

184 help_text=False, 

185 ) 

186 length = django_filters.CharFilter( 

187 lookup_expr="exact", 

188 help_text=False, 

189 ) 

190 width = django_filters.CharFilter( 

191 lookup_expr="exact", 

192 help_text=False, 

193 ) 

194 diameter = django_filters.CharFilter( 

195 lookup_expr="exact", 

196 help_text=False, 

197 ) 

198 height = django_filters.CharFilter( 

199 lookup_expr="exact", 

200 help_text=False, 

201 ) 

202 

203 class Meta: 

204 model = Burial 

205 fields = ["id", "burial_id", "burial_site__name"] 

206 

207 

208class UrnCoverListFilter(django_filters.FilterSet): 

209 cover_id = django_filters.CharFilter( 

210 lookup_expr="exact", 

211 help_text=False, 

212 ) 

213 urn__urn_id = django_filters.CharFilter( 

214 lookup_expr="exact", help_text=False, label="Urn Inventory Number" 

215 ) 

216 upside_down = django_filters.ChoiceFilter( 

217 null_label="Unknown", help_text=False, choices=YESNO 

218 ) 

219 fragment = django_filters.ChoiceFilter( 

220 null_label="Unknown", help_text=False, choices=YESNO 

221 ) 

222 basic_shape = django_filters.ModelMultipleChoiceFilter( 

223 queryset=SkosConcept.objects.filter( 

224 scheme__dc_title__iexact="Basic shape of urn cover" 

225 ), 

226 help_text=False, 

227 ) 

228 urn__burial__burial_site__name = django_filters.CharFilter( 

229 lookup_expr="icontains", help_text=False, label="Burial site" 

230 ) 

231 urn__burial__burial_id = django_filters.CharFilter( 

232 lookup_expr="exact", help_text=False, label="Burial number" 

233 ) 

234 

235 class Meta: 

236 model = UrnCover 

237 fields = ["id", "cover_id"] 

238 

239 

240class UrnListFilter(django_filters.FilterSet): 

241 burial__burial_site__name = django_filters.CharFilter( 

242 lookup_expr="icontains", help_text=False, label="Burial site" 

243 ) 

244 burial__burial_id = django_filters.CharFilter( 

245 lookup_expr="exact", help_text=False, label="Burial number" 

246 ) 

247 burial__burial_type__pref_label = django_filters.CharFilter( 

248 lookup_expr="icontains", help_text=False, label="Burial type" 

249 ) 

250 # burial__burial_type__pref_label = django_filters.ModelMultipleChoiceFilter( 

251 # queryset=SkosConcept.objects.filter(scheme__dc_title__iexact='Burial type'), 

252 # help_text=False, 

253 # label="Burial type" 

254 # ) 

255 basic_shape = django_filters.ModelMultipleChoiceFilter( 

256 queryset=SkosConcept.objects.filter( 

257 scheme__dc_title__iexact="Basic shape of urn" 

258 ), 

259 help_text=False, 

260 ) 

261 urn_id = django_filters.CharFilter( 

262 lookup_expr="iexact", help_text=False, label="Urn Inventory Number" 

263 ) 

264 urn_type = django_filters.CharFilter( 

265 lookup_expr="icontains", help_text=False, label="Urn type" 

266 ) 

267 variation = django_filters.CharFilter( 

268 lookup_expr="icontains", help_text=False, label="Variation" 

269 ) 

270 urncover_exists = django_filters.ChoiceFilter( 

271 null_label="Unknown", help_text=False, choices=YESNO, label="Urn cover exists" 

272 ) 

273 

274 class Meta: 

275 model = Urn 

276 fields = ["id", "urn_id"] 

277 

278 

279class GraveGoodListFilter(django_filters.FilterSet): 

280 burial__burial_site__name = django_filters.CharFilter( 

281 lookup_expr="icontains", help_text=False, label="Burial site" 

282 ) 

283 burial__burial_id = django_filters.CharFilter( 

284 lookup_expr="exact", help_text=False, label="Burial number" 

285 ) 

286 urn__urn_id = django_filters.CharFilter( 

287 lookup_expr="exact", help_text=False, label="Urn Inventory Number" 

288 ) 

289 name = django_filters.ModelMultipleChoiceFilter( 

290 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="GraveGoodObject"), 

291 help_text=False, 

292 label="Type", 

293 ) 

294 material = django_filters.ModelMultipleChoiceFilter( 

295 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Material"), 

296 help_text=False, 

297 ) 

298 condition = django_filters.ModelMultipleChoiceFilter( 

299 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Condition"), 

300 help_text=False, 

301 ) 

302 position = django_filters.ModelMultipleChoiceFilter( 

303 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Position"), 

304 help_text=False, 

305 ) 

306 amount = django_filters.NumberFilter( 

307 lookup_expr="exact", help_text=False, label="amount_countable" 

308 ) 

309 secondary_depostition = django_filters.ChoiceFilter( 

310 null_label="Unknown", 

311 help_text=False, 

312 choices=YESNO, 

313 label="Secondary deposition", 

314 ) 

315 

316 class Meta: 

317 model = GraveGood 

318 fields = ["id", "name"] 

319 

320 

321class GraveGoodOtherListFilter(django_filters.FilterSet): 

322 burial__burial_site__name = django_filters.CharFilter( 

323 lookup_expr="icontains", help_text=False, label="Burial site" 

324 ) 

325 burial__burial_id = django_filters.CharFilter( 

326 lookup_expr="exact", help_text=False, label="Burial number" 

327 ) 

328 urn__urn_id = django_filters.CharFilter( 

329 lookup_expr="exact", help_text=False, label="Urn Inventory Number" 

330 ) 

331 food = django_filters.ChoiceFilter( 

332 null_label="Unknown", help_text=False, choices=YESNO 

333 ) 

334 other_organic_grave_good = django_filters.ChoiceFilter( 

335 null_label="Unknown", help_text=False, choices=YESNO 

336 ) 

337 position = django_filters.ModelMultipleChoiceFilter( 

338 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Position"), 

339 help_text=False, 

340 ) 

341 secondary_depostition = django_filters.ChoiceFilter( 

342 null_label="Unknown", 

343 help_text=False, 

344 choices=YESNO, 

345 label="Secondary deposition", 

346 ) 

347 

348 class Meta: 

349 model = GraveGoodOther 

350 fields = [ 

351 "id", 

352 ] 

353 

354 

355class DeadBodyRemainsListFilter(django_filters.FilterSet): 

356 burial__burial_site__name = django_filters.CharFilter( 

357 lookup_expr="icontains", help_text=False, label="Burial site" 

358 ) 

359 burial__burial_id = django_filters.CharFilter( 

360 lookup_expr="exact", help_text=False, label="Burial number" 

361 ) 

362 urn__urn_id = django_filters.CharFilter( 

363 lookup_expr="exact", help_text=False, label="Urn Inventory Number" 

364 ) 

365 age = django_filters.ModelMultipleChoiceFilter( 

366 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Age"), 

367 help_text=False, 

368 ) 

369 gender = django_filters.ModelMultipleChoiceFilter( 

370 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Gender"), 

371 help_text=False, 

372 ) 

373 temperature = django_filters.ModelMultipleChoiceFilter( 

374 queryset=SkosConcept.objects.filter( 

375 scheme__dc_title__iexact="Cremation temperature" 

376 ), 

377 help_text=False, 

378 ) 

379 weight = django_filters.CharFilter( 

380 lookup_expr="icontains", help_text=False, label="Weight" 

381 ) 

382 pathology = django_filters.CharFilter( 

383 lookup_expr="icontains", help_text=False, label="Pathology" 

384 ) 

385 total_weight = django_filters.CharFilter( 

386 lookup_expr="iexact", help_text=False, label="Total weight" 

387 ) 

388 amount_countable = django_filters.NumberFilter(lookup_expr="exact", help_text=False) 

389 position = django_filters.ModelMultipleChoiceFilter( 

390 queryset=SkosConcept.objects.filter( 

391 scheme__dc_title__iexact="Position of the cremated remains" 

392 ), 

393 help_text=False, 

394 ) 

395 secondary_depostition = django_filters.ChoiceFilter( 

396 null_label="Unknown", 

397 help_text=False, 

398 choices=YESNO, 

399 label="Secondary deposition", 

400 ) 

401 

402 class Meta: 

403 model = DeadBodyRemains 

404 fields = ["id", "age"] 

405 

406 

407class AnimalRemainsListFilter(django_filters.FilterSet): 

408 burial__burial_site__name = django_filters.CharFilter( 

409 lookup_expr="icontains", help_text=False, label="Burial site" 

410 ) 

411 burial__burial_id = django_filters.CharFilter( 

412 lookup_expr="exact", help_text=False, label="Burial number" 

413 ) 

414 urn__urn_id = django_filters.CharFilter( 

415 lookup_expr="exact", help_text=False, label="Urn Inventory Number" 

416 ) 

417 species = django_filters.ModelMultipleChoiceFilter( 

418 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Species"), 

419 help_text=False, 

420 ) 

421 age = django_filters.CharFilter( 

422 lookup_expr="icontains", help_text=False, label="Age" 

423 ) 

424 sex = django_filters.CharFilter( 

425 lookup_expr="icontains", help_text=False, label="Sex" 

426 ) 

427 weight = django_filters.CharFilter( 

428 lookup_expr="icontains", help_text=False, label="Weight" 

429 ) 

430 position = django_filters.ModelMultipleChoiceFilter( 

431 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Position"), 

432 help_text=False, 

433 ) 

434 amount_countable = django_filters.NumberFilter(lookup_expr="exact", help_text=False) 

435 secondary_depostition = django_filters.ChoiceFilter( 

436 null_label="Unknown", 

437 help_text=False, 

438 choices=YESNO, 

439 label="Secondary deposition", 

440 ) 

441 

442 class Meta: 

443 model = AnimalRemains 

444 fields = ["id", "species"] 

445 

446 

447class MainListFilter(django_filters.FilterSet): 

448 burial_id = django_filters.CharFilter( 

449 lookup_expr="exact", 

450 help_text=False, 

451 ) 

452 burial_group = django_filters.CharFilter( 

453 lookup_expr="icontains", help_text=False, label="Burial group" 

454 ) 

455 # BurialSite search fields 

456 burial_site__name = django_filters.CharFilter( 

457 lookup_expr="icontains", help_text=False, label="Burial site name" 

458 ) 

459 burial_site__alternative_name = django_filters.CharFilter( 

460 lookup_expr="icontains", help_text=False, label="Burial site alternative name" 

461 ) 

462 burial_site__location = django_filters.ModelMultipleChoiceFilter( 

463 queryset=Place.objects.all(), help_text=False 

464 ) 

465 burial_site__topography = django_filters.ModelMultipleChoiceFilter( 

466 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Topography"), 

467 help_text=False, 

468 ) 

469 burial_site__excavation = django_filters.ChoiceFilter( 

470 help_text=False, label="Excavation", choices=FULLYPARTLYEXCAVATED 

471 ) 

472 burial_site__distance_to_next_settlement = django_filters.ModelMultipleChoiceFilter( 

473 queryset=SkosConcept.objects.filter( 

474 scheme__dc_title__iexact="Distance to next settlement" 

475 ), 

476 help_text=False, 

477 ) 

478 burial_site__type_of_burial_site = django_filters.ModelMultipleChoiceFilter( 

479 queryset=SkosConcept.objects.filter( 

480 scheme__dc_title__iexact="Type of burial site" 

481 ), 

482 help_text=False, 

483 label="Type of burial site", 

484 ) 

485 burial_site__disturbance = django_filters.CharFilter( 

486 lookup_expr="icontains", help_text=False 

487 ) 

488 burial_site__total_graves = django_filters.CharFilter( 

489 lookup_expr="exact", 

490 help_text=False, 

491 label=BurialSite._meta.get_field("total_graves").verbose_name, 

492 ) 

493 burial_site__dating = django_filters.ModelMultipleChoiceFilter( 

494 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Dating"), 

495 help_text=False, 

496 ) 

497 burial_site__absolute_dating = django_filters.CharFilter( 

498 lookup_expr="icontains", help_text=False 

499 ) 

500 # Burial search fields 

501 C14_dendro = django_filters.ChoiceFilter( 

502 null_label="Unknown", 

503 help_text=False, 

504 label="Absolute dating (C14/Dendro)", 

505 choices=YESNO, 

506 ) 

507 absolute_age = django_filters.CharFilter( 

508 lookup_expr="icontains", help_text=False, label="Absolute age" 

509 ) 

510 burial_type = django_filters.ModelMultipleChoiceFilter( 

511 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Burial type"), 

512 help_text=False, 

513 ) 

514 # i don't know what this is? there is no field 'individuals' in models 

515 # individuals = django_filters.ChoiceFilter( 

516 # choices=YESNO, help_text=False, 

517 # ) 

518 secondary_burial = django_filters.ChoiceFilter( 

519 null_label="Unknown", help_text=False, choices=YESNO 

520 ) 

521 displaced = django_filters.ChoiceFilter( 

522 null_label="Unknown", help_text=False, choices=YESNO 

523 ) 

524 extraordinary_burial = django_filters.ChoiceFilter( 

525 null_label="Unknown", help_text=False, choices=YESNO 

526 ) 

527 construction = django_filters.ModelMultipleChoiceFilter( 

528 queryset=SkosConcept.objects.filter( 

529 scheme__dc_title__iexact="Burial construction" 

530 ), 

531 help_text=False, 

532 ) 

533 arrangement = django_filters.ModelMultipleChoiceFilter( 

534 queryset=SkosConcept.objects.filter( 

535 scheme__dc_title__iexact="Burial arrangement" 

536 ), 

537 help_text=False, 

538 ) 

539 cover = django_filters.ChoiceFilter( 

540 null_label="Unknown", help_text=False, choices=YESNO 

541 ) 

542 cover_type = django_filters.ModelMultipleChoiceFilter( 

543 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Cover type"), 

544 help_text=False, 

545 ) 

546 grave_pit_form = django_filters.ModelMultipleChoiceFilter( 

547 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Grave pit form"), 

548 help_text=False, 

549 ) 

550 grave_pit_orientation = django_filters.ModelMultipleChoiceFilter( 

551 queryset=SkosConcept.objects.filter( 

552 scheme__dc_title__iexact="Grave pit orientation" 

553 ), 

554 help_text=False, 

555 ) 

556 length = django_filters.CharFilter( 

557 lookup_expr="exact", 

558 help_text=False, 

559 ) 

560 width = django_filters.CharFilter( 

561 lookup_expr="exact", 

562 help_text=False, 

563 ) 

564 diameter = django_filters.CharFilter( 

565 lookup_expr="exact", 

566 help_text=False, 

567 ) 

568 height = django_filters.CharFilter( 

569 lookup_expr="exact", 

570 help_text=False, 

571 ) 

572 filling_objects = django_filters.ModelMultipleChoiceFilter( 

573 queryset=SkosConcept.objects.filter( 

574 scheme__dc_title__iexact="Burial Filling Objects" 

575 ), 

576 help_text=False, 

577 ) 

578 intentionally_deposited = django_filters.ChoiceFilter( 

579 null_label="Unknown", help_text=False, choices=YESNO 

580 ) 

581 filling = django_filters.ModelMultipleChoiceFilter( 

582 queryset=SkosConcept.objects.filter( 

583 scheme__dc_title__iexact="Burial Filling Type" 

584 ), 

585 help_text=False, 

586 ) 

587 post_holes = django_filters.CharFilter( 

588 lookup_expr="icontains", help_text=False, label="Post holes" 

589 ) 

590 surface_identification_mark = django_filters.CharFilter( 

591 lookup_expr="icontains", help_text=False, label="Surface Identification Mark" 

592 ) 

593 erdgraebchen = django_filters.CharFilter( 

594 lookup_expr="icontains", help_text=False, label="Erdgraebchen" 

595 ) 

596 other_features = django_filters.CharFilter( 

597 lookup_expr="icontains", help_text=False, label="Other features" 

598 ) 

599 # Urn search fields 

600 urn__basic_shape = django_filters.ModelMultipleChoiceFilter( 

601 queryset=SkosConcept.objects.filter( 

602 scheme__dc_title__iexact="Basic shape of urn" 

603 ), 

604 help_text=False, 

605 label="Basic shape of urn", 

606 ) 

607 urn__urn_type = django_filters.CharFilter( 

608 lookup_expr="icontains", help_text=False, label="Urn type" 

609 ) 

610 urn__variation = django_filters.CharFilter( 

611 lookup_expr="icontains", help_text=False, label="Urn variation" 

612 ) 

613 urn__urn_id = django_filters.CharFilter( 

614 lookup_expr="icontains", 

615 help_text=False, 

616 label=Urn._meta.get_field("urn_id").verbose_name, 

617 ) 

618 urn__urncover_exists = django_filters.ChoiceFilter( 

619 null_label="Unknown", help_text=False, choices=YESNO, label="Urn cover exists?" 

620 ) 

621 # UrnCover search fields 

622 urn__urncover__basic_shape = django_filters.ModelMultipleChoiceFilter( 

623 queryset=SkosConcept.objects.filter( 

624 scheme__dc_title__iexact="Basic shape of urn cover" 

625 ), 

626 help_text=False, 

627 label="Basic shape of urn cover", 

628 ) 

629 urn__urncover__upside_down = django_filters.ChoiceFilter( 

630 null_label="Unknown", 

631 help_text=False, 

632 choices=YESNO, 

633 label="Urn cover upside down", 

634 ) 

635 urn__urncover__fragment = django_filters.ChoiceFilter( 

636 null_label="Unknown", help_text=False, choices=YESNO, label="Fragment" 

637 ) 

638 urn__urncover__cover_id = django_filters.CharFilter( 

639 lookup_expr="icontains", 

640 help_text=False, 

641 label=UrnCover._meta.get_field("cover_id").verbose_name, 

642 ) 

643 # GraveGood search fields 

644 gravegood__name = django_filters.ModelMultipleChoiceFilter( 

645 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="GraveGoodObject"), 

646 help_text=False, 

647 label="Grave Good type", 

648 ) 

649 gravegood__material = django_filters.ModelMultipleChoiceFilter( 

650 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Material"), 

651 help_text=False, 

652 label="Grave Good material", 

653 ) 

654 gravegood__condition = django_filters.ModelMultipleChoiceFilter( 

655 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Condition"), 

656 help_text=False, 

657 label="Grave Good condition", 

658 ) 

659 gravegood__position = django_filters.ModelMultipleChoiceFilter( 

660 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Position"), 

661 help_text=False, 

662 label="Grave Good position", 

663 ) 

664 gravegood__amount_countable = django_filters.NumberFilter( 

665 lookup_expr="exact", help_text=False, distinct=True, label="Grave Good amount" 

666 ) 

667 # GraveGoodOther search fields 

668 gravegoodother__food = django_filters.ChoiceFilter( 

669 null_label="Unknown", help_text=False, choices=YESNO, label="Food" 

670 ) 

671 gravegoodother__other_organic_grave_good = django_filters.ChoiceFilter( 

672 null_label="Unknown", 

673 help_text=False, 

674 choices=YESNO, 

675 label="Other organic grave good", 

676 ) 

677 gravegoodother__position = django_filters.ModelMultipleChoiceFilter( 

678 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Position"), 

679 help_text=False, 

680 label="Organic Grave Good position", 

681 ) 

682 gravegoodother__amount_countable = django_filters.NumberFilter( 

683 lookup_expr="exact", 

684 help_text=False, 

685 distinct=True, 

686 label="Organic Grave Good amount", 

687 ) 

688 # DeadBodyRemains search fields 

689 deadbodyremains__age = django_filters.ModelMultipleChoiceFilter( 

690 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Age"), 

691 help_text=False, 

692 label="Anthropology age", 

693 ) 

694 deadbodyremains__gender = django_filters.ModelMultipleChoiceFilter( 

695 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Gender"), 

696 help_text=False, 

697 label="Anthropology gender", 

698 ) 

699 deadbodyremains__temperature = django_filters.ModelMultipleChoiceFilter( 

700 queryset=SkosConcept.objects.filter( 

701 scheme__dc_title__iexact="Cremation temperature" 

702 ), 

703 help_text=False, 

704 label="Cremation temperature", 

705 ) 

706 deadbodyremains__position = django_filters.ModelMultipleChoiceFilter( 

707 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Position"), 

708 help_text=False, 

709 label="Anthropology position", 

710 ) 

711 deadbodyremains__weight = django_filters.CharFilter( 

712 lookup_expr="exact", help_text=False, label="Anthropology weight in gram" 

713 ) 

714 deadbodyremains__pathology = django_filters.CharFilter( 

715 lookup_expr="icontains", help_text=False, label="Pathology" 

716 ) 

717 deadbodyremains__total_weight = django_filters.CharFilter( 

718 lookup_expr="exact", 

719 help_text=False, 

720 label=DeadBodyRemains._meta.get_field("total_weight").verbose_name, 

721 ) 

722 deadbodyremains__amount_countable = django_filters.NumberFilter( 

723 lookup_expr="exact", help_text=False, distinct=True, label="Anthropology amount" 

724 ) 

725 # AnimalRemains search fields 

726 animalremains__species = django_filters.ModelMultipleChoiceFilter( 

727 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Species"), 

728 help_text=False, 

729 label="Species", 

730 ) 

731 animalremains__age = django_filters.CharFilter( 

732 lookup_expr="icontains", help_text=False, label="Animal remains age" 

733 ) 

734 animalremains__sex = django_filters.CharFilter( 

735 lookup_expr="icontains", help_text=False, label="Animal remains sex" 

736 ) 

737 animalremains__weight = django_filters.CharFilter( 

738 lookup_expr="exact", help_text=False, label="Animal remains weight" 

739 ) 

740 animalremains__position = django_filters.ModelMultipleChoiceFilter( 

741 queryset=SkosConcept.objects.filter(scheme__dc_title__iexact="Position"), 

742 help_text=False, 

743 label="Animal remains position", 

744 ) 

745 animalremains__amount_countable = django_filters.NumberFilter( 

746 lookup_expr="exact", 

747 help_text=False, 

748 distinct=True, 

749 label="Animal Remains amount", 

750 ) 

751 

752 class Meta: 

753 model = Burial 

754 fields = ["id", "burial_id", "burial_site__name"]