def sinav_etkinlikleri(self, obj): sinav_etkinlikleri = aktif_sinav_listesi(obj) if len(sinav_etkinlikleri) > 0: self.current.task_data['sinav_kontrol'] = True self.current.task_data['sinav_etkinlikleri'] = map_etkinlik_hafta_gunleri( sinav_etkinlikleri) else: self.current.task_data['sinav_kontrol'] = False
def sinav_etkinlikleri(self, obj): sinav_etkinlikleri = aktif_sinav_listesi(obj) if len(sinav_etkinlikleri) > 0: self.current.task_data['sinav_kontrol'] = True self.current.task_data[ 'sinav_etkinlikleri'] = map_etkinlik_hafta_gunleri( sinav_etkinlikleri) else: self.current.task_data['sinav_kontrol'] = False
def derslik_sinav_programlarini_goster(self): """ Seçilen dersliğe ait sınavlar etkinliklerinin ders adını ve tarihi gösterir. """ room = Room.objects.get(self.current.input['form']['derslik']) s_etkinlikleri = [ s for s in SinavEtkinligi.objects.order_by('tarih') if room in s.SinavYerleri ] sinav_etkinlikleri = map_etkinlik_hafta_gunleri(s_etkinlikleri) hafta = dict(HAFTA) self.output['objects'] = [hafta] # Bir güne ait maximum etkinlik sayısı. max_etkinlik = max(map(len, sinav_etkinlikleri.values())) for i in range(max_etkinlik): sinav_etkinlik_list = OrderedDict({}) for hafta_gun in hafta.keys(): if hafta_gun in sinav_etkinlikleri: try: etkinlik = sinav_etkinlikleri[hafta_gun][i] sinav_etkinlik_list[hafta[hafta_gun]] = etkinlik except IndexError: sinav_etkinlik_list[hafta[hafta_gun]] = '' else: sinav_etkinlik_list[hafta[hafta_gun]] = '' item = { "type": "table-multiRow", "fields": sinav_etkinlik_list, "actions": False, 'key': '' } self.output['objects'].append(item) _form = JsonForm(title=_(u"%s Dersliğine Ait Sınav Programlar") % room.__unicode__()) _form.yazdir = fields.Button(_(u"Pdf Yazdır")) self.form_out(_form) self.current.output["meta"]["allow_actions"] = False
def derslik_ders_programini_goster(self): """ Seçilen dersliğe ait ders programlarını ekrana basar. """ room = Room.objects.get(self.current.input['form']['derslik']) hafta = dict(HAFTA) self.output['objects'] = [hafta] d_etkinlikleri = DersEtkinligi.objects.filter(room=room, published=True, donem=Donem.guncel_donem()) ders_etkinlikleri = map_etkinlik_hafta_gunleri( d_etkinlikleri.order_by( 'gun', 'baslangic_saat', 'bitis_saat','baslangic_dakika', 'bitis_dakika')) # Bir güne ait maximum etkinlik sayısı. max_etkinlik = max(map(len, ders_etkinlikleri.values())) for i in range(max_etkinlik): ders_etkinlikleri_dict = OrderedDict({}) for hafta_gun in hafta.keys(): if hafta_gun in ders_etkinlikleri: try: etkinlik = ders_etkinlikleri[hafta_gun][i] ders_etkinlikleri_dict[hafta[hafta_gun]] = etkinlik except IndexError: ders_etkinlikleri_dict[hafta[hafta_gun]] = "" else: ders_etkinlikleri_dict[hafta[hafta_gun]] = "" item = { "type": "table-multiRow", "fields": ders_etkinlikleri_dict, "actions": False, 'key': '' } self.output['objects'].append(item) _form = JsonForm(title=_(u"%s Dersliğine Ait Ders Programları") % room.__unicode__()) _form.yazdir = fields.Button(_(u'Pdf yazdır')) self.form_out(_form) self.current.output["meta"]["allow_actions"] = False
def derslik_ders_programini_goster(self): """ Seçilen dersliğe ait ders programlarını ekrana basar. """ room = Room.objects.get(self.current.input['form']['derslik']) hafta = dict(HAFTA) self.output['objects'] = [hafta] d_etkinlikleri = DersEtkinligi.objects.filter(room=room, published=True, donem=Donem.guncel_donem(self.current)) ders_etkinlikleri = map_etkinlik_hafta_gunleri( d_etkinlikleri.order_by( 'gun', 'baslangic_saat', 'bitis_saat','baslangic_dakika', 'bitis_dakika')) # Bir güne ait maximum etkinlik sayısı. max_etkinlik = max(map(len, ders_etkinlikleri.values())) for i in range(max_etkinlik): ders_etkinlikleri_dict = OrderedDict({}) for hafta_gun in hafta.keys(): if hafta_gun in ders_etkinlikleri: try: etkinlik = ders_etkinlikleri[hafta_gun][i] ders_etkinlikleri_dict[hafta[hafta_gun]] = etkinlik except IndexError: ders_etkinlikleri_dict[hafta[hafta_gun]] = "" else: ders_etkinlikleri_dict[hafta[hafta_gun]] = "" item = { "type": "table-multiRow", "fields": ders_etkinlikleri_dict, "actions": False, 'key': '' } self.output['objects'].append(item) _form = JsonForm(title=_(u"%s Dersliğine Ait Ders Programları") % room.__unicode__()) _form.yazdir = fields.Button(_(u'Pdf yazdır')) self.form_out(_form) self.current.output["meta"]["allow_actions"] = False
def derslik_sinav_programlarini_goster(self): """ Seçilen dersliğe ait sınavlar etkinliklerinin ders adını ve tarihi gösterir. """ room = Room.objects.get(self.current.input['form']['derslik']) s_etkinlikleri = [s for s in SinavEtkinligi.objects.order_by('tarih') if room in s.SinavYerleri] sinav_etkinlikleri = map_etkinlik_hafta_gunleri(s_etkinlikleri) hafta = dict(HAFTA) self.output['objects'] = [hafta] # Bir güne ait maximum etkinlik sayısı. max_etkinlik = max(map(len, sinav_etkinlikleri.values())) for i in range(max_etkinlik): sinav_etkinlik_list = OrderedDict({}) for hafta_gun in hafta.keys(): if hafta_gun in sinav_etkinlikleri: try: etkinlik = sinav_etkinlikleri[hafta_gun][i] sinav_etkinlik_list[hafta[hafta_gun]] = etkinlik except IndexError: sinav_etkinlik_list[hafta[hafta_gun]] = '' else: sinav_etkinlik_list[hafta[hafta_gun]] = '' item = { "type": "table-multiRow", "fields": sinav_etkinlik_list, "actions": False, 'key': '' } self.output['objects'].append(item) _form = JsonForm(title=_(u"%s Dersliğine Ait Sınav Programlar") % room.__unicode__()) _form.yazdir = fields.Button(_(u"Pdf Yazdır")) self.form_out(_form) self.current.output["meta"]["allow_actions"] = False
def test_okutman_sinav_programi_goruntule(self): user = User.objects.get(username='******') unit = user.role_set[0].role.unit sinav_etkinligi = SinavEtkinligi.objects.filter(bolum=unit, donem=Donem.guncel_donem()) with BlockSave(SinavEtkinligi, query_dict={'published': True}): for se in sinav_etkinligi: se.published = True se.save() # İlgili öğrenci bulunur. ogrenci = Ogrenci.objects.get(user=user) ogrenci_adi = ogrenci.__unicode__() sinav_etkinlikleri = aktif_sinav_listesi(ogrenci) for i in range(2): # Testi çalıştırılacak iş akışı seçilir. self.prepare_client('/ogrenci_sinav_programi_goruntule', user=user) cond = False if i == 0 else True # İlk test yayınlanmış sınav etkinliğinin olmaması durumudur. # Bu yüzden Sınav Etkinliği modelinin published fieldı False yapılır. # İkinci test yayınlanmış sınav etkinliğinin olması durumudur. # Bu yüzden Sınav Etkinliği modelinin published fieldı True yapılır. with BlockSave(SinavEtkinligi, query_dict={'published': cond}): for etkinlik in sinav_etkinlikleri: etkinlik.published = cond etkinlik.save() resp = self.client.post() # Yayınlanmış sınav etkinliği bulunmaması durumunda Uyarı vermesi beklenir. if i == 0: assert resp.json['msgbox']['title'] == "Uyarı!" # Yayınlanmış sınav etkinliği olması durumunda öğretim görevlisinin adının # bulunduğu bir sınav takvimi gösterilmesi beklenir. else: # Öğrencinin güncel dönemde aktif şube # sayısının 7 olması beklenir. assert len(ogrenci.donem_subeleri()) == 7 # Sınav etkinlikleri sayısının 7 olması beklenir. assert len(sinav_etkinlikleri) == 7 # Sınav etkinliklerinin tarihe göre küçükten büyüğe sıralandığı # kontrol edilir. assert sinav_etkinlikleri[0].tarih <= sinav_etkinlikleri[-1].tarih etkinlikler = map_etkinlik_hafta_gunleri(sinav_etkinlikleri) # Sınav etkinliklerinin etkinlikler sözlüğü içerisinde istenildiği # gibi yerleştirildiği kontrol edilir. for etkinlik in sinav_etkinlikleri: assert etkinlik.tarih.isoweekday() in etkinlikler assert etkinlik.__unicode__() in etkinlikler[etkinlik.tarih.isoweekday()] # Yayınlanmış sınav etkinliği olması durumunda öğretim görevlisinin adının # bulunduğu bir sınav takvimi gösterilmesi beklenir. assert ogrenci_adi in resp.json['forms']['schema']["title"] etkinlik_sayisi = 0 for i in range(1, len(resp.json['objects'])): for k, day in enumerate(resp.json['objects'][i]['fields']): if resp.json['objects'][i]['fields'][day]: # Ekranda gösterilen sınav etkinliklerinin istenildiği gibi # gösterildiği kontrol edilir. assert resp.json['objects'][i]['fields'][day] == etkinlikler[k + 1][i - 1] etkinlik_sayisi += 1 # Ekranda gösterilen sınav etkinliklerinin sayısının veri tabanından # dönen etkinlik sayısıyla eşit olduğu kontrol edilir. assert etkinlik_sayisi == len(sinav_etkinlikleri) sinav_etkinligi = SinavEtkinligi.objects.filter(bolum=unit, donem=Donem.guncel_donem()) with BlockSave(SinavEtkinligi, query_dict={'published': False}): for se in sinav_etkinligi: se.published = False se.save()
def test_ogrenci_sinav_programi_goruntule(self): user = User.objects.get(username='******') unit = user.role_set[0].role.unit sinav_etkinligi = SinavEtkinligi.objects.filter( bolum=unit, donem=Donem.guncel_donem()) with BlockSave(SinavEtkinligi, query_dict={'published': True}): for se in sinav_etkinligi: se.published = True se.save() # İlgili öğrenci bulunur. ogrenci = Ogrenci.objects.get(user=user) ogrenci_adi = ogrenci.__unicode__() sinav_etkinlikleri = aktif_sinav_listesi(ogrenci) for i in range(2): # Testi çalıştırılacak iş akışı seçilir. self.prepare_client('/ogrenci_sinav_programi_goruntule', user=user) cond = False if i == 0 else True # İlk test yayınlanmış sınav etkinliğinin olmaması durumudur. # Bu yüzden Sınav Etkinliği modelinin published fieldı False yapılır. # İkinci test yayınlanmış sınav etkinliğinin olması durumudur. # Bu yüzden Sınav Etkinliği modelinin published fieldı True yapılır. with BlockSave(SinavEtkinligi, query_dict={'published': cond}): for etkinlik in sinav_etkinlikleri: etkinlik.published = cond etkinlik.save() resp = self.client.post() # Yayınlanmış sınav etkinliği bulunmaması durumunda Uyarı vermesi beklenir. if i == 0: assert resp.json['msgbox']['title'] == "Uyarı!" # Yayınlanmış sınav etkinliği olması durumunda öğretim görevlisinin adının # bulunduğu bir sınav takvimi gösterilmesi beklenir. else: # Öğrencinin güncel dönemde aktif şube # sayısının 7 olması beklenir. assert len(ogrenci.donem_subeleri()) == 7 # Sınav etkinlikleri sayısının 7 olması beklenir. assert len(sinav_etkinlikleri) == 7 # Sınav etkinliklerinin tarihe göre küçükten büyüğe sıralandığı # kontrol edilir. assert sinav_etkinlikleri[0].tarih <= sinav_etkinlikleri[ -1].tarih etkinlikler = map_etkinlik_hafta_gunleri(sinav_etkinlikleri) # Sınav etkinliklerinin etkinlikler sözlüğü içerisinde istenildiği # gibi yerleştirildiği kontrol edilir. for etkinlik in sinav_etkinlikleri: assert etkinlik.tarih.isoweekday() in etkinlikler assert etkinlik.__unicode__() in etkinlikler[ etkinlik.tarih.isoweekday()] # Yayınlanmış sınav etkinliği olması durumunda öğretim görevlisinin adının # bulunduğu bir sınav takvimi gösterilmesi beklenir. assert ogrenci_adi in resp.json['forms']['schema']["title"] etkinlik_sayisi = 0 for i in range(1, len(resp.json['objects'])): for k, day in enumerate(resp.json['objects'][i]['fields']): if resp.json['objects'][i]['fields'][day]: # Ekranda gösterilen sınav etkinliklerinin istenildiği gibi # gösterildiği kontrol edilir. assert resp.json['objects'][i]['fields'][ day] == etkinlikler[k + 1][i - 1] etkinlik_sayisi += 1 # Ekranda gösterilen sınav etkinliklerinin sayısının veri tabanından # dönen etkinlik sayısıyla eşit olduğu kontrol edilir. assert etkinlik_sayisi == len(sinav_etkinlikleri) sinav_etkinligi = SinavEtkinligi.objects.filter( bolum=unit, donem=Donem.guncel_donem()) with BlockSave(SinavEtkinligi, query_dict={'published': False}): for se in sinav_etkinligi: se.published = False se.save()