class BAPSatinAlma(Model): class Meta: verbose_name = __(u"Bütçe Kalemi Satın Alma") verbose_name_plural = __(u"Bütçe Kalemi Satın Almaları") list_fields = ['ad', 'teklife_acilma_tarihi', 'teklife_kapanma_tarihi'] ad = field.String(__(u"Satın Alma Duyuru Adı")) teklife_acilma_tarihi = field.DateTime(__(u"Teklife Açılma Tarihi")) teklife_kapanma_tarihi = field.DateTime(__(u"Teklife Kapanma Tarihi")) sonuclanma_tarihi = field.Date(__(u"Teklifin Sonuçlanma Tarihi")) onay_tarih_sayi = field.String(__(u"Onay Tarih/Sayı")) ekleyen = Personel() aciklama = field.Text(__(u"Açıklama")) teklif_durum = field.Integer(__(u"Teklif Durum"), choices='bap_satin_alma_durum') ilgili_proje = BAPProje() tek_firma = BAPFirma() tur = field.Integer(_(u"Satın Alma Türü"), choices='bap_satin_alma_turleri') duyuruda = field.Boolean(_(u"Duyuru Durumu"), default=False) sorumlu = Role() duyuruda = field.Boolean(__(u"Duyurulma Durumu"), default=False) class ButceKalemleri(ListNode): butce = BAPButcePlani() def __unicode__(self): return "%s" % self.ad
class PersonelEkleForm(JsonForm): class Meta: title = _(u"Personel Seç") personel = Personel() personel_ekle = fields.Button(_(u"Ekle"), cmd='ekle') iptal = fields.Button(_(u"İptal"))
class ArastirmaOlanaklari(ListNode): class Meta: verbose_name = __(u"Araştırma Olanağı") verbose_name_plural = __(u"Araştırma Olanakları") lab = Room() demirbas = Demirbas() personel = Personel()
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' ]
class AkademikFaaliyet(Model): """ Akademik Faalyet bilgilerinin saklandigi model """ tur = AkademikFaaliyetTuru(__(u"Faaliyet Tipi")) ad = String(__(u"Faaliyet Adı")) baslama = Date(__(u"Başlama Tarihi"), format="%d.%m.%Y") bitis = Date(__(u"Bitiş Tarihi"), format="%d.%m.%Y") durum = Integer(__(u"Durum"), choices='akademik_faaliyet_durum', required=False, default=1) kac_kisiyle_yapildi = Integer(__(u"Kaç kişiyle yapıldığı"), required=False) gorev = String(__(u"Görev"), required=False) personel = Personel() class Meta: app = 'Personel' verbose_name = _(u"Akademik Faaliyet") verbose_name_plural = _(u"Akademik Faaliyetler") list_fields = ['ad', 'baslama', 'bitis', 'durum'] search_fields = ['ad', ] def __unicode__(self): return _(u"%(ad)s %(tur)s") % {'ad': self.ad, 'tur': self.tur}
class Demirbas(Model): ad = field.String(_(u"Adı")) tur = field.String(_(u"Türü"), required=False) url = field.String(_(u"Url"), required=False) olculer = field.String(_(u"Ölçüler"), required=False) yeri = field.String(_(u"Yeri"), required=False) muhasebe_kodu = field.String(_(u"Muhasebe Kodu"), required=False) kurum_kodu = field.String(_(u"Kurum Kodu"), required=False) demirbas_no = field.String(_(u"Demirbas Numarası")) satin_alindigi_proje = field.String(_(u"Satın Alındığı Proje"), required=False) satin_alinma_tarihi = field.Date(_(u"Satın Alınma Tarihi")) teslim_alinma_tarihi = field.Date(_(u"Teslim Alınma Tarihi")) satin_alinma_fiyati = field.Float(_(u"Maliyet")) teknik_ozellikler = field.Text(_(u"Teknik Özellikler"), required=False) # virgülle ayrılacak etiketler = field.String(_(u"Etiketler"), required=False) marka = field.String(_(u"Marka"), required=False) model = field.String(_(u"Model"), required=False) durum = field.Integer(_(u"Durum"), choices='demirbas_durum') birim = Unit(_(u"Birim"), required=False) sorumlu = Personel() notlar = field.Text(_(u"Notlar"), required=False) class Meta: app = 'Genel' verbose_name = _(u"Demirbaş") verbose_name_plural = _(u"Demirbaşlar") list_fields = [ 'ad', 'tur', 'demirbas_no', 'satin_alinma_tarihi', 'teslim_alinma_tarihi', 'rezervasyonlar' ] search_fields = [ 'ad', 'tur', 'etiketler', 'marka', 'model', 'demirbas_no' ] def __unicode__(self): return _(u"%(ad)s") % {'ad': self.ad} def rezervasyonlar(self): rezervasyonlar = DemirbasRezervasyon.objects.filter( rezerve_edilen_demirbas_id=self.key) onceki_rezervasyonlar = [] simdi = datetime.now().date() if not rezervasyonlar: onceki_rezervasyonlar.append( _(u"Bu demirbaşa ait rezervasyon bulunmamaktadır.")) else: for rez in rezervasyonlar: onceki_rezervasyonlar.append( "(%s - %s) - %s" % (datetime.strftime(rez.rezervasyon_baslama_tarihi, DATE_DEFAULT_FORMAT), datetime.strftime(rez.rezervasyon_bitis_tarihi, DATE_DEFAULT_FORMAT), rez.rezerve_eden)) if rez.rezervasyon_baslama_tarihi < simdi < rez.rezervasyon_bitis_tarihi: self.durum = 2 self.blocking_save() return "\n".join(onceki_rezervasyonlar) if len(onceki_rezervasyonlar) > 1 else \ onceki_rezervasyonlar[0] rezervasyonlar.title = _(u"Rezervasyonlar")
class BAPProje(Model): durum = field.Integer(_(u"Durum"), choices='bap_proje_durum') basvuru_rolu = Role() # Komisyon kararıyla doldurulacak alanlar proje_no = field.Integer(_(u"Proje No")) kabul_edilen_baslama_tarihi = field.Date(_(u"Kabul Edilen Başlama Tarihi")) kabul_edilen_butce = field.Float(_(u"Kabul Edilen Bütçe")) # Başvuruda doldurulacak alanlar yurutucu = Okutman() gerceklestirme_gorevlisi = Personel() harcama_yetkilisi = Personel() muhasebe_yetkilisi = Personel() tur = BAPProjeTurleri() ad = field.String(_(u"Proje Adı")) sure = field.Integer(_(u"Süre(Ay Cinsinden Olmalıdır)")) anahtar_kelimeler = field.String( _(u"Anahtar Kelimeler(Virgülle Ayrılmış Şekilde Olmalıdır)")) teklif_edilen_baslama_tarihi = field.Date( _(u"Teklif Edilen Başlama Tarihi")) teklif_edilen_butce = field.Float(_(u"Teklif Edilen Bütçe")) butce_fazlaligi = field.Float(_(u"Bütçe Fazlalığı"), default=0.0) konu_ve_kapsam = field.Text(_(u"Konu ve Kapsam"), min_length=650, max_length=1000) literatur_ozeti = field.Text(_(u"Literatür Özeti"), min_length=650, max_length=1000) ozgun_deger = field.Text(_(u"Özgün Değer"), min_length=650, max_length=1000) hedef_ve_amac = field.Text(_(u"Hedef ve Amaç"), min_length=650, max_length=1000) yontem = field.Text(_(u"Yöntem"), min_length=650, max_length=1000) basari_olcutleri = field.Text(_(u"Başarı Ölçütleri"), min_length=650, max_length=1000) b_plani = field.Text(_(u"B Planı"), min_length=650, max_length=1000) bitis_tarihi = field.Date(_(u"Tamamlanma Tarihi")) yurutucu_talep = field.String(__(u"Yürütücü Değişikliği Talebi"), hidden=True, required=False) komisyon_uyesi = Role(__(u"Komisyon Üyesi"), hidden=True) talep_uygunlugu = field.Boolean(__(u"Talep Uygunluğu"), hidden=True, default=True) class ProjeBelgeleri(ListNode): class Meta: verbose_name = __(u"Proje Belgesi") verbose_name_plural = __(u"Proje Belgeleri") belge = field.File(_(u"Belge"), random_name=True) belge_aciklamasi = field.String(_(u"Belge Açıklaması"), required=False) class ArastirmaOlanaklari(ListNode): class Meta: verbose_name = __(u"Araştırma Olanağı") verbose_name_plural = __(u"Araştırma Olanakları") lab = Room() demirbas = Demirbas() personel = Personel() class ProjeCalisanlari(ListNode): class Meta: verbose_name = __(u"Proje Çalışanı") verbose_name_plural = __(u"Proje Çalışanları") ad = field.String(_(u"Ad")) soyad = field.String(_(u"Soyad")) nitelik = field.String(_(u"Nitelik")) calismaya_katkisi = field.String(_(u"Çalışmaya Katkısı")) kurum = field.String(_(u"Kurum")) class UniversiteDisiUzmanlar(ListNode): class Meta: verbose_name = __(u"Üniversite Dışı Uzman") verbose_name_plural = __(u"Üniversite Dışı Uzmanlar") ad = field.String(_(u"Ad")) soyad = field.String(_(u"Soyad")) unvan = field.String(_(u"Unvan")) kurum = field.String(_(u"Kurum")) tel = field.String(_(u"Telefon")) faks = field.String(_(u"Faks")) eposta = field.String(_(u"E-posta")) class UniversiteDisiDestek(ListNode): class Meta: verbose_name = __(u"Üniversite Dışı Destek") verbose_name_plural = __(u"Üniversite Dışı Destekler") kurulus = field.String(_(u"Destekleyen Kurulus")) tur = field.String(_(u"Destek Türü")) destek_miktari = field.Float(_(u"Destek Miktarı")) verildigi_tarih = field.Date(_(u"Verildiği Tarih")) sure = field.Integer(_(u"Süresi(Ay CinsindenBA)")) destek_belgesi = field.File(_(u"Destek Belgesi"), random_name=True) destek_belgesi_aciklamasi = field.String(_(u"Belge Açıklaması"), required=False) # Koordinatörlük tarafından atanacak class BAPHakem(ListNode): class Meta: verbose_name = __(u"Hakem") verbose_name_plural = __(u"Hakemler") ad = field.String(_(u"Ad")) soyad = field.String(_(u"Soyad")) # todo hakemler sorulacak birim = field.String(_(u"Birim")) class ProjeIslemGecmisi(ListNode): class Meta: verbose_name = __(u"İşlem Geçmişi") verbose_name_plural = __(u"İşlem Geçmişi") eylem = field.String(_(u"Eylem")) aciklama = field.String(_(u"Açıklama")) tarih = field.DateTime(_(u"Tarih")) class ProjeDegerlendirmeleri(ListNode): class Meta: verbose_name = __(u"Proje Değerlendirmesi") verbose_name_plural = __(u"Proje Değerlendirmeleri") hakem = Okutman() form_data = field.Text(_(u"Form Data")) hakem_degerlendirme_durumu = field.Integer( _(u"Hakem/Değerlendirme Durumu"), choices='bap_proje_hakem_degerlendirme_durum') degerlendirme_sonucu = field.Integer( _(u"Değerlendirme Sonucu"), choices="bap_proje_degerlendirme_sonuc") @lazy_property def yurutucu_diger_projeler(self): return self.objects.filter(yurutucu=self.yurutucu) @lazy_property def proje_kodu(self): return "%s%s" % (self.tur.kod, self.proje_no) class Meta: app = 'BAP' verbose_name = _(u"BAP Proje") verbose_name_plural = _(u"BAP Projeler") list_fields = ['ad', 'yurutucu'] search_fields = ['ad'] list_filters = ['durum'] unique_together = [('tur', 'proje_no')] def __unicode__(self): return "%s: %s" % (self.ad, self.yurutucu.__unicode__()) def post_save(self): if self.durum == 5 and self.is_changed('durum'): genel = BAPGenel.get() genel.toplam_taahhut += self.kabul_edilen_butce genel.save()
def __init__(self, current=None): super(PersonelDataGridView, self).__init__(current) # Gösterilecek alanlar listesi. column_list = [ 'tckn', 'ad', 'soyad', 'dogum_tarihi', 'cinsiyet', 'medeni_hali', 'dogum_yeri', 'kan_grubu', 'ana_adi', 'baba_adi', 'brans', 'unvan', 'personel_turu', 'kurum_sicil_no_int', 'birim_id', 'kayitli_oldugu_il', 'kayitli_oldugu_ilce', 'kayitli_oldugu_mahalle_koy', 'cuzdan_seri', 'cuzdan_seri_no', 'kayitli_oldugu_cilt_no', 'kayitli_oldugu_aile_sira_no', 'kayitli_oldugu_sira_no', 'kimlik_cuzdani_verildigi_yer', 'kimlik_cuzdani_verilis_nedeni', 'kimlik_cuzdani_kayit_no', 'kimlik_cuzdani_verilis_tarihi', 'emekli_sicil_no', 'emekli_giris_tarihi', 'hizmet_sinifi', 'kazanilmis_hak_derece', 'kazanilmis_hak_kademe', 'kazanilmis_hak_ekgosterge', 'gorev_ayligi_derece', 'gorev_ayligi_kademe', 'gorev_ayligi_ekgosterge', 'emekli_muktesebat_derece', 'emekli_muktesebat_kademe', 'emekli_muktesebat_ekgosterge', 'kh_sonraki_terfi_tarihi', 'ga_sonraki_terfi_tarihi', 'goreve_baslama_tarihi', 'mecburi_hizmet_suresi', ] ordered_dict_param = [] for col in column_list: if col == "birim_id": ordered_dict_param.append((col, _(u"Birim"))) elif col == "baslama_sebep_id": ordered_dict_param.append((col, _(u"Başlama Sebep"))) else: ordered_dict_param.append( (col, str(Personel.get_field(col).title) if Personel.get_field(col) is not None else col)) self.column_dict = OrderedDict(ordered_dict_param) select_fields = { 'cinsiyet': prepare_options_from_catalog_data('cinsiyet'), 'kan_grubu': prepare_options_from_catalog_data('kan_grubu'), 'medeni_hali': prepare_options_from_catalog_data('medeni_hali'), 'personel_turu': prepare_options_from_catalog_data('personel_turu') } birim = ModelLabelValue(Unit).get_or_set() # birim = [{"value": u.key, "label": u.name} for u in Unit.objects.all()] multiselect_fields = { 'birim_id': birim, 'hizmet_sinifi': prepare_options_from_catalog_data('hizmet_sinifi'), 'unvan': prepare_options_from_catalog_data('unvan_kod'), 'statu': prepare_options_from_catalog_data('personel_statu') } range_date_fields = [ 'dogum_tarihi', 'em_sonraki_terfi_tarihi', 'emekli_giris_tarihi', 'ga_sonraki_terfi_tarihi', 'gorev_suresi_baslama', 'gorev_suresi_bitis', 'goreve_baslama_tarihi', 'kh_sonraki_terfi_tarihi', 'mecburi_hizmet_suresi' ] range_int_fields = [ 'emekli_muktesebat_derece', 'emekli_muktesebat_ekgosterge', 'emekli_muktesebat_kademe', 'engel_orani', 'gorev_ayligi_derece', 'gorev_ayligi_ekgosterge', 'gorev_ayligi_kademe', 'kazanilmis_hak_derece', 'kazanilmis_hak_ekgosterge', 'kazanilmis_hak_kademe' ] starts_fields = [ 'tckn', 'ad', 'soyad', 'dogum_yeri', 'ana_adi', 'baba_adi', 'brans', 'kurum_sicil_no_int', 'kayitli_oldugu_il', 'kayitli_oldugu_ilce', 'kayitli_oldugu_mahalle_koy', 'cuzdan_seri', 'cuzdan_seri_no', 'kayitli_oldugu_cilt_no', 'kayitli_oldugu_aile_sira_no', 'kayitli_oldugu_sira_no', 'kimlik_cuzdani_verildigi_yer', 'kimlik_cuzdani_verilis_nedeni', 'kimlik_cuzdani_kayit_no', 'kimlik_cuzdani_verilis_tarihi', 'emekli_sicil_no' ] column_types_dict = { 'select_fields': select_fields, 'multiselect_fields': multiselect_fields, 'range_date_fields': range_date_fields, 'range_num_fields': range_int_fields, 'starts_fields': starts_fields } self.kwargs = { 'default_fields': ['ad', 'soyad', 'cinsiyet', 'dogum_tarihi', 'personel_turu'], 'column_types_dict': column_types_dict }
def test_gorevlendirme_tarih_kontrol(self): """ """ personel = Personel() personel.save() # gorevlendirme zamanlari (gorev_baslama(ay-gun),gorev_bitis(ay-gun)) olarak belirtilmiştir. # default yil 2017. gorevlendirme_zamanlari = [((1, 3), (1, 10)), ((1, 12), (1, 15)), ((3, 15), (3, 20)), ((7, 16), (8, 16))] # gorevlendirme_zamanlari'ndaki tarihlerle uyusmayacak sekilde tarihler yine belirtilen formatta seçilmiştir. invalid_gorevlendirme_zamanlari = [ ((1, 2), (1, 5)), ((1, 11), (1, 20)), ((1, 11), (4, 1)), ((7, 20), (8, 10)), ((8, 15), (8, 20)), ((1, 10), (1, 12)), ((2, 20), (2, 2)), ((1, 15), (1, 15)) ] # gorevlendirme_zamanlari ile uyusan sekilde belirtilen formatta tarihler secilmistir. valid_gorevlendirme_zamanlari = [((1, 1), (1, 2)), ((11, 6), (11, 6)), ((2, 2), (2, 20)), ((9, 9), (9, 11))] for counter, tarih in enumerate(gorevlendirme_zamanlari): if counter % 2 == 0: gorevlendirme = KurumIciGorevlendirmeBilgileri( personel=personel, baslama_tarihi=datetime.date(2017, tarih[0][0], tarih[0][1]), bitis_tarihi=datetime.date(2017, tarih[1][0], tarih[1][1])) else: gorevlendirme = KurumDisiGorevlendirmeBilgileri( personel=personel, baslama_tarihi=datetime.date(2017, tarih[0][0], tarih[0][1]), bitis_tarihi=datetime.date(2017, tarih[1][0], tarih[1][1])) gorevlendirme.blocking_save() mevcut_gorev_sayisi = KurumDisiGorevlendirmeBilgileri.objects.filter(personel=personel).count() + \ KurumIciGorevlendirmeBilgileri.objects.filter(personel=personel).count() for counter, tarih in enumerate(invalid_gorevlendirme_zamanlari): if counter % 2 == 0: invalid_gorevlendirme = KurumIciGorevlendirmeBilgileri( personel=personel, baslama_tarihi=datetime.date(2017, tarih[0][0], tarih[0][1]), bitis_tarihi=datetime.date(2017, tarih[1][0], tarih[1][1])) else: invalid_gorevlendirme = KurumDisiGorevlendirmeBilgileri( personel=personel, baslama_tarihi=datetime.date(2017, tarih[0][0], tarih[0][1]), bitis_tarihi=datetime.date(2017, tarih[1][0], tarih[1][1])) with pytest.raises(Exception): invalid_gorevlendirme.blocking_save() assert invalid_gorevlendirme.key is None for counter, tarih in enumerate(valid_gorevlendirme_zamanlari): if counter % 2 == 0: valid_gorevlendirme = KurumIciGorevlendirmeBilgileri( personel=personel, baslama_tarihi=datetime.date(2017, tarih[0][0], tarih[0][1]), bitis_tarihi=datetime.date(2017, tarih[1][0], tarih[1][1])) else: valid_gorevlendirme = KurumDisiGorevlendirmeBilgileri( personel=personel, baslama_tarihi=datetime.date(2017, tarih[0][0], tarih[0][1]), bitis_tarihi=datetime.date(2017, tarih[1][0], tarih[1][1])) assert valid_gorevlendirme.blocking_save() valid_gorevlendirme.baslama_tarihi = datetime.date(2017, 1, 13) valid_gorevlendirme.bitis_tarihi = datetime.date(2017, 2, 13) with pytest.raises(Exception): valid_gorevlendirme.blocking_save() guncel_gorev_sayisi = KurumDisiGorevlendirmeBilgileri.objects.filter(personel=personel).count() + \ KurumIciGorevlendirmeBilgileri.objects.filter(personel=personel).count() assert guncel_gorev_sayisi == mevcut_gorev_sayisi + len( valid_gorevlendirme_zamanlari) personel.blocking_delete() KurumIciGorevlendirmeBilgileri.objects.filter( personel=personel).delete() KurumDisiGorevlendirmeBilgileri.objects.filter( personel=personel).delete()