def _zamanlari_cikar(self, writer, ogretim_elemani, tur, bolum): """Okutmanın bölüme ait zaman planına göre zaman seçenekleri çıkar Args: writer: XML çıktısını yazan obje okutman (Okutman): Zaman planları kontrol edilecek eğitim görevlisi tur (Ders.DerslikTurleri): Zamanların çıkarıldığı dersin ders etkinliği bolum (Unit): Uygun zamanları çıkartan bölüm """ # TODO: Eğer öğretim elemanı birden fazla bölümde ders veriyorsa, diğer bölümlerde ders verdiği ders saatleri burada export edilmemeli plan = OgElemaniZamanPlani.objects.get(birim=bolum, okutman=ogretim_elemani) # Sadece uygun olan zaman cetvelleri cetveller = list(ZamanCetveli.objects.filter(birim=bolum, ogretim_elemani_zaman_plani=plan).exclude(durum=3)) for cetvel in cetveller: dilim = cetvel.zaman_dilimi zaman = timedelta(hours=int(dilim.baslama_saat), minutes=int(dilim.baslama_dakika)) bitis = timedelta(hours=int(dilim.bitis_saat), minutes=int(dilim.bitis_dakika)) gun = self._GUNLER[cetvel.gun] sure = int(tur.ders_saati) ders_araligi = timedelta(minutes=int(dilim.ders_araligi)) # Bitiş zamanı gelene kadar, zamanları ekle while zaman < bitis: # Pazar günü gece yarısını geçen zaman çıkarırsak solver hata veriyor if cetvel.gun == 7 and (zaman + timedelta(hours=sure)) >= timedelta(hours=24): break writer.text_element('time', attrs={'days': gun, 'start': '%i' % timedelta2slot(zaman), 'length': '%i' % saat2slot(sure), 'breaktime': '%i' % dilim.ara_suresi, 'pref': '%i' % cetvel.durum }) zaman += ders_araligi
def prepare_data(self, writer): bolum = Unit.objects.get(yoksis_no=self.manager.args.bolum) with writer.element('timetable', { 'version': '2.4', 'initiative': '%s' % self.uni, 'term': '%i%s' % (_year(), self.term.ad), 'created': '%s' % str(date.today()), 'nrDays': '7', 'slotsPerDay': '%i' % saat2slot(24)}): self.export_rooms(writer) self.export_classes(writer, bolum)
def prepare_data(self, writer): bolum = Unit.objects.get(yoksis_no=self.manager.args.bolum) with writer.element( 'timetable', { 'version': '2.4', 'initiative': '%s' % self.uni, 'term': '%i%s' % (_year(), self.term.ad), 'created': '%s' % str(date.today()), 'nrDays': '7', 'slotsPerDay': '%i' % saat2slot(24) }): self.export_rooms(writer) self.export_classes(writer, bolum)
def _zamanlari_cikar(self, writer, ogretim_elemani, tur, bolum): """Okutmanın bölüme ait zaman planına göre zaman seçenekleri çıkar Args: writer: XML çıktısını yazan obje okutman (Okutman): Zaman planları kontrol edilecek eğitim görevlisi tur (Ders.DerslikTurleri): Zamanların çıkarıldığı dersin ders etkinliği bolum (Unit): Uygun zamanları çıkartan bölüm """ # TODO: Eğer öğretim elemanı birden fazla bölümde ders veriyorsa, diğer bölümlerde ders verdiği ders saatleri burada export edilmemeli plan = OgElemaniZamanPlani.objects.get(birim=bolum, okutman=ogretim_elemani) # Sadece uygun olan zaman cetvelleri cetveller = list( ZamanCetveli.objects.filter( birim=bolum, ogretim_elemani_zaman_plani=plan).exclude(durum=3)) for cetvel in cetveller: dilim = cetvel.zaman_dilimi zaman = timedelta(hours=int(dilim.baslama_saat), minutes=int(dilim.baslama_dakika)) bitis = timedelta(hours=int(dilim.bitis_saat), minutes=int(dilim.bitis_dakika)) gun = self._GUNLER[cetvel.gun] sure = int(tur.ders_saati) ders_araligi = timedelta(minutes=int(dilim.ders_araligi)) # Bitiş zamanı gelene kadar, zamanları ekle while zaman < bitis: # Pazar günü gece yarısını geçen zaman çıkarırsak solver hata veriyor if cetvel.gun == 7 and ( zaman + timedelta(hours=sure)) >= timedelta(hours=24): break writer.text_element('time', attrs={ 'days': gun, 'start': '%i' % timedelta2slot(zaman), 'length': '%i' % saat2slot(sure), 'breaktime': '%i' % dilim.ara_suresi, 'pref': '%i' % cetvel.durum }) zaman += ders_araligi