• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

EQAR / eqar_backend / e01b66e3-7b01-4ac2-bdbe-46705f1eec5e

30 Mar 2025 08:23PM UTC coverage: 87.665% (+11.4%) from 76.228%
e01b66e3-7b01-4ac2-bdbe-46705f1eec5e

push

circleci

web-flow
Merge pull request #537 from EQAR/development

fix institution index signal for Meilisearch

8 of 9 new or added lines in 1 file covered. (88.89%)

288 existing lines in 28 files now uncovered.

10255 of 11698 relevant lines covered (87.66%)

0.88 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

85.8
/adminapi/views/select_views.py
1
import datetime
1✔
2

3
from django.db.models import Q
1✔
4
from drf_yasg.utils import swagger_auto_schema
1✔
5
from rest_framework import generics
1✔
6
from rest_framework.filters import SearchFilter
1✔
7
from rest_framework.generics import get_object_or_404
1✔
8
from rest_framework.response import Response
1✔
9
from rest_framework.views import APIView
1✔
10

11
from adminapi.serializers.select_serializers import CountrySelectSerializer, \
1✔
12
    LanguageSelectSerializer, AssociationSelectSerializer, \
13
    EQARDecisionTypeSelectSerializer, \
14
    IdentifierResourceSelectSerializer, PermissionTypeSelectSerializer, QFEHEALevelSelectSerializer, \
15
    ReportDecisionSerializer, ReportStatusSerializer, FlagSerializer, AgencySelectSerializer, \
16
    AgencyESGActivitySerializer, AgencyActivityTypeSerializer, InstitutionHistoricalRelationshipTypeSerializer, \
17
    CountryQARequirementTypeSerializer, InstitutionHierarchicalRelationshipTypeSerializer, \
18
    InstitutionOrganizationTypeSerializer, AssessmentSerializer, DegreeOutcomeSelectSerializer, \
19
    AgencyActivityGroupSerializer
20
from agencies.models import Agency, AgencyProxy, AgencyESGActivity, AgencyActivityType, AgencyActivityGroup
1✔
21
from countries.models import Country, CountryQARequirementType
1✔
22
from institutions.models import InstitutionHistoricalRelationshipType, InstitutionHierarchicalRelationshipType, \
1✔
23
    InstitutionOrganizationType
24
from lists.models import Language, Association, EQARDecisionType, IdentifierResource, PermissionType, QFEHEALevel, Flag, \
1✔
25
    Assessment, DegreeOutcome
26
from reports.models import ReportDecision, ReportStatus
1✔
27

28

29
class AgencySelectList(generics.ListAPIView):
1✔
30
    serializer_class = AgencySelectSerializer
1✔
31
    pagination_class = None
1✔
32
    filter_backends = (SearchFilter,)
1✔
33
    search_fields = ('name_primary', 'acronym_primary')
1✔
34

35
    def get_queryset(self):
1✔
36
        user = self.request.user
×
37
        if user.is_staff:
×
UNCOV
38
            return Agency.objects.all().order_by('acronym_primary')
×
39
        else:
40
            submitting_agency = user.deqarprofile.submitting_agency
×
UNCOV
41
            agency_proxies = AgencyProxy.objects.filter(
×
42
                Q(submitting_agency=submitting_agency) &
43
                (Q(proxy_to__gte=datetime.date.today()) | Q(proxy_to__isnull=True)))
UNCOV
44
            return Agency.objects.filter(allowed_agency__in=agency_proxies).order_by('acronym_primary')
×
45

46

47
class AgencySelectAllList(generics.ListAPIView):
1✔
48
    serializer_class = AgencySelectSerializer
1✔
49
    pagination_class = None
1✔
50
    filter_backends = (SearchFilter,)
1✔
51
    search_fields = ('name_primary', 'acronym_primary')
1✔
52
    queryset = Agency.objects.all()
1✔
53

54

55
class AgencyESGActivitySelectList(generics.ListAPIView):
1✔
56
    serializer_class = AgencyESGActivitySerializer
1✔
57
    pagination_class = None
1✔
58
    filter_backends = (SearchFilter,)
1✔
59
    search_fields = ('activity', 'activity_group__activity')
1✔
60

61
    def get_queryset(self, *args, **kwargs):
1✔
62
        agencies = self.request.query_params.getlist('agencies', [])
×
UNCOV
63
        return AgencyESGActivity.objects.filter(agency__id__in=agencies).order_by('agency', 'activity')
×
64

65

66
class AgencyActivityGroupSelectList(generics.ListAPIView):
1✔
67
    serializer_class = AgencyActivityGroupSerializer
1✔
68
    pagination_class = None
1✔
69
    filter_backends = (SearchFilter,)
1✔
70
    search_fields = ('activity', 'activity_type')
1✔
71
    queryset = AgencyActivityGroup.objects.all()
1✔
72

73
    def get_queryset(self, *args, **kwargs):
1✔
UNCOV
74
        activity_type = self.request.query_params.get('activity_type', None)
×
UNCOV
75
        if activity_type == 'I':
×
UNCOV
76
            return AgencyActivityGroup.objects.filter(activity_type__type='institutional').order_by('activity')
×
UNCOV
77
        elif activity_type == 'P':
×
UNCOV
78
            return AgencyActivityGroup.objects.filter(activity_type__type='programme').order_by('activity')
×
UNCOV
79
        elif activity_type == 'JP':
×
UNCOV
80
            return AgencyActivityGroup.objects.filter(activity_type__type='joint programme').order_by('activity')
×
UNCOV
81
        elif activity_type == 'I/P':
×
UNCOV
82
            return AgencyActivityGroup.objects.filter(activity_type__type='institutional/programme').order_by('activity')
×
83
        else:
UNCOV
84
            return AgencyActivityGroup.objects.all().order_by('activity')
×
85

86

87
class AgencyActivityTypeSelectList(generics.ListAPIView):
1✔
88
    serializer_class = AgencyActivityTypeSerializer
1✔
89
    pagination_class = None
1✔
90
    filter_backends = (SearchFilter,)
1✔
91
    search_fields = ('type',)
1✔
92
    queryset = AgencyActivityType.objects.all().order_by('type')
1✔
93

94

95
class CountrySelectList(generics.ListAPIView):
1✔
96
    serializer_class = CountrySelectSerializer
1✔
97
    pagination_class = None
1✔
98
    filter_backends = (SearchFilter,)
1✔
99
    search_fields = ('name_english',)
1✔
100
    queryset = Country.objects.all().order_by('name_english')
1✔
101

102

103
class InstitutionCountrySelectList(generics.ListAPIView):
1✔
104
    serializer_class = CountrySelectSerializer
1✔
105
    pagination_class = None
1✔
106
    filter_backends = (SearchFilter,)
1✔
107
    search_fields = ('name_english',)
1✔
108
    queryset = Country.objects.all().order_by('name_english')
1✔
109

110
    def get_queryset(self):
1✔
UNCOV
111
        return Country.objects.filter(institutioncountry__isnull=False).distinct()
×
112

113

114
class InstitutionOrganizationTypeSelectList(generics.ListAPIView):
1✔
115
    serializer_class = InstitutionOrganizationTypeSerializer
1✔
116
    pagination_class = None
1✔
117
    filter_backends = (SearchFilter,)
1✔
118
    search_fields = ('type',)
1✔
119
    queryset = InstitutionOrganizationType.objects.all().order_by('id')
1✔
120

121

122
class LanguageSelectList(generics.ListAPIView):
1✔
123
    serializer_class = LanguageSelectSerializer
1✔
124
    pagination_class = None
1✔
125
    filter_backends = (SearchFilter,)
1✔
126
    search_fields = ('language_name_en',)
1✔
127
    queryset = Language.objects.all().order_by('language_name_en')
1✔
128

129

130
class AssociationSelectList(generics.ListAPIView):
1✔
131
    serializer_class = AssociationSelectSerializer
1✔
132
    pagination_class = None
1✔
133
    filter_backends = (SearchFilter,)
1✔
134
    search_fields = ('association',)
1✔
135
    queryset = Association.objects.all().order_by('id')
1✔
136

137

138
class ReportDecisionSelectList(generics.ListAPIView):
1✔
139
    serializer_class = ReportDecisionSerializer
1✔
140
    pagination_class = None
1✔
141
    filter_backends = (SearchFilter,)
1✔
142
    search_fields = ('decision',)
1✔
143
    queryset = ReportDecision.objects.all().order_by('id')
1✔
144

145

146
class EQARDecisionTypeSelectList(generics.ListAPIView):
1✔
147
    serializer_class = EQARDecisionTypeSelectSerializer
1✔
148
    pagination_class = None
1✔
149
    filter_backends = (SearchFilter,)
1✔
150
    search_fields = ('type',)
1✔
151
    queryset = EQARDecisionType.objects.all().order_by('id')
1✔
152

153

154
class ReportStatusSelectList(generics.ListAPIView):
1✔
155
    serializer_class = ReportStatusSerializer
1✔
156
    pagination_class = None
1✔
157
    filter_backends = (SearchFilter,)
1✔
158
    search_fields = ('status',)
1✔
159
    queryset = ReportStatus.objects.all().order_by('id')
1✔
160

161

162
class IdentifierResourceSelectList(generics.ListAPIView):
1✔
163
    serializer_class = IdentifierResourceSelectSerializer
1✔
164
    pagination_class = None
1✔
165
    filter_backends = (SearchFilter,)
1✔
166
    search_fields = ('resource',)
1✔
167
    queryset = IdentifierResource.objects.all().order_by('resource')
1✔
168

169

170
class PermissionTypeSelectList(generics.ListAPIView):
1✔
171
    serializer_class = PermissionTypeSelectSerializer
1✔
172
    pagination_class = None
1✔
173
    filter_backends = (SearchFilter,)
1✔
174
    search_fields = ('type',)
1✔
175
    queryset = PermissionType.objects.all().order_by('type')
1✔
176

177

178
class QFEHEALevelSelectList(generics.ListAPIView):
1✔
179
    serializer_class = QFEHEALevelSelectSerializer
1✔
180
    pagination_class = None
1✔
181
    filter_backends = (SearchFilter,)
1✔
182
    search_fields = ('level',)
1✔
183
    queryset = QFEHEALevel.objects.all().order_by('code')
1✔
184

185

186
class FlagSelectList(generics.ListAPIView):
1✔
187
    serializer_class = FlagSerializer
1✔
188
    pagination_class = None
1✔
189
    filter_backends = (SearchFilter,)
1✔
190
    search_fields = ('flag',)
1✔
191
    queryset = Flag.objects.all()
1✔
192

193

194
class QARequirementTypeSelectList(generics.ListAPIView):
1✔
195
    serializer_class = CountryQARequirementTypeSerializer
1✔
196
    pagination_class = None
1✔
197
    filter_backends = (SearchFilter,)
1✔
198
    search_fields = ('qa_requirement_type',)
1✔
199
    queryset = CountryQARequirementType.objects.all()
1✔
200

201

202
class AssessmentSelectList(generics.ListAPIView):
1✔
203
    serializer_class = AssessmentSerializer
1✔
204
    pagination_class = None
1✔
205
    filter_backends = (SearchFilter,)
1✔
206
    search_fields = ('assessment',)
1✔
207
    queryset = Assessment.objects.all().order_by('id')
1✔
208

209

210
class DegreeOutcomeSelectList(generics.ListAPIView):
1✔
211
    serializer_class = DegreeOutcomeSelectSerializer
1✔
212
    pagination_class = None
1✔
213
    filter_backends = (SearchFilter,)
1✔
214
    search_fields = ('outcome',)
1✔
215
    queryset = DegreeOutcome.objects.all().order_by('id')
1✔
216

217

218
class InstitutionHierarchicalRelationshipTypeSelect(generics.ListAPIView):
1✔
219
    serializer_class = InstitutionHierarchicalRelationshipTypeSerializer
1✔
220
    queryset = InstitutionHierarchicalRelationshipType.objects.all()
1✔
221
    pagination_class = None
1✔
222
    filter_backends = (SearchFilter,)
1✔
223
    search_fields = ('type',)
1✔
224

225

226
class InstitutionHistoricalRelationshipTypeSelect(APIView):
1✔
227

228
    @swagger_auto_schema(responses={'200': InstitutionHistoricalRelationshipTypeSerializer})
1✔
229
    def get(self, request, format=None):
1✔
UNCOV
230
        response = []
×
UNCOV
231
        for idx, relationship_type in enumerate(InstitutionHistoricalRelationshipType.objects.all().order_by('id')):
×
UNCOV
232
            response.append({
×
233
                'id': idx*2+1,
234
                'relationship_type_id': relationship_type.pk,
235
                'relationship': relationship_type.type_from,
236
                'institution_direction': 'source'
237
            })
UNCOV
238
            response.append({
×
239
                'id': idx*2+2,
240
                'relationship_type_id': relationship_type.pk,
241
                'relationship': relationship_type.type_to,
242
                'institution_direction': 'target'
243
            })
UNCOV
244
        return Response(data=response, status=200)
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc