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()
Example #8
0
    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()