Coverage for vocabs/dal_views.py: 27%

75 statements  

« prev     ^ index     » next       coverage.py v7.6.0, created at 2024-07-27 11:19 +0000

1from dal import autocomplete 

2from .models import SkosLabel, SkosConcept, SkosConceptScheme 

3from django.db.models import Q 

4 

5 

6class SpecificConcepts(autocomplete.Select2QuerySetView): 

7 def get_result_label(self, item): 

8 return "{}".format(item.label) 

9 

10 def get_queryset(self): 

11 try: 

12 scheme = self.kwargs["scheme"] 

13 selected_scheme = SkosConceptScheme.objects.filter( 

14 dc_title__icontains=scheme 

15 ) 

16 except KeyError: 

17 selected_scheme = None 

18 if selected_scheme: 

19 qs = SkosConcept.objects.filter(scheme__in=selected_scheme) 

20 else: 

21 qs = SkosConcept.objects.all() 

22 

23 if self.q: 

24 direct_match = qs.filter(pref_label__icontains=self.q) 

25 plus_narrower = direct_match | qs.filter(broader_concept__in=direct_match) 

26 return plus_narrower 

27 

28 return [] 

29 

30 

31class SKOSConstraintACNoHierarchy(autocomplete.Select2QuerySetView): 

32 def get_queryset(self): 

33 scheme = self.request.GET.get("scheme") 

34 try: 

35 selected_scheme = SkosConceptScheme.objects.get(dc_title=scheme) 

36 qs = SkosConcept.objects.filter(scheme=selected_scheme) 

37 except: # noqa: E722 

38 qs = SkosConcept.objects.all() 

39 

40 if self.q: 

41 qs = qs.filter(Q(pref_label__icontains=self.q)) 

42 

43 return qs 

44 

45 

46class SKOSConstraintAC(autocomplete.Select2QuerySetView): 

47 def get_result_label(self, item): 

48 if len(item.skos_broader.all()) > 0: 

49 return "{} >> {}".format(item.skos_broader.all()[0], item.pref_label) 

50 else: 

51 return "{}".format(item.pref_label) 

52 

53 def get_queryset(self): 

54 scheme = self.request.GET.get("scheme") 

55 try: 

56 selected_scheme = SkosConceptScheme.objects.get(dc_title=scheme) 

57 qs = SkosConcept.objects.filter(scheme=selected_scheme) 

58 except: # noqa: E722 

59 qs = SkosConcept.objects.all() 

60 

61 if self.q: 

62 direct_match = qs.filter(pref_label__icontains=self.q) 

63 plus_narrower = direct_match | qs.filter(broader_concept__in=direct_match) 

64 return plus_narrower 

65 else: 

66 return qs 

67 

68 

69class SkosLabelAC(autocomplete.Select2QuerySetView): 

70 def get_queryset(self): 

71 qs = SkosLabel.objects.all() 

72 

73 if self.q: 

74 qs = qs.filter(label__icontains=self.q) 

75 return qs 

76 

77 

78class SkosConceptAC(autocomplete.Select2QuerySetView): 

79 def get_result_label(self, item): 

80 return "{}".format(item.label) 

81 

82 def get_queryset(self): 

83 qs = SkosConcept.objects.all() 

84 if self.q: 

85 direct_match = qs.filter(pref_label__icontains=self.q) 

86 plus_narrower = qs.filter(broader_concept__in=direct_match) | direct_match 

87 return plus_narrower 

88 else: 

89 return qs 

90 

91 

92class SkosConceptPrefLabalAC(autocomplete.Select2ListView): 

93 def get_list(self): 

94 concepts = SkosConcept.objects.filter(pref_label__icontains=self.q) 

95 pref_labels = set([x.pref_label for x in concepts]) 

96 return pref_labels 

97 

98 

99class SkosConceptSchemeAC(autocomplete.Select2QuerySetView): 

100 def get_queryset(self): 

101 qs = SkosConceptScheme.objects.all() 

102 

103 if self.q: 

104 qs = qs.filter(dc_title__icontains=self.q) 

105 

106 return qs