def donem_kontrol(self):
        """
        Seçilen ay ve yıla ait dönem olup olmadığını kontrol eder.
        """
        secilen_ay = self.input['form']['ay_sec']
        self.current.task_data["yil"] = self.input['form']['yil_sec']
        self.current.task_data["ay"] = secilen_ay

        # guncel olan ayın ismi getirilir.
        self.current.task_data["ay_isim"] = dict(AYLAR).get(secilen_ay)

        # TODO: aktif donem ve oncesine rastlayan donem varmi diye kontrol etmeliyiz.
        donem_list = Donem.takvim_ayina_rastlayan_donemler(self.current.task_data["yil"],
                                                           self.current.task_data["ay"])

        self.current.task_data['donem_sayi'] = True if donem_list else False
Beispiel #2
0
    def donem_kontrol(self):
        """
        Seçilen ay ve yıla ait dönem olup olmadığını kontrol eder.
        """
        secilen_ay = self.input['form']['ay_sec']
        self.current.task_data["yil"] = self.input['form']['yil_sec']
        self.current.task_data["ay"] = secilen_ay

        # guncel olan ayın ismi getirilir.
        self.current.task_data["ay_isim"] = dict(AYLAR).get(secilen_ay)

        # TODO: aktif donem ve oncesine rastlayan donem varmi diye kontrol etmeliyiz.
        donem_list = Donem.takvim_ayina_rastlayan_donemler(
            self.current.task_data["yil"], self.current.task_data["ay"])

        self.current.task_data['donem_sayi'] = True if donem_list else False
    def donem_kontrol(self):
        """
        Seçilen ay ve yıla ait dönem olup olmadığını kontrol eder.
        """

        self.current.task_data["yil"] = YIL[self.input['form']['yil_sec']][1]
        self.current.task_data["ay"] = self.input['form']['ay_sec']
        # guncel olan ayın ismi getirilir.
        self.current.task_data["ay_isim"] = AYLAR[self.input['form']['ay_sec'] - 1][1]

        takvim = calendar.monthrange(self.current.task_data["yil"], self.current.task_data["ay"])
        donem_list = Donem.takvim_ayina_rastlayan_donemler(self.current.task_data["yil"], self.current.task_data["ay"], takvim)

        if len(donem_list) > 0:
            self.current.task_data['donem_sayi'] = True
        else:
            self.current.task_data['donem_sayi'] = False
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
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
    def donem_kontrol(self):
        """
        Seçilen ay ve yıla ait dönem olup olmadığını kontrol eder.
        """

        self.current.task_data["yil"] = YIL[self.input['form']['yil_sec']][1]
        self.current.task_data["ay"] = self.input['form']['ay_sec']
        # guncel olan ayın ismi getirilir.
        self.current.task_data["ay_isim"] = AYLAR[self.input['form']['ay_sec']
                                                  - 1][1]

        takvim = calendar.monthrange(self.current.task_data["yil"],
                                     self.current.task_data["ay"])
        donem_list = Donem.takvim_ayina_rastlayan_donemler(
            self.current.task_data["yil"], self.current.task_data["ay"],
            takvim)

        if len(donem_list) > 0:
            self.current.task_data['donem_sayi'] = True
        else:
            self.current.task_data['donem_sayi'] = False
Beispiel #7
0
    def ucret_hesapla(self):
        """
        Seçilen ay ve yıla göre, seçilen her bir öğretim elemanının
        resmi tatil ve izinleri dikkate alarak aylık ders saati planlamasını
        yapar
        """
        # Ders seçim türüne göre ayarlamalar yapılır.
        ek_ders, ders_turu = (
            True, 'Ek') if self.input['form']['ek_ders'] == 1 else (False, '')

        yil = self.current.task_data["yil"]  # girilen yil
        ay = self.current.task_data["ay"]  # girilen ayin orderi
        ay_isim = self.current.task_data["ay_isim"]  # ayin adi

        # verilen ayın son gunu bulunur 28,31 gibi
        ilk, son = yil_ve_aya_gore_ilk_ve_son_gun(yil, ay)
        ayin_son_gunu = son.day

        birim_unit = self.current.role.unit

        # Secilen ay hangi donemleri kapsiyor, kac donemi kapsıyorsa
        # o donemleri dondürür.
        donem_list = Donem.takvim_ayina_rastlayan_donemler(yil, ay)

        # Resmi tatillerin gununu (23, 12, 8) gibi döndürür.
        resmi_tatil_list = resmi_tatil_gunleri_getir(birim_unit, yil, ay)

        # Kapsadığı dönemlere göre ders baslangıc ve bitis tarihlerini
        # baz alarak kapsadığı her bir dönemin seçilen ayda hangi gün
        # aralıklarını kapsadığı bilgisini tuple olarak dondurur. Bir
        # dönemi kapsıyorsa bir tuple, iki dönemi kapsıyorsa iki tuple
        # döner. (1,12) (19,31) gibi
        tarih_araligi = ders_etkinligine_gore_tarih_araligi(
            donem_list, yil, ay, birim_unit)

        table_head = ['Öğretim Elemanı']
        table_head.extend([str(d) for d in range(1, ayin_son_gunu + 1)])
        table_head.append('Toplam')

        self.output['objects'] = [table_head]

        # Seçilen okutmanların bulunmaması demek,
        title = _(
            u"%(baslik)s %(yil)s-%(ay)s AYI %(ders)s DERS PUANTAJ TABLOSU") % {
                'baslik': self.current.task_data["title"],
                'yil': yil,
                'ay': ay_isim.upper(),
                'ders': ders_turu.upper(),
            }

        _form = PuantajFormu(title=title)
        self.form_out(_form)

        for secilen_okutman in self.current.task_data["secilen_okutmanlar"]:
            okutman = Okutman.objects.get(secilen_okutman['key'])

            # Seçilen okutmanın İzin ve Ücretsiz İzinlerini dikkate alarak, verilen ayda
            # hangi günler izinli olduğunu liste halinde döndürmeye yarayan method
            # [17,18,19] gibi
            personel_izin_list = personel_izin_gunlerini_getir(
                okutman, yil, ay)

            # Verilen döneme ve okutmana göre, haftada hangi gün kaç saat dersi
            # (seçilen seçeneğe göre ders veya ek ders) olduğunu gösteren
            # dictionarylerden oluşan liste, seçilen yıl ve ay bir dönemi kapsıyorsa
            # bir dict, iki dönemi kapsıyorsa iki dict döner.
            ders_etkinlik_list = doneme_gore_okutman_etkinlikleri(
                donem_list, okutman, ek_ders)

            # Bulunan tarih araliklarina, okutmanın aylık ders etkinliklerine göre
            # ayın hangi gününde dersi varsa kaç saat dersi olduğu bilgisi,
            # izinliyse İ, resmi tatilse R bilgisini bir dictionary e doldurur.
            okutman_aylik_plan, ders_saati = okutman_aylik_plani(
                donem_list, ders_etkinlik_list, resmi_tatil_list,
                personel_izin_list, tarih_araligi, yil, ay)

            # Okutmanın oluşturulan bilgilerinin ekrana basılacağı şeklinin oluşturulması
            okutman_bilgi_listesi = okutman_bilgileri_doldur(
                okutman, ayin_son_gunu, okutman_aylik_plan, ders_saati)

            item = {
                "type": "table-multiRow",
                "fields": okutman_bilgi_listesi,
                "actions": False,
            }

            self.output['objects'].append(item)
    def ucret_hesapla(self):
        """
        Seçilen ay ve yıla göre, seçilen her bir öğretim elemanının
        resmi tatil ve izinleri dikkate alarak aylık ders saati planlamasını
        yapar
        """
        # Ders seçim türüne göre ayarlamalar yapılır.
        ek_ders, ders_turu = (True, 'Ek') if self.input['form']['ek_ders'] == 1 else (False, '')

        yil = self.current.task_data["yil"]  # girilen yil
        ay = self.current.task_data["ay"]  # girilen ayin orderi
        ay_isim = self.current.task_data["ay_isim"]  # ayin adi

        # verilen ayın son gunu bulunur 28,31 gibi
        ilk, son = yil_ve_aya_gore_ilk_ve_son_gun(yil, ay)
        ayin_son_gunu = son.day

        birim_unit = self.current.role.unit

        # Secilen ay hangi donemleri kapsiyor, kac donemi kapsıyorsa
        # o donemleri dondürür.
        donem_list = Donem.takvim_ayina_rastlayan_donemler(yil, ay)

        # Resmi tatillerin gununu (23, 12, 8) gibi döndürür.
        resmi_tatil_list = resmi_tatil_gunleri_getir(birim_unit, yil, ay)

        # Kapsadığı dönemlere göre ders baslangıc ve bitis tarihlerini
        # baz alarak kapsadığı her bir dönemin seçilen ayda hangi gün
        # aralıklarını kapsadığı bilgisini tuple olarak dondurur. Bir
        # dönemi kapsıyorsa bir tuple, iki dönemi kapsıyorsa iki tuple
        # döner. (1,12) (19,31) gibi
        tarih_araligi = ders_etkinligine_gore_tarih_araligi(donem_list, yil, ay, birim_unit)

        table_head = ['Öğretim Elemanı']
        table_head.extend([str(d) for d in range(1, ayin_son_gunu + 1)])
        table_head.append('Toplam')

        self.output['objects'] = [table_head]

        # Seçilen okutmanların bulunmaması demek,
        title = _(u"%(baslik)s %(yil)s-%(ay)s AYI %(ders)s DERS PUANTAJ TABLOSU") % {
            'baslik': self.current.task_data["title"],
            'yil': yil,
            'ay': ay_isim.upper(),
            'ders': ders_turu.upper(),
        }

        _form = PuantajFormu(title=title)
        self.form_out(_form)

        for secilen_okutman in self.current.task_data["secilen_okutmanlar"]:
            okutman = Okutman.objects.get(secilen_okutman['key'])

            # Seçilen okutmanın İzin ve Ücretsiz İzinlerini dikkate alarak, verilen ayda
            # hangi günler izinli olduğunu liste halinde döndürmeye yarayan method
            # [17,18,19] gibi
            personel_izin_list = personel_izin_gunlerini_getir(okutman, yil, ay)

            # Verilen döneme ve okutmana göre, haftada hangi gün kaç saat dersi
            # (seçilen seçeneğe göre ders veya ek ders) olduğunu gösteren
            # dictionarylerden oluşan liste, seçilen yıl ve ay bir dönemi kapsıyorsa
            # bir dict, iki dönemi kapsıyorsa iki dict döner.
            ders_etkinlik_list = doneme_gore_okutman_etkinlikleri(donem_list, okutman, ek_ders)

            # Bulunan tarih araliklarina, okutmanın aylık ders etkinliklerine göre
            # ayın hangi gününde dersi varsa kaç saat dersi olduğu bilgisi,
            # izinliyse İ, resmi tatilse R bilgisini bir dictionary e doldurur.
            okutman_aylik_plan, ders_saati = okutman_aylik_plani(donem_list, ders_etkinlik_list,
                                                                 resmi_tatil_list,
                                                                 personel_izin_list,
                                                                 tarih_araligi, yil, ay)

            # Okutmanın oluşturulan bilgilerinin ekrana basılacağı şeklinin oluşturulması
            okutman_bilgi_listesi = okutman_bilgileri_doldur(okutman, ayin_son_gunu,
                                                             okutman_aylik_plan, ders_saati)

            item = {
                "type": "table-multiRow",
                "fields": okutman_bilgi_listesi,
                "actions": False,
            }

            self.output['objects'].append(item)
    def ucret_hesapla(self):
        """
        Seçilen ay ve yıla göre, seçilen her bir öğretim elemanının
        resmi tatil ve izinleri dikkate alarak aylık ders saati planlamasını
        yapar
        """
        okutman_personel = Personel.objects.get(user=self.current.user)
        okutman = Okutman.objects.get(personel=okutman_personel)
        okutman_adi = okutman.ad + ' ' + okutman.soyad

        yil = self.current.task_data["yil"]  # girilen yil
        ay = self.current.task_data["ay"]  # girilen ayin orderi
        ay_isim = self.current.task_data["ay_isim"]  # ayin adi

        takvim = calendar.monthrange(yil, ay)
        # verilen yıl ve aya göre tuple şeklinde ayın ilk gününü
        # ve ayın kaç gün sürdüğü bilgisini döndürür.
        # Ayın ilk günü = 0-6 Pazt-Pazar
        # 2016 yılı Temmuz ayı için = (4,31)

        birim_no = self.current.role.unit.yoksis_no  # rolden gelecek
        birim_unit = Unit.objects.get(yoksis_no=birim_no)

        # Secilen ay hangi donemleri kapsiyor, kac donemi kapsıyorsa
        # o donemleri dondürür.
        donem_list = Donem.takvim_ayina_rastlayan_donemler(yil, ay, takvim)

        # Resmi tatilerin gununu (23, 12, 8) gibi ve doneme gore akademik takvim donduruyor
        resmi_tatil_list, akademik_takvim_list = Takvim.resmi_tatil_gunleri_getir(donem_list, birim_unit, yil, ay)

        # Kapsadığı dönemlere göre ders baslangıc ve bitis tarihlerini
        # baz alarak kapsadığı her bir dönemin seçilen ayda hangi gün
        # aralıklarını kapsadığı bilgisini tuple olarak dondurur. Bir
        # dönemi kapsıyorsa bir tuple, iki dönemi kapsıyorsa iki tuple
        # döner. (4,12) (19,31) gibi
        tarih_araligi = DU.donem_aralik_dondur(donem_list, yil, ay, takvim, akademik_takvim_list)

        object_list = ['Öğretim Elemanı']
        tarih_list = list(range(1, takvim[1] + 1))
        for tarih in tarih_list:
            object_list.append(' ' + str(tarih))

        # object_list = ['Ogretim Elemani', 'bir', 'iki', 'uc']
        _form = JsonForm(current=self.current)

        kontrol = self.current.task_data["control"]
        if kontrol:
            _form.title = _(u"%(ad)s - %(birim)s %(yil)s-%(ay)s AYI DERS PUANTAJ TABLOSU") % {
                'ad': okutman_adi.upper(),
                'birim': birim_unit.name,
                'yil': yil,
                'ay': ay_isim.upper()}
            ders_saati_turu = _(u'Ders Saati')

        else:
            _form.title = _(u"%s - %s %s-%s AYI EK DERS PUANTAJ TABLOSU") % (
            okutman_adi.upper(), birim_unit.name, yil, ay_isim.upper())
            ders_saati_turu = _(u'Ek Ders Saati')

        object_list.append(ders_saati_turu)
        self.output['objects'] = [object_list]

        data_list = OrderedDict({})

        # Seçilen okutmanın İzin ve Ücretsiz İzinlerini dikkate alarak, verilen ayda
        # hangi günler izinli olduğunu liste halinde döndürmeye yarayan method
        # [17,18,19] gibi
        personel_izin_list = Izin.personel_izin_gunlerini_getir(okutman, yil, ay)

        # Verilen döneme ve okutmana göre, haftada hangi gün kaç saat dersi
        # (seçilen seçeneğe göre ders veya ek ders) olduğunu gösteren
        # dictionarylerden oluşan liste, seçilen yıl ve ay bir dönemi kapsıyorsa
        # bir dict, iki dönemi kapsıyorsa iki dict döner.
        ders_etkinlik_list = DU.okutman_etkinlikleri_hesaplama(donem_list, okutman, kontrol)

        # Bulunan tarih araliklarina, okutmanın aylık ders etkinliklerine göre
        # ayın hangi gününde dersi varsa kaç saat dersi olduğu bilgisi,
        # izinliyse İ, resmi tatilse R bilgisini bir dictionary e doldurur.
        okutman_aylik_plan, ders_saati = DU.ders_saati_doldur(donem_list, ders_etkinlik_list,
                                                              resmi_tatil_list, personel_izin_list,
                                                              tarih_araligi, yil, ay)

        data_list['Öğretim Elemanı'] = okutman_adi

        for gun in range(1, takvim[1] + 1):
            if gun in okutman_aylik_plan:
                data_list[' ' + str(gun)] = str(okutman_aylik_plan[gun])
            else:
                data_list[' ' + str(gun)] = ' '

        data_list[ders_saati_turu] = str(ders_saati)

        item = {
            "type": "table-multiRow",
            "fields": data_list,
            "actions": False,
            'key': okutman.key
        }

        self.output['objects'].append(item)

        _form.pdf_sec = fields.Button(_(u"Pdf Çıkar"))
        _form.help_text = _(u"""
                         R: Resmi Tatil
                         İ: İzinli""")
        self.form_out(_form)
    def ucret_hesapla(self):
        """
        Seçilen ay ve yıla göre, seçilen her bir öğretim elemanının
        resmi tatil ve izinleri dikkate alarak aylık ders saati planlamasını
        yapar
        """
        okutman_personel = Personel.objects.get(user=self.current.user)
        okutman = Okutman.objects.get(personel=okutman_personel)
        okutman_adi = okutman.ad + ' ' + okutman.soyad

        yil = self.current.task_data["yil"]  # girilen yil
        ay = self.current.task_data["ay"]  # girilen ayin orderi
        ay_isim = self.current.task_data["ay_isim"]  # ayin adi

        takvim = calendar.monthrange(yil, ay)
        # verilen yıl ve aya göre tuple şeklinde ayın ilk gününü
        # ve ayın kaç gün sürdüğü bilgisini döndürür.
        # Ayın ilk günü = 0-6 Pazt-Pazar
        # 2016 yılı Temmuz ayı için = (4,31)

        birim_no = self.current.role.unit.yoksis_no  # rolden gelecek
        birim_unit = Unit.objects.get(yoksis_no=birim_no)

        # Secilen ay hangi donemleri kapsiyor, kac donemi kapsıyorsa
        # o donemleri dondürür.
        donem_list = Donem.takvim_ayina_rastlayan_donemler(yil, ay, takvim)

        # Resmi tatilerin gununu (23, 12, 8) gibi ve doneme gore akademik takvim donduruyor
        resmi_tatil_list, akademik_takvim_list = Takvim.resmi_tatil_gunleri_getir(
            donem_list, birim_unit, yil, ay)

        # Kapsadığı dönemlere göre ders baslangıc ve bitis tarihlerini
        # baz alarak kapsadığı her bir dönemin seçilen ayda hangi gün
        # aralıklarını kapsadığı bilgisini tuple olarak dondurur. Bir
        # dönemi kapsıyorsa bir tuple, iki dönemi kapsıyorsa iki tuple
        # döner. (4,12) (19,31) gibi
        tarih_araligi = DU.donem_aralik_dondur(donem_list, yil, ay, takvim,
                                               akademik_takvim_list)

        object_list = ['Öğretim Elemanı']
        tarih_list = list(range(1, takvim[1] + 1))
        for tarih in tarih_list:
            object_list.append(' ' + str(tarih))

        # object_list = ['Ogretim Elemani', 'bir', 'iki', 'uc']
        _form = JsonForm(current=self.current)

        kontrol = self.current.task_data["control"]
        if kontrol:
            _form.title = _(
                u"%(ad)s - %(birim)s %(yil)s-%(ay)s AYI DERS PUANTAJ TABLOSU"
            ) % {
                'ad': okutman_adi.upper(),
                'birim': birim_unit.name,
                'yil': yil,
                'ay': ay_isim.upper()
            }
            ders_saati_turu = _(u'Ders Saati')

        else:
            _form.title = _(u"%s - %s %s-%s AYI EK DERS PUANTAJ TABLOSU") % (
                okutman_adi.upper(), birim_unit.name, yil, ay_isim.upper())
            ders_saati_turu = _(u'Ek Ders Saati')

        object_list.append(ders_saati_turu)
        self.output['objects'] = [object_list]

        data_list = OrderedDict({})

        # Seçilen okutmanın İzin ve Ücretsiz İzinlerini dikkate alarak, verilen ayda
        # hangi günler izinli olduğunu liste halinde döndürmeye yarayan method
        # [17,18,19] gibi
        personel_izin_list = Izin.personel_izin_gunlerini_getir(
            okutman, yil, ay)

        # Verilen döneme ve okutmana göre, haftada hangi gün kaç saat dersi
        # (seçilen seçeneğe göre ders veya ek ders) olduğunu gösteren
        # dictionarylerden oluşan liste, seçilen yıl ve ay bir dönemi kapsıyorsa
        # bir dict, iki dönemi kapsıyorsa iki dict döner.
        ders_etkinlik_list = DU.okutman_etkinlikleri_hesaplama(
            donem_list, okutman, kontrol)

        # Bulunan tarih araliklarina, okutmanın aylık ders etkinliklerine göre
        # ayın hangi gününde dersi varsa kaç saat dersi olduğu bilgisi,
        # izinliyse İ, resmi tatilse R bilgisini bir dictionary e doldurur.
        okutman_aylik_plan, ders_saati = DU.ders_saati_doldur(
            donem_list, ders_etkinlik_list, resmi_tatil_list,
            personel_izin_list, tarih_araligi, yil, ay)

        data_list['Öğretim Elemanı'] = okutman_adi

        for gun in range(1, takvim[1] + 1):
            if gun in okutman_aylik_plan:
                data_list[' ' + str(gun)] = str(okutman_aylik_plan[gun])
            else:
                data_list[' ' + str(gun)] = ' '

        data_list[ders_saati_turu] = str(ders_saati)

        item = {
            "type": "table-multiRow",
            "fields": data_list,
            "actions": False,
            'key': okutman.key
        }

        self.output['objects'].append(item)

        _form.pdf_sec = fields.Button(_(u"Pdf Çıkar"))
        _form.help_text = _(u"""
                         R: Resmi Tatil
                         İ: İzinli""")
        self.form_out(_form)