devilry.devilry_search
— Search for Devilry
This app provides a search API for Devilry.
How we handle object level permissions
We maintain a list of admin_ids
on Node, Subject, Period, Assignment and AssignmentGroup. On
AssignmentGroup, we also maintain a list of examiner_ids
and student_ids
. When we perform
a search, we filter on these ids (the requesting user must be in an id-list). I.E:
When we search for assignments, we first filter on
admin_ids=request.user.id
, then we perform the search.
Protection of anonymous data
We do not include any sensitive data in the main search index:
No student names on anonymous assignments — Examiners should not be able to search for these because they are only supposed to know the candidate ID.
No examiner names on anonymous assignments — Students should not be able to know who their examiner is.
Tags — Only examiners and admins are supposted to see tags.
This is handled in the devilry.apps.core.search_indexes.AssignmentGroupIndex
, and the exclusions
is handled by the text-template in the search/indexes/core/assignmentgroup_text.txt
template
(located in devilry/apps/core/templates/
).
We include the excluded data in their own fields in AssignmentGroupIndexes
.
The fields, examiners
, tags
and candidates
, may be used to search for
the excluded terms.
Limitations
We do not currently use the excluded fields mentioned in the previous section in the search API. This means that it is:
not possible to search for AssignmentGroups by username or examiner on anonymous assignments.
not possible to search for AssignmentGroups by tags.