Example #1
0
    def onayla(self):
        msg = {
            "title": _(u"Zaman Tablosunu Onayladınız!"),
            "body": _(u"Bölüm ders programı koordinatörüne onaylama iletildi."),
        }

        self.current.task_data["LANE_CHANGE_MSG"] = msg
Example #2
0
    def listele(self):
        """
        show & edit timetable for room

        .. code-block:: python
            # response:
            {
                'derslik_zaman_tablosu': {
                    'derslik_key': string   # derslik key
                    'name': string,     # room name,
                    'kapasite': int,   # capacity,
                    'zaman_plani': [{
                        'key': string,     # derslik zaman plani key
                        'saat': string,  # 10:00-12:00,
                        'gun': int,     # 1 = pazartesi,
                        'durum': int    # 2 = Bolume Ait,
                        }],
                    'derslikler': [{
                        'name': string,
                        'key': string}]}
            }
        """

        if "red_aciklamasi" in self.current.task_data:
            self.current.output["msgbox"] = {
                "type": "warning",
                "title": _(u"Talebiniz Bölüm Başkanı Tarafından Reddedildi"),
                "msg": self.current.task_data["red_aciklamasi"],
            }
        _form = JsonForm()
        _form.gonder = fields.Button(_(u"Onaya Gönder"), cmd="gonder")
        self.form_out(_form)
Example #3
0
    def bilgi_ver(self):
        """
        Kayıt silme iş akışı tamamlandıktan sonra danışmana ve öğrenciye bilgi verilir.
        Kayıt silme işleminin tamamlandığına dair ekrana çıktı verir.

        """
        ogrenci = Ogrenci.objects.get(self.current.task_data['ogrenci_id'])
        ogrenci_program = OgrenciProgram.objects.filter(ogrenci=ogrenci)
        self.current.output['msgbox'] = {
            'type': 'warning', "title": _(u'Kayıt Silme'),
            "msg": _(u'Öğrencinin kaydı %s nedeniyle silinmiştir.') % self.current.input['form'][
                'aciklama']
        }
        title = _(u'Kayıt Silme')
        msg = _(u'%s adlı öğrencinin kaydı %s nedeniyle silinmiştir.') % (
            ogrenci, self.current.input['form']['aciklama'])

        for program in ogrenci_program:
            abstract_role = AbstractRole.objects.get("DANISMAN")
            for role in program.danisman.user.role_set:
                if role.role.abstract_role == abstract_role:
                    role.role.send_notification(title=title, message=msg, sender=self.current.user)

        for role in ogrenci.user.role_set:
                abstract_role = kaydi_silinmis_abs_role(role.role)
                if abstract_role.key in ABSTRACT_ROLE_LIST_SILINMIS:
                    role.role.send_notification(title=title, message=msg, sender=self.current.user)
Example #4
0
 def red_aciklamasi_yaz(self):
     _form = JsonForm(title=_(u"Terfi İşlemi Reddedildi."))
     _form.Meta.help_text = _(u"""Terfi işlemini onaylamadınız. İlgili personele bir açıklama
                               yazmak ister misiniz?""")
     _form.red_aciklama = fields.String(_(u"Açıklama"))
     _form.devam = fields.Button(_(u"Devam Et"))
     self.form_out(_form)
Example #5
0
    def mesaj_goster(self):

        msg = {"title": _(u'Personeller Onay Icin Gonderildi!'),
               "body": _(u'Talebiniz Basariyla iletildi.')}
        # workflowun bu kullanıcı için bitişinde verilen mesajı ekrana bastırır

        self.current.task_data['LANE_CHANGE_MSG'] = msg
Example #6
0
    def sinav_sec(self):
        """Not Girişi Sınav Seç

        Okutmanın, seçilen şubeye ait sınavları görebildiği ve sınav
        seçimi yapabildiği adıma ait olan method.

        Seçilen şube, ``ders_secim`` methodu içinde tanımlanmış olan
        ``JsonForm`` tarafından iletilmekte ve bu method içerisinde
        aşağıdaki şekilde elde edilmektedir::

            sube_key = self.current.input['form']['sube']

        Sinavlar, bir önceki şube seçim adımında seçilmiş olan şubeye
        ait olacak şekilde filtrelenmektedir::

            _form.sinav=fields.Integer("Sınav Seçiniz",
              choices=prepare_choices_for_model(Sinav, sube_id=sube_key))

        """

        _form = forms.JsonForm(current=self.current, title=_(u"Sınav Seçim Formu"))

        try:
            sube_key = self.current.input['form']['sube']
        except:
            sube_key = self.current.task_data["sube"]

        _form.sinav = fields.Integer(_(u"Sınav Seçiniz"),
                                     choices=prepare_choices_for_model(Sinav, sube_id=sube_key))
        self.current.task_data["sube"] = sube_key
        _form.sec = fields.Button(_(u"Seç"), cmd=_(u"Sınav Seçin"))
        self.form_out(_form)
    def bilgilendir(self):
        """
        Not düzenleme işlemi tamamlandıktan sonra ekrana bilgilendirme mesajı basılır.

        """

        ogrenci_id = self.current.task_data['ogrenci_id']
        ogrenci = Ogrenci.objects.get(ogrenci_id)
        yeni_puan = self.current.input['form']['puan']
        sinav = self.current.task_data['sinav']
        onceki_puan = self.current.task_data['onceki_puan']

        self.current.output['msgbox'] = {
            'type': 'info', "title": _(u'Not Düzeltme Tamamlandı'),
            "msg": _(u"""%(ogrenci)s adlı öğrencinin, %(sinav)s sınavına ait
            %(onceki_puan)s olan notu, %(yeni_puan)s ile değiştilmiştir.""") % {
                'ogrenci': ogrenci,
                'sinav': sinav,
                'onceki_puan': onceki_puan,
                'yeni_puan': yeni_puan,
            }
        }
        title = _(u"Not Düzenleme")
        message = _(u"""%(sinav)s sınavınıza ait %(onceki_puan)s olan notu,
                        %(yeni_puan)s ile değiştirilmiştir.""") % {
            'sinav': sinav,
            'onceki_puan': onceki_puan,
            'yeni_puan': yeni_puan
        }
        ogrenci_program = OgrenciProgram.objects.get(self.current.task_data['program_id'])
        birim = ogrenci_program.program.birim
        for role in Role.objects.filter(user=ogrenci.user, unit=birim):
            if role.abstract_role.name in ABSTRACT_ROLE_LIST:
                role.send_notification(message=message, title=title, sender=self.current.user)
Example #8
0
def parola_kontrolleri(yeni_parola, yeni_parola_tekrar, kullanici=None, eski_parola=None):
    """
    Parola uygunluk kontrolleri.

    Args:
        yeni_parola(str): formdan gelen yeni belirlenecek olan parola
        yeni_parola_tekrar(str): formdan gelen yeni parolanın tekrarı
        kullanici: User objesi
        eski_parola(str): formdan gelen kullanının güncel olarak girdigi parolası

    Returns:
        (bool) True ya da False
        msg(str): hata mesajı

    """

    if eski_parola and not kullanici.check_password(eski_parola):
        return False, _(u'Kullanmakta olduğunuz parolanızı yanlış girdiniz.')
    if yeni_parola != yeni_parola_tekrar:
        return False, _(u'Yeni parolanız ve tekrarı uyuşmamaktadır.')
    if eski_parola and eski_parola == yeni_parola:
        return False, _(u'Yeni parolanız ile eski parolanız aynı olmamalıdır.')
    if not parola_uygunlugu(yeni_parola):
        return False, _(u"""Girmiş olduğunuz parola kurallara uymamaktadır.
        Lütfen parola kural setini dikkate alarak tekrar deneyiniz.""")

    return True, None
Example #9
0
def kullanici_adi_kontrolleri(eski_k_adi, yeni_k_adi, guncel_k_adi):
    """
    Kullanıcı adı uygunluk kontrolleri.

    Args:
        guncel_k_adi(str): current nesnesi altindaki güncel kullanıcı adı
        eski_k_adi(str): formdan gelen kullanıcı adı.
        yeni_k_adi(str): formdan gelen yeni belirlenecek olan kullanıcı adı.

    Returns:
        (bool) True ya da False
        msg(str): hata mesajı

    """
    if guncel_k_adi != eski_k_adi:
        return False, _(u'Kullanıcı adınızı yanlış girdiniz. Lütfen tekrar deneyiniz.')

    if eski_k_adi == yeni_k_adi:
        return False, _(u'Yeni kullanıcı adınız ile eski kullanıcı adınız aynı olmamalıdır.')

    if kullanici_adi_var_mi(yeni_k_adi):
        return False, _(u"""Böyle bir kullanıcı adı bulunmaktadır.
        Lütfen başka bir kullanıcı adı deneyiniz.""")

    return True, None
Example #10
0
    def kayit_bilgisi_ver(self):
        """
        İşlemin başarıyla tamamlandığına dair bilgi mesajı basılır.
        Danışmana bilgi mesajı yollanır.

        """
        ogrenci = Ogrenci.objects.get(self.current.task_data['ogrenci_id'])
        danisman = DonemDanisman.objects.get(self.current.task_data["dd_key"])
        personel = danisman.okutman.personel if danisman.okutman.personel else danisman.okutman.harici_okutman

        self.current.output['msgbox'] = {
        'type': 'info', "title": _(u'Danışman Ataması Yapıldı'),
                                 "msg": _(u'%(ogrenci)s adlı öğrenciye %(danisman)s adlı personel \
                        danışman olarak atandı') % {
            'ogrenci': ogrenci,
            'danisman': personel,
        }
        }

        title = _(u"Danışman Atama")
        message = _(u"%(ogrenci)s adlı öğrenciye danışman olarak atandınız.") % {'ogrenci': ogrenci}
        abstract_role = AbstractRole.objects.get("DANISMAN")
        try:
            role = Role.objects.get(unit=danisman.bolum, user=personel.user, abstract_role=abstract_role)
            role.send_notification(message, title, sender=self.current.user)
        except ObjectDoesNotExist:
            raise Exception("Role nesnesi tanımlı olmadığından notification yolllanamadı.")
Example #11
0
    def mezuniyet_kaydet(self):
        from ulakbus.lib.ogrenci import diploma_no_uret
        try:

            ogrenci_program = OgrenciProgram.objects.get(self.input['form']['program'])
            ogrenci_sinav_list = DegerlendirmeNot.objects.set_params(
                rows=1, sort='sinav_tarihi desc').filter(ogrenci=ogrenci_program.ogrenci)
            ogrenci_son_sinav = ogrenci_sinav_list[0]
            diploma_no = diploma_no_uret(ogrenci_program)
            ogrenci_program.diploma_no = diploma_no
            ogrenci_program.mezuniyet_tarihi = ogrenci_son_sinav.sinav.tarih
            ogrenci_program.save()

            bolum_adi = ogrenci_program.program.bolum_adi
            ogrenci_no = ogrenci_program.ogrenci_no
            ogrenci_adi = '%s %s' % (ogrenci_program.ogrenci.ad, ogrenci_program.ogrenci.soyad)

            self.current.output['msgbox'] = {
                'type': 'info', "title": _(u'Öğrenci Mezuniyet Kaydı Başarılı'),
                "msg": _(u'%(ogrenci_no)s numaralı %(ogrenci)s adlı öğrenci %(bolum)s adlı \
                bölümden %(diploma)s diploma numarası ile mezun edilmiştir') % {
                    'ogrenci_no': ogrenci_no,
                    'ogrenci': ogrenci_adi,
                    'bolum': bolum_adi,
                    'diploma': diploma_no,
                }
            }

        except Exception as e:
            self.current.output['msgbox'] = {
                'type': 'warning', "title": _(u'Bir Hata Oluştu'),
                "msg": _(u'Öğrenci Mezuniyet Kaydı Başarısız. Hata Kodu : %s') % e.message
            }
Example #12
0
    def terfisi_gelen_personel_liste(self):

        try:
            self.current.task_data["personeller"]
        except KeyError:
            personel_turu = self.current.input['form']['personel_turu']

            baslangic_tarihi = datetime.datetime.strptime(
                self.current.input['form']['baslangic_tarihi'], '%d.%m.%Y')
            bitis_tarihi = datetime.datetime.strptime(
                self.current.input['form']['bitis_tarihi'], '%d.%m.%Y')
            self.current.task_data["personeller"] = terfi_tarhine_gore_personel_listesi(
                baslangic_tarihi=baslangic_tarihi, bitis_tarihi=bitis_tarihi,
                personel_turu=personel_turu)

        if self.current.task_data["personeller"]:
            _form = TerfiForm(current=self.current, title=_(u"Terfi İşlemi"))
            _form.generate_form()

            _form.kaydet = fields.Button(_(u"Onaya Gönder"), cmd="onaya_gonder")
            _form.duzenle = fields.Button(_(u"Terfi Düzenle"), cmd="terfi_liste_duzenle")

            self.form_out(_form)
            self.current.output["meta"]["allow_actions"] = False
            self.current.output["meta"]["allow_add_listnode"] = False
        else:
            datetime.datetime.today()
            self.current.output['msgbox'] = {
                'type': 'info', "title": _(u'Terfi Bekleyen Personel Bulunamadı'),
                "msg": _(u'%(baslangic)s - %(bitis)s tarih aralığında terfi bekleyen personel bulunamadı.') % {
                    'baslangic': format_datetime(baslangic_tarihi),
                    'bitis': format_datetime(bitis_tarihi),
                }
            }
Example #13
0
    def kaydet(self):
        yeni_personel = Personel()
        yeni_personel.tckn = self.current.task_data['tckn']

        # Task data içinde gelen bilgiler birleştirilecek
        personel_data = {}
        personel_data.update(self.current.task_data['kimlik_bilgileri'])
        personel_data.update(self.current.task_data['cuzdan_bilgileri'])
        personel_data.update(self.current.task_data['adres_bilgileri'])

        for key in personel_data:
            setattr(yeni_personel, key, personel_data[key])

        yeni_personel.save()

        self.current.output['msgbox'] = {
            'type': 'success',
            "title": _(u'%(ad)s %(soyad)s Başarı İle Kaydedildi') % {
                'ad': yeni_personel.ad, 'soyad': yeni_personel.soyad,
            },
            "msg": _(u"""
                      Personel Başarı ile Kaydedildi, Personele atama yapabilir veya daha sonra
                      atama yapmak için "İşlemi Bitir" Butonuna tıklayabilirsiniz
                      """)
        }

        _form = JsonForm(current=self.current)

        # todo: bu buton ilgili personel secili olarak yeni bir wf baslatacak
        _form.geri = fields.Button(_(u"Atama Yap"), style="btn-success", cmd="atama_yap")

        _form.iptal = fields.Button(_(u"İşlemi Bitir"), cmd="bitir")
        self.form_out(_form)

        self.current.task_data['personel_id'] = yeni_personel.key
Example #14
0
    def mernis_kimlik_bilgileri_getir(self):
        tckn = self.current.input['form']['tckn']

        # Personelin daha önce bulunup bulunmadığını kontrol et
        try:
            Personel.objects.get(tckn=tckn)
            self.current.task_data['mernis_tamam'] = False
            self.current.task_data['hata_msg'] = _(u"Personel Daha Önce Kaydedilmiş")
        except ObjectDoesNotExist:
            from ulakbus.services.zato_wrapper import MernisKimlikBilgileriGetir, \
                MernisCuzdanBilgileriGetir

            # Kimlik bilgileri mernis servisi üzerinden çekilecek
            mernis_bilgileri = MernisKimlikBilgileriGetir(tckn=str(tckn))
            response = mernis_bilgileri.zato_request()
            self.current.task_data['mernis_tamam'] = True
            self.current.task_data['kimlik_bilgileri'] = response
            # Cüzdan bilgileri mernis servisi üzerinden çekilecek
            mernis_bilgileri = MernisCuzdanBilgileriGetir(tckn=str(tckn))
            response = mernis_bilgileri.zato_request()
            self.current.task_data['cuzdan_tamam'] = True
            self.current.task_data['cuzdan_bilgileri'] = response
            self.current.task_data['tckn'] = tckn

            self.current.set_message(title=_(u'%s TC no için Mernis servisi başlatıldı') % tckn,
                                     msg='', typ=1, url="/wftoken/%s" % self.current.token)
Example #15
0
    def kayit_bilgisi_ver(self):
        """
        Seçilen öğretim elemanları, dönem ve bölüm bilgilerinden oluşturulan kaydın mesajı
        gösterilir.
        Danışmanlara bilgilendirme mesajı gönderilir.

        """
        yoksis_no = self.current.task_data['unit_yoksis_no']
        unit = Unit.objects.get(yoksis_no=yoksis_no)
        donem = Donem.objects.get(guncel=True)

        self.current.output['msgbox'] = {
            'type': 'info', "title": _(u'Danismanlar Kaydedildi'),
            "msg": _(u'%(donem)s dönemi için %(donem)s programına ait danışman listesi kaydedilmiştir') % {
                'donem': donem, 'unit': unit}}

        title = _(u"Danışman Atama")
        message = _(u"%s dönemi için  danışman olarak atandınız.") % donem
        for okutman_key in self.current.task_data['okutmanlar']:
            okutman = Okutman.objects.get(okutman_key)
            user = okutman.personel.user if okutman.personel else okutman.harici_okutman.user
            abstract_role = AbstractRole.objects.get("OGRETIM_ELEMANI")
            try:
                role = Role.objects.get(user=user, abstract_role=abstract_role, unit=unit)
                role.send_notification(message=message, title=title, sender=self.current.user)
            except ObjectDoesNotExist:
                pass
Example #16
0
    def kayit_islemi_tamamlandi(self):
        msg = {"type": "info",
               "title": _(u'Kayıt İşleminiz Tamamlanmıştır!'),
               "msg": _(u'Güncel Zaman Dilimleri Zaman Tablosuna eklenmiştir')}
        # workflowun bu kullanıcı için bitişinde verilen mesajı ekrana bastırır

        self.current.output['msgbox'] = msg
Example #17
0
    def izin_basvuru_kaydet(self):
        """
        Personelin izin başvurusu kaydedilir.

        """

        izin_form_data = self.input['form']
        # gereksiz form alanlarını sil
        if 'ileri' in izin_form_data:
            del izin_form_data['ileri']

        self.current.task_data['izin_form_data'] = izin_form_data
        form_personel = Personel.objects.get(self.current.task_data['personel_id'])
        izin_form = Form.objects.get(ad="İzin Formu")
        form_data = FormData()
        form_data.form = izin_form
        form_data.user = form_personel.user
        form_data.data = izin_form_data
        form_data.date = date.today()
        form_data.blocking_save()
        time.sleep(1)
        self.current.task_data['izin_form_data_key'] = form_data.key

        msg = {"title": _(u'İzin Başvurusu Yapıldı'),
               "body": _(u'%s %s tarih aralığı için yaptığınız izin talebi başarıyla alınmıştır.') % (
                   self.input['form']['izin_baslangic'], self.input['form']['izin_bitis'])}
        # workflowun bu kullanıcı için bitişinde verilen mesajı ekrana bastırır
        self.current.task_data['LANE_CHANGE_MSG'] = msg
Example #18
0
    def izin_basvuru_formu_goster(self):
        """
        İzin başvurusu yaopacak personel için izin başvuru gösterilir.
        Personelin geçen yıl kullandığı izin sayısı, geçen yıldan kalan
        izin sayısı, bu yıl kullandığı izin sayısı, bu yıl kalan izin sayısı
        ve toplamda kalan izin sayısı gösterilir.

        """

        personel_id = self.current.user.personel.key
        self.current.task_data['personel_id'] = personel_id
        guncel_yil = date.today().year
        onceki_yil = guncel_yil - 1
        lst_form_data = FormData.objects.filter(user_id=self.current.user.key)
        onceki_yil_izin = IzinBasvuru.onceki_yil_izinlerini_bul(lst_form_data, onceki_yil)
        guncel_yil_izin = IzinBasvuru.guncel_izinleri_bul(lst_form_data, guncel_yil, onceki_yil_izin[1])

        _form = self.IzinBasvuruForm(current=self.current,
                                     title=_(u"İzin Talep Formu"),
                                     exclude=['personel_ad_soyad', 'personel_gorev',
                                              'toplam_kalan_izin', 'toplam_izin_gun',
                                              'yol_izni', 'personel_birim',
                                              'personel_sicil_no'])

        _form.help_text = _(u"""{onceki} yılına ait izinli gün sayınız {onceki_izin}, Kalan gün sayınız {onceki_kalan}
                          {guncel} yılına ait izinli gün sayınız {guncel_izin},Toplam izinli gün sayınız  {guncel_kalan}
                          'dir.
                          """).format(onceki=onceki_yil, onceki_izin=onceki_yil_izin[0], onceki_kalan=onceki_yil_izin[1],
                                      guncel=guncel_yil, guncel_izin=guncel_yil_izin[0], guncel_kalan=guncel_yil_izin[1],
                           )
        self.form_out(_form)
Example #19
0
    def sinav_detay_goster(self):
        obj_key = self.current.task_data['data_key']
        if self.input['form']['arama_sec'] == 1:
            sinav_etkinligi = SinavEtkinligi.objects.raw("sinav_yerleri.room_id:" + obj_key)
            obj = Room.objects.get(obj_key)

        else:
            sinav_etkinligi = map(lambda s: SinavEtkinligi.objects.get(sube=s), Sube.objects.filter(
                                                            okutman_id=obj_key, donem=Donem.guncel_donem()))
            obj = Okutman.objects.get(obj_key)

        days = [_(u"Pazartesi"), _(u"Salı"), _(u"Çarşamba"), _(u"Perşembe"), _(u"Cuma"), _(u"Cumartesi"), _(u"Pazar")]

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

        def etkinlik(de):
            """
            Ders etkinligi formatlar ve dondurur.

            :param de: ders etkinligi
            :return: ders adi ve zamani
            """
            aralik = format_datetime(de.tarih)
            return "\n\n**%s**\n%s\n\n" % (aralik, de.ders.ad)

        data_list = []
        for i, day in enumerate(days):
            data_list.append(
                ''.join(["%s" % etkinlik(de) for de in filter(lambda d: d.tarih.isoweekday() == i + 1,
                                                              sinav_etkinligi)]))
        self.detay_goster(data_list, obj)
Example #20
0
    def ders_detay_goster(self):
        if 'data_key' in self.current.input:
            obj_key = self.current.input['data_key']
        else:
            obj_key = self.current.task_data['data_key']
        if self.current.task_data['arama'] == 1:
            data_etkinlik = DersEtkinligi.objects.filter(room_id=obj_key)
            obj = Room.objects.get(obj_key)

        else:
            data_etkinlik = DersEtkinligi.objects.filter(okutman_id=obj_key)
            obj = Okutman.objects.get(obj_key)

        days = [_(u"Pazartesi"), _(u"Salı"), _(u"Çarşamba"), _(u"Perşembe"), _(u"Cuma"), _(u"Cumartesi"), _(u"Pazar")]
        self.output['objects'] = [days]

        def etkinlik(de):
            """
            Ders etkinligi formatlar ve dondurur.

            :param de: ders etkinligi
            :return: ders adi ve zamani
            """
            aralik = "{baslangic} - {bitis}".format(
                                        baslangic=format_time(time(int(de.baslangic_saat), int(de.baslangic_dakika))),
                                        bitis=format_time(time(int(de.bitis_saat), int(de.bitis_dakika))))

            return "\n\n**%s**\n%s\n\n" % (aralik, de.ders.ad)

        data_list = []
        for day in days:
            data_list.append(
                ''.join(["%s" % etkinlik(de) for de in data_etkinlik.filter(gun=days.index(day) + 1)]))

        self.detay_goster(data_list, obj)
Example #21
0
 def atama_iptal(self):
     """
     Atama işleminin iptal edildiğine dair bilgi mesajı ekrana basılır.
     """
     self.current.output['msgbox'] = {
         'type': 'error', "title": _(u'Atama İptal Edildi'),
         "msg": _(u'Personel atama işlemi iptal edildi.'),
     }
Example #22
0
 def hatasiz(self):
     """
         Hatasız oluşan programı inceleyebilir yada yayınlanır.
     """
     _form = JsonForm(title=_(u"Programı İncele Veya Yayınla"))
     _form.incele = fields.Button(_(u"İncele"), cmd='incele')
     _form.yayinla = fields.Button(_(u"Yayınla"), cmd='bitir')
     self.form_out(_form)
Example #23
0
    def bilgilendirme(self):
        msg = {
            "type": "info",
            "title": _(u"Talebiniz Onaylandı!"),
            "msg": _(u"Gönderdiğiniz zaman tablosu Bölüm Başkanı tarafından onaylandı."),
        }

        self.current.output["msgbox"] = msg
Example #24
0
    def kayit_bilgisi_ver(self):
        sinav_key = self.current.task_data["sinav_key"]
        sinav = Sinav.objects.get(sinav_key)
        sinav_tarihi = format_date(sinav.tarih)

        self.current.output['msgbox'] = {
            'type': 'info', "title": _(u'Notlar Kaydedildi'),
            "msg": _(u'%(ders)s dersine ait %(tarih)s tarihli sınav notları kaydedildi') % {
            'ders': sinav.ders.ad, 'tarih': sinav_tarihi}}
    def gecersiz_link_mesaji(self):
        """
        Bağlantı linki geçersiz olmuşsa, uyarı mesajı oluşturulur.

        """
        self.current.task_data['msg'] = _(u"""E-Postanızı onaylamanız için
            gönderilen link geçersiz olmuştur. Lütfen tekrar deneyiniz.""")
        self.current.task_data['title'] = _(u'Geçersiz İşlem')
        self.current.task_data['type'] = 'warning'
Example #26
0
 def sonuc_bulunamadi(self):
     msg = {
         'type': 'warning', "title": _(u'Kayıt Bulunamadı'),
         "msg": _(u'İlgili kayıt bulunamadı.')
     }
     self.current.output['msgbox'] = msg
     _form = JsonForm(title=_(u' '))
     _form.devam = fields.Button(_(u'Bitir'))
     self.form_out(_form)
    def bilgi_ver(self):
        """
        Yayınlananmış sınavlar yok ise bilgi mesajı  ekrana basılır.

        """
        self.current.output['msgbox'] = {
            'type': 'info', "title": _(u'Yayınlanmamış Sınavlar'),
            'msg': _(u"Yayınlanmış sınavlar bulunmamaktadır.")
        }
    def bilgi_ver(self):
        """
        Yayınlanmış ders etkinlikleri yok ise  ekrana bilgi mesajı basılır.

        """
        self.current.output['msgbox'] = {
            'type': 'info', "title": _(u'Yayınlanmamış Dersler'),
            'msg': _(u"Yayınlanmış dersler bulunmamaktadır.")
        }
    def ders_saati_turu_secme(self):
        """
        Ders Ücreti ya da Ek Ders Ücreti hesaplarından birini seçmeye yarar.
        """

        _form = JsonForm(current=self.current, title=_(u"Puantaj Tablosu Hesaplama Türü Seçiniz"))
        _form.ders = fields.Button(_(u"Ders Ücreti Hesapla"), cmd='ders_ucreti_hesapla')
        _form.ek_ders = fields.Button(_(u"Ek Ders Ücreti Hesapla"), cmd='ek_ders_ucreti_hesapla')
        self.form_out(_form)
 def tarih_sec(self):
     """
     Puantaj tablosunun hesaplanacağı ay ve yılı
     seçmeye yarar.
     """
     _form = TarihForm(current=self.current)
     _form.title = _(u'Puantaj Tablosu Hazırlamak İstediğiniz Yıl ve Ayı Seçiniz')
     _form.sec = fields.Button(_(u"İlerle"))
     self.form_out(_form)
Example #31
0
 def kaydet(self):
     """Öğrenci Programında ogrenci_ders_kayit_status field'ı mazeretli olarak güncelleyen method.
     TODO: Fakülte Yönetim Kurulu Karar No Loglanacak
     """
     try:
         ogrenci_program = OgrenciProgram.objects.get(
             self.current.task_data['program'])
         ogrenci_program.ogrenci_ders_kayit_status = 1
         ogrenci_program.save()
     except Exception as e:
         self.current.output['msgbox'] = {
             'type':
             'warning',
             "title":
             _(u'Bir Hata Oluştu'),
             "msg":
             _(U'Öğrenci Ders Kayıt Durumu Değiştirme Başarısız. Hata Kodu : %s'
               ) % (e.message)
         }
Example #32
0
class ButceKalemleriForm(JsonForm):
    class Meta:
        inline_edit = ['tasinir_kodu']
        always_blank = False

    class ButceKalemList(ListNode):
        class Meta:
            title = _(u"Bütçe Kalemleri")
        kod_adi = fields.String(_(u"Kod Adı"))
        ad = fields.String(_(u"Ad"))
        muhasebe_kod_genel = fields.Integer(_(u"Öğretim Üyesinin Seçtiği Muhasebe Kodu"),
                                            choices='bap_ogretim_uyesi_gider_kodlari')
        muhasebe_kod = fields.String(_(u"Muhasebe Kodu"),
                                     choices='analitik_butce_dorduncu_duzey_gider_kodlari')
        tasinir_kodu = fields.String(_(u"Taşınır Kodu"), choices='tasinir_kodlari')
        key = fields.String("Key", hidden=True)

    iptal = fields.Button(_(u"Daha Sonra Devam Et"), cmd='daha_sonra_devam_et')
    kaydet = fields.Button(_(u"Kaydet ve Listele"), cmd='kaydet')
Example #33
0
def get_personel_from_hitap(current):
    tcno = current.input['form']['tcno']
    current.task_data['hitap_tamam'] = current.input['form'].get(
        'goto_hata') != 1
    current.task_data['tcno'] = tcno
    current.set_message(title=_(u'%s TC no için Hitap servisi başlatıldı') %
                        tcno,
                        msg='',
                        typ=1,
                        url="/wftoken/%s" % current.token)
Example #34
0
class RaporYukleForm(JsonForm):
    """
    Proje raporunun öğretim üyesi tarafından yüklenilmesi işlemini içerir.

    """
    class Meta:
        include = ['belge']
        title = _(u'Lütfen Raporu Ekleyiniz.')

    kaydet = fields.Button(_(u"Kaydet"))
 def goruntule(self):
     """
     Seçilen demirbaşın ayrıntılı görüntülendiği adımdır.
     """
     self.object = Demirbas.objects.get(
         self.current.task_data.pop('object_id'))
     self.show()
     form = JsonForm(title=self.object.__unicode__())
     form.arama_ekranina_don = fields.Button(_(u"Arama Ekranına Dön"))
     self.form_out(form)
Example #36
0
 def e_posta_bilgisi_kontrol(self):
     """
     Girilen e-posta adresinin doğruluğu belirlenen kalıpla kontrol edilir.
     """
     self.current.task_data["e_posta"] = self.input['form']['e_posta']
     self.current.task_data['uygunluk'] = e_posta_uygunlugu(
         self.current.task_data["e_posta"])
     self.current.task_data['msg'] = _(
         u"""Girmiş olduğunuz e-posta adresi geçersizdir.
                                     Lütfen düzelterek tekrar deneyiniz.""")
Example #37
0
class KadroBilgiForm(JsonForm):
    """
    Personel Atama wf  için form olarak kullanılır.

    """
    class Meta:
        title = gettext_lazy(u'Atama Bilgileri')

    kadro = fields.String(_(u"Atanacak Kadro Seçiniz"))  # typeahead olacak
    ibraz_tarihi = fields.Date(_(u"İbraz Tarihi"))
    durum = fields.String(_(u"Durum"))  # typeahead olacak
    nereden = fields.Integer(_(u"Nereden"))
    atama_aciklama = fields.Text(_(u"Atama Açıklama"))
    goreve_baslama_tarihi = fields.Date(_(u"Göreve Başlama Tarihi"))
    goreve_baslama_aciklama = fields.String(_(u"Göreve Başlama Açıklama"))
    kurum_onay_tarihi = fields.Date(_(u"Kurum Onay Tarihi"))

    kaydet = fields.Button(_(u"Kaydet"), cmd="kaydet", style="btn-success")
    iptal = fields.Button(_(u"İptal"), cmd="iptal", form_validation=False)
Example #38
0
    def kayit_bilgisi_ver(self):
        """Workflow'n son aşamasıdır. Bu method ile başarılı işlem sonucu kullanıcıya gösterilir.

        """
        ogrenci_program = OgrenciProgram.objects.get(
            self.current.task_data['program'])
        ogrenci = ogrenci_program.ogrenci
        ogrenci_ad_soyad = ogrenci.ad + " " + ogrenci.soyad
        self.current.output['msgbox'] = {
            'type':
            'info',
            "title":
            _(u'Öğrenci Ders Kayıt Durumu Değiştirme Başarılı'),
            "msg":
            _(u"""%s nolu %s adlı öğrencinin %s programına ait ders
                          kayıt durumu "Mazeretli" olarak güncellendi""") %
            (ogrenci_program.ogrenci_no, ogrenci_ad_soyad,
             ogrenci_program.program.adi)
        }
Example #39
0
    def sonuc_bilgisi_goster(self):
        hitap_sonuc = ''
        if 'hitap_tamam' in self.current.task_data:
            if self.current.task_data['hitap_tamam']:
                hitap_sonuc = _(
                    u'Personel için hitap bilgileri Hitap sunucusu ile eşleştirildi.'
                )
            else:
                hitap_sonuc = _(u"""
                    Personel için hitap bilgileri Hitap sunucusu ile eşleştirilemedi!!
                    Bu işlemi daha sonra tekrar başlatabilirsiniz.
                    """)

        self.current.output['msgbox'] = {
            'type': 'info',
            "title": _(u'Personel Atama Başarılı'),
            "msg":
            _(u'Atama İşlemi Başarıyla gerçekleştirildi. ') + hitap_sonuc
        }
Example #40
0
 def filtreleri_kontrol_et(self):
     f = self.input['form']
     if f['aranacak_metin'] or f['proje_turu'] or (
             f['bitis_tarihi_baslangic'] and f['bitis_tarihi_bitis']):
         self.current.task_data['cmd'] = 'gecerli_filtre'
     else:
         self.current.task_data['cmd'] = 'gecersiz_filtre'
         self.current.task_data['hata_mesaji'] = _(
             u"""En az bir filtre girmelisiniz. Lütfen
         filtrelerinizi kontrol ediniz.""")
Example #41
0
class TalepForm(JsonForm):
    class Meta:
        include = ['yurutucu', 'aciklama']
        title = __(u"Yürütücü Değişikliği Talebi")
        help_text = __(
            u"Lütfen projeye yeni yürütücü atamak için yürütücünün ismini yazıp "
            u"ilerleyiniz.")

    aciklama = fields.Text(__(u"Açıklama"), required=True)
    ilerle = fields.Button(_(u"İlerle"))
Example #42
0
    def hatayi_gozden_gecir(self):
        if self.current.task_data['hata_msg']:
            msg = self.current.task_data['hata_msg']
        else:
            msg = _(
                u"Bilinmeyen bir hata oluştu :( sebebini biliyorsanız bizede söyleyinde düzeltelim"
            )
        self.current.output['msgbox'] = {
            'type': 'error',
            "title": _(u'İşlem Başarısız'),
            "msg": msg
        }

        _form = JsonForm(current=self.current)
        _form.tekrar = fields.Button(_(u"Tekrar Dene"),
                                     style="btn-success",
                                     cmd="tekrar")
        _form.iptal = fields.Button(_(u"İptal"), cmd="iptal")
        self.form_out(_form)
    def donem_formu_olustur(self):
        """
        Güz ve Bahar Dönemi Formu oluşturulur.

        """

        _form = DonemForm(current=self.current,
                          title=_(u'Güz ve Bahar Dönemi'))

        son_donem = Donem.son_donem()

        _form.help_text = _(u"""Kayıtlardaki en son donem {donem}
        Başlangıç Tarihi: {baslangic},
        Bitiş Tarihi: {bitis}
        """).format(donem=son_donem.ad,
                    baslangic=format_date(son_donem.baslangic_tarihi),
                    bitis=format_date(son_donem.bitis_tarihi))

        self.form_out(_form)
Example #44
0
class DersKatilimi(Model):
    """Ders Katılımı Modeli

    Öğrencilerin devam durumları hakkında bilgilerin saklandığı modeldir. Okutman tarafından
    verilecek yüzdelik bir ifadeyle katılım durumu alanında saklanır.

    Temel ilişki Ogrenci ve Ders modelleri ile kurulmuştur.

    Note:
        Okutman arama kolaylığı amacıyla saklanmıştır.

    """

    # TODO: Neden float, soralım?
    katilim_durumu = field.Integer(_(u"Katılım Durumu"), index=True)
    sube = Sube()
    ogrenci = Ogrenci()
    okutman = Okutman()
    aciklama = field.String(_(u"Açıklama"))

    class Meta:
        app = 'Ogrenci'
        verbose_name = _(u"Ders Devamsızlığı")
        verbose_name_plural = _(u"Ders Devamsızlıklari")
        list_fields = ['katilim_durumu', 'sube_dersi']
        search_fields = ['sube_dersi', 'katilim_durumu']

    def sube_dersi(self):
        """
        Şubenin bağlı olduğu ders adı.

        Returns:
            Şubenin bağlı olduğu ders örneğinin adını döndürür.

        """

        return six.text_type(self.sube.ders)

    sube_dersi.title = 'Ders'

    def __unicode__(self):
        return '%s %s' % (self.katilim_durumu, self.ogrenci)
Example #45
0
    def red_mesaji_bilgi(self):
        """
        Proje raporunun reddetme işleminin yapıldığına dair bilgilendirme mesajını koordinasyon birimine gösterir.

        """
        rapor = BAPRapor.objects.get(self.current.task_data['rapor']['key'])
        form = JsonForm(title="Rapor Reddetme İşlemi Bilgi Mesajı")
        form.help_text = "%s adlı raporun reddetme işlemi başarılı bir şekilde gerçekleştirilmiştir." % (
            rapor)
        form.yonlendir = fields.Button(_(u'Anasayfaya Git'))
        self.form_out(form)
Example #46
0
    def kullanici_adi_girisi(self):
        """

        Parolanın sıfırlanabilmesi için kullanıcıdan kullandığı kullanıcı adı
        istenir. Bu kullanıcı adına ait birincil e-posta adresine doğrulama
        linki gönderilecektir. Eğer gösterilecek bir mesaj varsa (yanlış
        kullanıcı adı girişi gibi) mesaj ekrana basılır.
        """
        if self.current.task_data.get('msg', None):
            self.mesaj_kutusu_goster(
                self.current.task_data.get('title', _(u"Hatalı Bilgi")))

        _form = JsonForm(current=self.current, title=_(u'Parola Sıfırlama'))
        _form.help_text = _(
            u"""Girdiğiniz kullanıcı adınıza kayıtlı birincil e-posta
                                adresinize parola sıfırlama linki gönderilecektir."""
        )
        _form.kullanici_adi = fields.String(_(u"Kullanıcı adınızı giriniz:"))
        _form.ilerle = fields.Button(_(u"Parola Sıfırlama Linki Gönder"))
        self.form_out(_form)
Example #47
0
 def incele_kb(self):
     """
     Komisyon başkanının başvuruyu incelediği adımdır.
     """
     key = self.current.task_data['etkinlik_basvuru_id']
     self.show()
     form = EtkinlikBasvuruInceleForm(
         title=_(u"Etkinlik Başvuru Detayları"))
     form.daha_sonra_incele = fields.Button(_(u"Daha Sonra İncele"),
                                            cmd='daha_sonra_devam_et')
     form.reddet = fields.Button(_(u"Reddet"), cmd='red')
     form.komisyon = fields.Button(_(u"Komisyon Üyesi Ata"),
                                   cmd='komisyon_uyesi_ata')
     butceler = BAPEtkinlikProje.objects.get(key).EtkinlikButce
     for butce in butceler:
         form.Butce(talep_turu=butce.talep_turu,
                    istenen_tutar=butce.istenen_tutar)
     self.form_out(form)
     self.current.output["meta"]["allow_actions"] = False
     self.current.output["meta"]["allow_add_listnode"] = False
Example #48
0
 def reddet_ve_bildirim_gonder(self):
     """
     Etkinlik başvurusunu yapan öğretim üyesine, başvurunun koordinasyon birimi tarafından
     reddedildiği bildiriminin gönderildiği adımdır.
     """
     key = self.current.task_data['etkinlik_basvuru_id']
     etkinlik = BAPEtkinlikProje.objects.get(key)
     etkinlik.durum = 3
     etkinlik.blocking_save()
     role = Role.objects.filter(
         user=self.object.basvuru_yapan.personel.user)[0]
     sistem_user = User.objects.get(username='******')
     role.send_notification(
         title=_(u"Bilimsel Etkinlik Projesi Başvurusu"),
         message=_(u"%s başlıklı bilimsel etkinlik projesi başvurunuz "
                   u"koordinasyon birimi tarafından reddedilmiştir." %
                   self.object.bildiri_basligi),
         typ=1,
         sender=sistem_user)
     self.current.output['cmd'] = 'reload'
Example #49
0
 def saglik_raporunu_sil_onay(self):
     form = JsonForm(title=_(u"Sağlık Raporu Silme İşlemi"))
     form.help_text = _(u"""Ad Soyad: **%(ad)s** **%(soyad)s**
         Başlama Tarihi: **%(baslama_tarihi)s**
         Bitiş Tarihi: **%(bitis_tarihi)s**
         Gün: **%(sure)s**
         Nereden: **%(nerden_alindigi)s**
         Rapor Çeşidi: **%(rapor_cesidi)s**
         Bilgilerin bulunduğu raporu silmek istiyor musunuz?""") % {
         'ad': self.object.personel.ad,
         'soyad': self.object.personel.soyad,
         'baslama_tarihi': self.object.baslama_tarihi,
         'bitis_tarihi': self.object.bitis_tarihi,
         'sure': self.object.sure,
         'nerden_alindigi': self.object.nerden_alindigi,
         'rapor_cesidi': self.object.get_rapor_cesidi_display()
     }
     form.evet = fields.Button(__(u"Evet"), cmd='delete')
     form.hayir = fields.Button(__(u"Hayır"))
     self.form_out(form)
Example #50
0
class SubelendirmeForm(forms.JsonForm):
    """
    ``DersSubelendirme`` sınıfı için form olarak kullanılacaktır.
    """

    kaydet_ders = fields.Button(_(u"Kaydet ve Ders Seçim Ekranına Dön"),
                                cmd="subelendirme_kaydet",
                                flow="ders_okutman_formu")
    program_sec = fields.Button(_(u"Kaydet ve Program Seçim Ekranına Dön"),
                                cmd="subelendirme_kaydet",
                                flow="program_sec")
    bilgi_ver = fields.Button(_(u"Tamamla ve Hocaları Bilgilendir"),
                              cmd="subelendirme_kaydet",
                              flow="bilgi_ver")

    class Subeler(ListNode):
        ad = fields.String(_(u'Şube Adı'))
        kontenjan = fields.Integer(_(u'Şube Kontenjanı'))
        dis_kontenjan = fields.Integer(_(u'Şube Dış Kontenjanı'))
        okutman = fields.String(_(u'Okutman'), choices=okutman_choices)
Example #51
0
class SaglikRaporu(Model):
    personel = Personel(_(u"Raporu Alan Personel"))
    rapor_cesidi = field.Integer(_(u"Rapor Çeşidi"), required=True, choices='saglik_raporu_cesitleri')
    sure = field.Integer(_(u"Gün"), required=True)
    baslama_tarihi = field.Date(_(u"Rapor Başlangıç Tarihi"), required=True)
    bitis_tarihi = field.Date(_(u"Raporlu Olduğu Son Gün"), required=True)
    onay_tarihi = field.Date(_(u"Onay Tarihi"), required=True)
    raporun_alindigi_il = field.Integer(_(u"Raporun Alındığı İl"), choices='iller', required=False)
    nerden_alindigi = field.String(_(u"Sağlık Raporunun Alındığı Kurum"), required=True)
    gecirecegi_adres = field.Text(_(u"Geçireceği Adres"), required=False)
    telefon = field.String(_(u"Telefon Numarası"), required=False)

    class Meta:
        verbose_name = _(u"Sağlık Raporu")
        verbose_name_plural = _(u"Sağlık Raporları")
        list_fields = ['rapor_cesidi', 'sure', 'bitis_tarihi']

    def __unicode__(self):
        return "%s %s - %s - %s" % (self.personel.ad, self.personel.soyad,
                                    self.get_rapor_cesidi_display(), self.bitis_tarihi)
Example #52
0
class YurutucuProjeForm(JsonForm):
    class Meta:
        title = _(u"Yürütücünün Halihazırdaki Projeleri")
        always_blank = False

    class Proje(ListNode):
        ad = fields.String(_(u'Ad'), readonly=True)
        kurum = fields.String(_(u'Hibe Veren Kurum'), readonly=True)
        miktar = fields.Float(_(u'Hibe Miktarı'), readonly=True)

    ileri = fields.Button(_(u"İleri"), cmd='ileri')
Example #53
0
    def link_gonderimi_bilgilendir(self):
        """
        Doğrulama linki yollandığında kullanıcı linkin yollandığına dair bilgilendirilir.

        """
        self.current.task_data['msg'] = _(
            u"""'%s' adresinize doğrulama linki gönderilmiştir.
        Lütfen e-posta'nızdaki bağlantı linkine tıklayarak e-posta adresinin size ait
        olduğunu doğrulayınız. """) % (self.current.task_data['e_posta'])

        self.mesaj_kutusu_goster('E-Posta Doğrulama', 'info')
Example #54
0
    def karar_onaylama(self):
        obj = self.object
        karar = dict(gundem_kararlari[obj.gundem_tipi]['kararlar'])[
            self.input['form']['gundem_karar']]
        form = KararOnaylamaForm(current=self.current)
        form.help_text = _(
            u"'{}' projesinin '{}' gündemi hakkında verdiğiniz karar '{}' dır. Bu karar "
            u"geri alınamaz! Bu işlemi onaylıyor musunuz?".format(
                obj.proje.ad, obj.get_gundem_tipi_display(), karar))

        self.form_out(form)
Example #55
0
    def kaydet(self):
        zd = ZamanDilimleri.objects.get(self.current.task_data['zaman_dilimi'])
        try:
            zd.baslama_saat = self.input['form']['baslangic_saat']
            zd.baslama_dakika = self.input['form']['baslangic_dakika']
            zd.bitis_saat = self.input['form']['bitis_saat']
            zd.bitis_dakika = self.input['form']['bitis_dakika']
            zd.save()

            msg = {"type": "info",
                   "title": _(u'Kaydedildi!'),
                   "msg": _(u"Kaydınız başarıyla gerçekleşti")}

            self.current.output['msgbox'] = msg
        except:
            msg = {"type": "warning",
                   "title": _(u'Kayıt Başarısız Oldu!'),
                   "msg": _(u"Malesef kaydınız başarısız oldu")}

            self.current.output['msgbox'] = msg
Example #56
0
 def test_bap_anasayfa(self):
     self.prepare_client('/bap_anasayfa', username='******')
     resp = self.client.post()
     assert 'menu' in resp.json
     assert 'top_action_buttons' in resp.json
     assert 'university_logo' in resp.json
     assert 'university_title' in resp.json
     assert 'bidding' in resp.json
     assert 'general' in resp.json
     assert len(resp.json['top_action_buttons']) == 5
     assert resp.json['menu']['title'] == _(u"Menü")
Example #57
0
class DemirbasRezervasyon(Model):
    rezerve_eden = Personel()
    rezervasyon_baslama_tarihi = field.Date(_(u"Rezervasyon Başlama Tarihi"),
                                            format=DATE_DEFAULT_FORMAT)
    rezervasyon_bitis_tarihi = field.Date(_(u"Rezervasyon Başlama Tarihi"),
                                          format=DATE_DEFAULT_FORMAT)
    rezerve_edilen_demirbas = Demirbas()

    class Meta:
        app = 'Genel'
        verbose_name = _(u"Rezerve Bilgileri")
        verbose_name_plural = _(u"Rezerve Bilgileri")
        list_fields = [
            'rezerve_eden', 'rezervasyon_baslama_tarihi',
            'rezervasyon_bitis_tarihi'
        ]
        search_fields = [
            'rezerve_eden', 'rezervasyon_baslama_tarihi',
            'rezervasyon_bitis_tarihi'
        ]
Example #58
0
class RaporTurForm(JsonForm):
    """
    Projeye ait hangi rapor türünün girileceğinin belirlenmesi işlemini içerir.

    """
    class Meta:
        include = ['tur']
        title = _(u'Lütfen Rapor Türü Seçiniz.')
        always_blank = False

    sec = fields.Button(_(u"Seç"))
Example #59
0
 def proje_turu_islem(self, obj, result):
     sonuc = {
         'name': _(u'Sonuçlandır/Düzenle'),
         'cmd': 'add_edit_form',
         'mode': 'normal',
         'show_as': 'button'
     }
     goster = {
         'name': _(u'Göster'),
         'cmd': 'show',
         'mode': 'normal',
         'show_as': 'button'
     }
     sil = {
         'name': _(u'Sil'),
         'cmd': 'delete',
         'mode': 'normal',
         'show_as': 'button'
     }
     result['actions'] = ([sonuc, goster, sil])
Example #60
0
    def islem_gecmisi_goster(self):
        """
        Projenin işlem geçmişini gösterir.

        """

        self.current.output["meta"]["allow_actions"] = False
        self.current.output["meta"]["allow_search"] = False
        self.output['objects'] = [[_(u'Eylem'), _(u'Açıklama'), _(u'Tarih')]]
        for islem in sorted(self.object.ProjeIslemGecmisi, key=lambda obj: obj.tarih):
            eylem = islem.eylem
            aciklama = islem.aciklama
            tarih = islem.tarih.strftime(DATETIME_DEFAULT_FORMAT) if islem.tarih else ''

            list_item = {
                "fields": [eylem, aciklama, tarih],
                "actions": '',
            }
            self.output['objects'].append(list_item)
        self.form_out(ProjeIslemGecmisiForm())