28
loading...
This website collects cookies to deliver better user experience
class SharedMethods:
@staticmethod
def ExtractValuesById(DataCollection):
TeacherVal = Teacher.objects.get(id=DataCollection['Teacher']).name
RoomVal = Room.objects.get(id=DataCollection['Room']).RoomNumber
SubjectVal = Subject.objects.get(id=DataCollection['Subject']).name
ClassGroupVal = ClassGroup.objects.get(id=DataCollection['ClassGroup']).classCode
data = {
'id': DataCollection['id'],
'Day': DataCollection['Day'],
'Unit': DataCollection['Unit'],
'Teacher': TeacherVal,
'Room': RoomVal,
'Subject': SubjectVal,
'ClassGroup': ClassGroupVal
}
return data
currentOccupiedTeachers = Timeslot.objects.filter(Day=day, Unit=f'Unit{unit}')
currentTeacherData = TimeslotSerializer(currentOccupiedTeachers,many=True).data
occupiedTeacherIds = set([timeslot['Teacher'] for timeslot in currentTeacherData])
# Get Ids of all teachers
allTeachers = Teacher.objects.all()
allTeacherData = TeacherSerializer(allTeachers, many=True).data
allTeacherIds = set([teacher['id'] for teacher in allTeacherData])
freeTeachers = allTeacherIds - occupiedTeacherIds
FreeTeacher = Teacher.objects.filter(id__in=freeTeachers)
from django.db.models import Q
query = Q(Description='ICT') | Q(Description='Computing')
queryset = Room.objects.filter(query, id__in=outPutFilteredRooms)
Model.objects.filter()
doesn't preserve order. Hence we can use this handy trick:from django.db.models import When,Case
currentAmounts = self.__getCurrentSubjectTotals(class_, allSubjects)
subjectMissingIds = self.__getMissingSubjectAmounts(currentAmounts, pk)
preserveOrder = Case(*[When(pk=pk, then=pos) for pos,pk in enumerate(subjectMissingIds)])
subjectFrequencyQueryset = Subject.objects.filter(
yearGroup__name = f'Yr{pk}',
id__in=subjectMissingIds).order_by(preserveOrder)
serializedSubjects = SubjectSerializer(subjectFrequencyQueryset, many=True)
return Response(serializedSubjects.data)