示例#1
0
    def goster(self):
        """
        AkademikTakvim modelinden kullanıcıya gösterilecek takvime erişir ve bir tablo
        halinde çıktıya ekler.

        Akademik Takvim öğelerinin (takvim etkinlikleri) sırlaması önemli olduğu için
        OrderedDict kullanılmıştır. Data bu sözlüğün içinde sıralandığı haliyle
        seriyalize edilir.

        AKADEMIK_TAKVIM_ETKINLIKLERI önceden tanımlanmış ve sıralanmış bir etkinlikler
        toplamıdır. AkademikTakvim modeli ile birlikte models.ogrenci modülü içinde
        sıralı olarak tanımlanmıştır. Örn::

            AKADEMIK_TAKVIM_ETKINLIKLERI = [
            ('1', 'Yeni Öğrenci Ön Kayıt'),
            ('2', 'Güz Dönem Başlangıcı'),
            ('3', 'Derslerin Acılması'),
            ('4', 'Subelendirme ve Ders Programının Ilan Edilmesi'),

            ...
            ('53', 'Yarıyıl Sınavı Not Giriş'),
            ('54', 'Yarıyıl Sınavı Notlarının Öğrenciye Yayınlanmasi'),
            ('55', 'Öğretim Elemanı Yoklama Girişi'),
            ]

        Kayıtların herbiri bu öğeler için belirli bir tarih veya tarih aralığına denk gelmektedir.

        """
        self.current.output['client_cmd'] = [
            'show',
        ]
        etkinlikler = []

        ogretim_yili = OgretimYili.objects.get(
            yil=Donem.guncel_donem().baslangic_tarihi.year)
        akademik_takvim = get_akademik_takvim(self.current.role.unit,
                                              ogretim_yili)

        for e in Takvim.objects.order_by().filter(
                akademik_takvim=akademik_takvim):
            etkinlik = OrderedDict({})
            etkinlik[_(u'Etkinlik')] = dict(AKADEMIK_TAKVIM_ETKINLIKLERI).get(
                str(e.etkinlik), '')
            etkinlik[_(u'Başlangıç')] = format_datetime(
                e.baslangic) if e.baslangic else ''
            etkinlik[_(u'Bitiş')] = format_datetime(e.bitis) if e.bitis else ''
            etkinlikler.append(etkinlik)

        # cikti multirow table seklindedir.
        self.output['object'] = {
            "type": "table-multiRow",
            "fields": etkinlikler
        }
示例#2
0
    def goster(self):
        """
        AkademikTakvim modelinden kullanıcıya gösterilecek takvime erişir ve bir tablo
        halinde çıktıya ekler.

        Akademik Takvim öğelerinin (takvim etkinlikleri) sırlaması önemli olduğu için
        OrderedDict kullanılmıştır. Data bu sözlüğün içinde sıralandığı haliyle
        seriyalize edilir.

        AKADEMIK_TAKVIM_ETKINLIKLERI önceden tanımlanmış ve sıralanmış bir etkinlikler
        toplamıdır. AkademikTakvim modeli ile birlikte models.ogrenci modülü içinde
        sıralı olarak tanımlanmıştır. Örn::

            AKADEMIK_TAKVIM_ETKINLIKLERI = [
            ('1', 'Yeni Öğrenci Ön Kayıt'),
            ('2', 'Güz Dönem Başlangıcı'),
            ('3', 'Derslerin Acılması'),
            ('4', 'Subelendirme ve Ders Programının Ilan Edilmesi'),

            ...
            ('53', 'Yarıyıl Sınavı Not Giriş'),
            ('54', 'Yarıyıl Sınavı Notlarının Öğrenciye Yayınlanmasi'),
            ('55', 'Öğretim Elemanı Yoklama Girişi'),
            ]

        Kayıtların herbiri bu öğeler için belirli bir tarih veya tarih aralığına denk gelmektedir.

        """
        self.current.output['client_cmd'] = ['show', ]
        etkinlikler = []

        ogretim_yili = OgretimYili.objects.get(yil=Donem.guncel_donem().baslangic_tarihi.year)
        akademik_takvim = get_akademik_takvim(self.current.role.unit, ogretim_yili)

        for e in Takvim.objects.filter(akademik_takvim=akademik_takvim):
            etkinlik = OrderedDict({})
            etkinlik[_(u'Etkinlik')] = dict(AKADEMIK_TAKVIM_ETKINLIKLERI).get(str(e.etkinlik), '')
            etkinlik[_(u'Başlangıç')] = format_datetime(e.baslangic) if e.baslangic else ''
            etkinlik[_(u'Bitiş')] = format_datetime(e.bitis) if e.bitis else ''
            etkinlikler.append(etkinlik)

        # cikti multirow table seklindedir.
        self.output['object'] = {
            "type": "table-multiRow",
            "fields": etkinlikler
        }
示例#3
0
def resmi_tatil_gunleri_getir(birim_unit, yil, ay):
    from ulakbus.models.ogrenci import Takvim, Donem
    from ulakbus.lib.common import get_akademik_takvim

    baslangic, bitis = yil_ve_aya_gore_ilk_ve_son_gun(yil, ay)
    resmi_tatil_list = []
    donem_list = Donem.takvim_ayina_rastlayan_donemler(yil, ay)
    for donem in donem_list:
        akademik_takvim = get_akademik_takvim(birim_unit, donem.ogretim_yili)
        tatil_list = []
        for resmi_tatil in Takvim.objects.filter(
            akademik_takvim=akademik_takvim, resmi_tatil=True, baslangic__gte=baslangic, bitis__lte=bitis
        ):
            for gun in zaman_araligi(resmi_tatil.baslangic, resmi_tatil.bitis):
                tatil_list.append(gun.day)
        resmi_tatil_list.append(tatil_list)

    return resmi_tatil_list
示例#4
0
def resmi_tatil_gunleri_getir(birim_unit, yil, ay):
    from ulakbus.models.ogrenci import Takvim, Donem
    from ulakbus.lib.common import get_akademik_takvim

    baslangic, bitis = yil_ve_aya_gore_ilk_ve_son_gun(yil, ay)
    resmi_tatil_list = []
    donem_list = Donem.takvim_ayina_rastlayan_donemler(yil, ay)
    for donem in donem_list:
        akademik_takvim = get_akademik_takvim(birim_unit, donem.ogretim_yili)
        tatil_list = []
        for resmi_tatil in Takvim.objects.filter(
                akademik_takvim=akademik_takvim,
                resmi_tatil=True,
                baslangic__gte=baslangic,
                bitis__lte=bitis):
            for gun in zaman_araligi(resmi_tatil.baslangic, resmi_tatil.bitis):
                tatil_list.append(gun.day)
        resmi_tatil_list.append(tatil_list)

    return resmi_tatil_list
示例#5
0
def ders_etkinligine_gore_tarih_araligi(donem_list, yil, ay, birim_unit):
    tarih_araligi = []

    # Hangi dönemin ders başlangıç ve bitiş tarihinin
    # dikkate alınacağını belirlemek için Akademik Takvim'de
    # bulunan etkinlik döneme göre seçilir.

    for donem in donem_list:

        # İçinde bulunulan dönemin ders başlangıç ve bitiş tarihlerini
        # bulmak için kullanılır.

        etkinlik = 66 if 'Güz' in donem.ad else 67 if 'Bahar' in donem.ad else 68

        # Kapsanan donemin ders baslangic tarihi
        akademik_takvim = get_akademik_takvim(birim_unit, donem.ogretim_yili)
        ders_bas_tarih = Takvim.objects.get(
            akademik_takvim=akademik_takvim,
            etkinlik=etkinlik).baslangic.date()

        # Kapsanan donemin ders bitis tarihi
        ders_bit_tarih = Takvim.objects.get(akademik_takvim=akademik_takvim,
                                            etkinlik=etkinlik).bitis.date()

        # Seçilen ayın ilk günü = 01.08.2016
        # Seçilen ayın son günü = 31.08.2016
        ay_baslangic, ay_bitis = yil_ve_aya_gore_ilk_ve_son_gun(yil, ay)

        # 08.08.2016 > 01.08.2016
        # baslangic_tarih = 08.08.2016
        # dönem başlangıcı ve ders başlangıcı seçilen ayın içindedir

        # 05.09.2016 > 01.08.2016
        # baslangic_tarih = 31.08.2016
        # dönem başlangıcı seçilen ayın içindedir ama ders başlangıcı diğer aya sarkmıştır

        # 15.07.2016 < 01.08.2016
        # baslangic_tarih = 01.08.2016
        # dönem başlangıcı ve ders başlangıcı seçilen aydan öncedir

        # 15.08.2016 < 31.08.2016
        # bitis_tarih = 15.08.2016
        # dönem bitişi ve ders bitişi seçilen ayın içindedir

        # 25.07.2016 < 31.08.2016
        # bitis_tarih = 01.08.2016
        # dönem bitişi seçilen ayın içindedir ama ders bitişi bir önceki aydır

        # 15.09.2016 > 31.08.2016
        # bitis_tarih = 31.08.2016
        # dönem bitişi ve ders bitişi seçilen aydan sonradır

        if not ders_bas_tarih > ay_baslangic:
            baslangic_tarih = ay_baslangic.day
        elif ders_bas_tarih.month == ay:
            baslangic_tarih = ders_bas_tarih.day
        else:
            baslangic_tarih = ay_bitis.day

        if not ders_bit_tarih < ay_bitis:
            bitis_tarih = ay_bitis.day
        elif ders_bit_tarih.month == ay:
            bitis_tarih = ders_bit_tarih.day
        else:
            bitis_tarih = ay_baslangic.day

        # Eğer tuple lardan birisi (1,1) ya da (31,31) gibiyse bu
        # seçilen ayın içinde bir döneme rast geldiğini fakat ders etkinliğine
        # rast gelmediğini gösterir, mesela Temmuz ayının seçildiğini varsayarsak
        # yaz dönem başlangıcı 25 Temmuz olsun, ama ders etkinliği 3 Ağustosa sarkmış
        # olsun. Bu durumda ders etkinlikleri seçilen aydan sonraki ayda olduğu için,
        # (31,31) tuple'ı döner, böylelikle hesaplama yapılırken döngünün dönmemesi
        # sağlanmış olur. Hesaplama yapılırken günlerin düzgün hesaplanabilmesi için,
        # tuple'ın ikinci elemanı bir arttırılır. Bunun içinde eğer tuple'ın iki elemanı
        # da eşitse hesaplama yapılırken bir arttırılacağından burada ikinci eleman
        # bir azaltılır.
        if baslangic_tarih == bitis_tarih:
            bitis_tarih -= 1
        tarih_araligi.append((baslangic_tarih, bitis_tarih))

    return tarih_araligi
def ders_etkinligine_gore_tarih_araligi(donem_list, yil, ay, birim_unit):
    tarih_araligi = []

    # Hangi dönemin ders başlangıç ve bitiş tarihinin
    # dikkate alınacağını belirlemek için Akademik Takvim'de
    # bulunan etkinlik döneme göre seçilir.

    for donem in donem_list:

        # İçinde bulunulan dönemin ders başlangıç ve bitiş tarihlerini
        # bulmak için kullanılır.

        etkinlik = 66 if 'Güz' in donem.ad else 67 if 'Bahar' in donem.ad else 68

        # Kapsanan donemin ders baslangic tarihi
        akademik_takvim = get_akademik_takvim(birim_unit, donem.ogretim_yili)
        ders_bas_tarih = Takvim.objects.get(akademik_takvim=akademik_takvim,
                                            etkinlik=etkinlik).baslangic.date()

        # Kapsanan donemin ders bitis tarihi
        ders_bit_tarih = Takvim.objects.get(akademik_takvim=akademik_takvim,
                                            etkinlik=etkinlik).bitis.date()

        # Seçilen ayın ilk günü = 01.08.2016
        # Seçilen ayın son günü = 31.08.2016
        ay_baslangic, ay_bitis = yil_ve_aya_gore_ilk_ve_son_gun(yil, ay)

        # 08.08.2016 > 01.08.2016
        # baslangic_tarih = 08.08.2016
        # dönem başlangıcı ve ders başlangıcı seçilen ayın içindedir

        # 05.09.2016 > 01.08.2016
        # baslangic_tarih = 31.08.2016
        # dönem başlangıcı seçilen ayın içindedir ama ders başlangıcı diğer aya sarkmıştır

        # 15.07.2016 < 01.08.2016
        # baslangic_tarih = 01.08.2016
        # dönem başlangıcı ve ders başlangıcı seçilen aydan öncedir

        # 15.08.2016 < 31.08.2016
        # bitis_tarih = 15.08.2016
        # dönem bitişi ve ders bitişi seçilen ayın içindedir

        # 25.07.2016 < 31.08.2016
        # bitis_tarih = 01.08.2016
        # dönem bitişi seçilen ayın içindedir ama ders bitişi bir önceki aydır

        # 15.09.2016 > 31.08.2016
        # bitis_tarih = 31.08.2016
        # dönem bitişi ve ders bitişi seçilen aydan sonradır

        if not ders_bas_tarih > ay_baslangic:
            baslangic_tarih = ay_baslangic.day
        elif ders_bas_tarih.month == ay:
            baslangic_tarih = ders_bas_tarih.day
        else:
            baslangic_tarih = ay_bitis.day

        if not ders_bit_tarih < ay_bitis:
            bitis_tarih = ay_bitis.day
        elif ders_bit_tarih.month == ay:
            bitis_tarih = ders_bit_tarih.day
        else:
            bitis_tarih = ay_baslangic.day

        # Eğer tuple lardan birisi (1,1) ya da (31,31) gibiyse bu
        # seçilen ayın içinde bir döneme rast geldiğini fakat ders etkinliğine
        # rast gelmediğini gösterir, mesela Temmuz ayının seçildiğini varsayarsak
        # yaz dönem başlangıcı 25 Temmuz olsun, ama ders etkinliği 3 Ağustosa sarkmış
        # olsun. Bu durumda ders etkinlikleri seçilen aydan sonraki ayda olduğu için,
        # (31,31) tuple'ı döner, böylelikle hesaplama yapılırken döngünün dönmemesi
        # sağlanmış olur. Hesaplama yapılırken günlerin düzgün hesaplanabilmesi için,
        # tuple'ın ikinci elemanı bir arttırılır. Bunun içinde eğer tuple'ın iki elemanı
        # da eşitse hesaplama yapılırken bir arttırılacağından burada ikinci eleman
        # bir azaltılır.
        if baslangic_tarih == bitis_tarih:
            bitis_tarih -= 1
        tarih_araligi.append((baslangic_tarih, bitis_tarih))

    return tarih_araligi