Beispiel #1
0
    def rol_sil(role_id):
        """
        Rol silme işini yapan view metodu.
        Args:
            role_id:

        Returns:

        """
        try:
            Role.query.filter_by(id=role_id).delete()
            DB.session.commit()
            payload = {
                "message_type": USER_ACTIVITY_MESSAGES.get("yonetim").get("rol_sil").type_index,
                "nesne": "Rol",
                "nesne_id": role_id,
                "ekstra_mesaj": "{} isimli kullanıcı {} id'li rolu sildi.".format(
                    current_user.username, role_id),
                "notification_receiver": current_user.person.personel.id,
                "notification_title": "Rol silme başarılı",
            }
            # todo: notification mesajinda id(name kullanilabilir) var kullanici icin anlamli degil.
            ntf_message = "Rol silme başarılı. {} idli rol başarıyla kaldırıldı.".format(role_id)
            signal_sender(notification=True, notification_message=ntf_message, **payload)
            return jsonify(status="success")

        except UnmappedInstanceError as exc:
            DB.session.rollback()
            CustomErrorHandler.error_handler()
        except IntegrityError as exc:
            # todo permission, user, gibi role ile alakalı modellerin listelerini döndür
            DB.session.rollback()
            CustomErrorHandler.error_handler()
            return jsonify(status="error"), 409
        return jsonify(status="error"), 400
Beispiel #2
0
    def bap_duyuru_guncelle(duyuru_id):
        """Belirli bir bap duyurusunu getirir"""
        bap_duyuru = request.get_json()
        duyuru_formu = BapDuyuruForm(**bap_duyuru)

        # tipi duyuru, birim tipi bap olan duyuruyu getirir
        guncellenecek_duyuru = DB.session.query(Icerik).filter(
            Icerik.tipi == IcerikTipi.duyuru,
            Icerik.birim_tipi == IcerikBirimTipi.bap,
            Icerik.id == duyuru_id).one()

        guncellenecek_duyuru.update_obj_data(duyuru_formu.data)

        DB.session.commit()
        signal_payload = {
            "message_type":
            USER_ACTIVITY_MESSAGES.get("icerik").get(
                "bap_duyuru_guncelle").type_index,
            "nesne":
            'Icerik',
            "nesne_id":
            guncellenecek_duyuru.id,
            "ekstra_mesaj":
            "{} adli user, {} id'li icerik(bap duyuru) guncelledi.".format(
                current_user.username, guncellenecek_duyuru.id)
        }
        signal_sender(**signal_payload)

        return jsonify(status="success")
Beispiel #3
0
    def post_rol_degistir(self):
        """Rol degistirme ekrani kayit"""
        cache = current_app.extensions['redis']

        rol_form = RolForm(request.form)
        role_id = int(rol_form.roles.data)
        user_role = UserRole.query.filter_by(user_id=self.user_id,
                                             role_id=role_id).first()
        session['current_user_role'] = user_role.id
        session['current_role'] = role_id
        cache.set(
            current_app.config['USER_LAST_LOGIN_ROLE_ID_CACHE_KEY'].format(
                user_id=self.user_id), session['current_role'])
        role = user_role.role
        session['current_role_name'] = role.name
        signal_payload = {
            "message_type":
            USER_ACTIVITY_MESSAGES.get("common").get(
                "gecerli_rol_degistir").type_index,
            "ekstra_mesaj":
            "{} adlı kullanıcı gecerli rolunu {} olarak degistirdi.".format(
                current_user.username, role.name)
        }
        signal_sender(**signal_payload)
        return redirect(url_for('kullanici_profil.rol_degistir'))
Beispiel #4
0
    def rapor_dosyasi_sil(self, proje_id, rapor_id):  # pylint: disable=R0201
        """
            Proje raporunu silmek icin kullanilir
        """
        rapor = DB.session.query(ProjeRapor).filter(
            ProjeRapor.proje_id == proje_id, ProjeRapor.id == rapor_id).one()

        rapor.file_id = None
        DB.session.commit()

        signal_payload = {
            "message_type":
            USER_ACTIVITY_MESSAGES.get("bap").get(
                "proje_rapor_dosyasi_sil").type_index,
            "nesne":
            'Proje Rapor',
            "nesne_id":
            rapor.id,
            "etkilenen_nesne":
            "Proje",
            "etkilenen_nesne_id":
            proje_id,
            "ekstra_mesaj":
            "{} adlı kullanıcı, {} id'li proje raporunun dosyasini kaldırdı.".
            format(current_user.username, rapor_id)
        }
        signal_sender(**signal_payload)
        flash(_("Rapor dosyası başarıyla kaldırıldı."))
        return redirect(
            url_for('proje.proje_rapor_index_get', proje_id=proje_id))
Beispiel #5
0
    def gundem_sira_no_guncelle(toplanti_id):
        """
        Rowreorder datatable da gundem sirasinda bir degisiklik oldugunda ilgili gündemlerin
        sira numarasini degistirmek icin kullanılan view
        """
        gundem_data = request.get_json()
        user_id = current_user.id
        try:
            guncellenecek_gundem = DB.session.query(BapGundem).filter_by(
                id=gundem_data["gundem_id"], toplanti_id=toplanti_id).one()
        except SQLAlchemyError as exc:
            DB.session.rollback()
            CustomErrorHandler.error_handler(
                hata="Gundem sira no guncellenirken hata olustu. Gundem id: {}, "
                     "User id: {}, Hata: {}".format(gundem_data["gundem_id"],
                                                    user_id,
                                                    exc))
            return abort(400)
        guncellenecek_gundem.gundem_sira_no = int(gundem_data["gundem_sira_no"])
        DB.session.commit()
        signal_payload = {
            "message_type": USER_ACTIVITY_MESSAGES.get("toplanti").get(
                "gundem_sira_degistir").type_index,
            "nesne": 'BAP Gundem',
            "etkilenen_nesne": "BAP Toplanti",
            "etkilenen_nesne_id": toplanti_id,
            "ekstra_mesaj": "{username} adlı kullanıcı toplanti gundem sirasini degistirdi.".format(
                username=current_user.username),
        }
        signal_sender(**signal_payload)

        return jsonify(status="success")
Beispiel #6
0
    def post_avatar_guncelle(self):
        """Avatar guncelle post"""
        user = self.qry.one()
        avatar = request.files.get('avatar', None)

        try:
            if avatar:
                user.avatar = avatar
                DB.session.commit()
                signal_payload = {
                    "message_type":
                    USER_ACTIVITY_MESSAGES.get("common").get(
                        "profil_fotograf_guncelle").type_index,
                    "nesne":
                    'User',
                    "nesne_id":
                    user.id,
                    "ekstra_mesaj":
                    "{} adlı kullanıcı profil fotoğrafını güncelledi.".format(
                        user.username)
                }
                signal_sender(**signal_payload)
                flash(_("Avatariniz guncellendi."))
            else:
                flash(
                    _("Avatarınızı güncellemek için bir resim seçmelisiniz."))
        except ValueError as vexc:
            flash(str(vexc))

        return redirect(url_for('kullanici_profil.avatar'))
Beispiel #7
0
    def gundem_sil(toplanti_id, gundem_id):
        """
        Gündemi toplanti gundemleri arasindan cikarmak icin kullanılır.
        """
        user_id = current_user.id
        try:
            cikarilacak_gundem = DB.session.query(BapGundem).filter_by(
                toplanti_id=toplanti_id,
                id=gundem_id).one()
            cikarilacak_gundem.toplanti_id = None
            DB.session.commit()
        except SQLAlchemyError as exc:
            DB.session.rollback()
            CustomErrorHandler.error_handler(
                hata="Gündem silinirken bir hata oluştu.Gundem id: {}, Toplanti id:"
                     " {}, User id: {}, Hata: {}".format(gundem_id,
                                                         toplanti_id,
                                                         user_id,
                                                         exc)
            )

            return jsonify(status="error"), 400
        signal_payload = {
            "message_type": USER_ACTIVITY_MESSAGES.get("toplanti").get(
                "toplanti_gundem_cikar").type_index,
            "nesne": 'BAP Gundem',
            "nesne_id": gundem_id,
            "etkilenen_nesne": "BAP Toplanti",
            "etkilenen_nesne_id": toplanti_id,
            "ekstra_mesaj": "{username} adlı kullanıcı {gundem_id} id'li gundemi toplanti "
                            "gundemleri arasindan cikardi.".format(username=current_user.username,
                                                                   gundem_id=gundem_id),
        }
        signal_sender(**signal_payload)
        return jsonify(status="success")
Beispiel #8
0
    def gundem_guncelle(gundem_id):
        """Gundem guncellemek icin kullanilir"""
        user_id = current_user.id
        gundem_data = request.get_json()
        gundem_formu = ToplantiGundem(**gundem_data)
        try:
            gundem = DB.session.query(BapGundem).filter_by(id=gundem_id).one()
        except NoResultFound as exc:
            DB.session.rollback()
            CustomErrorHandler.error_handler(
                hata="Olmayan bir gündem güncellenmeye çalışıldı."
                     "Gündem id: {}, User id: {}, Hata: {}".format(
                    gundem_id,
                    user_id,
                    exc)
            )

            return jsonify(status="error"), 400
        try:

            gundem_data = gundem_formu.data
            gundem_data.pop("proje_id")
            gundem_data.pop("gundem_id")
            if gundem_data.get("gundem_sira_no") is None:
                gundem_data.pop("gundem_sira_no")
            gundem.update_obj_data(gundem_data)
        except SQLAlchemyError as exc:
            DB.session.rollback()
            CustomErrorHandler.error_handler(
                hata="Toplanti gündem güncellenmeye calisilirken bir hata olustu."
                     "Gundem id: {}, User id: {}, Hata: {}".format(
                    gundem_id,
                    user_id,
                    exc)
            )

            return jsonify(status="error"), 400

        signal_payload = {
            "message_type": USER_ACTIVITY_MESSAGES.get("toplanti").get(
                "gundem_guncelle").type_index,
            "nesne": 'BAP Gundem',
            "nesne_id": gundem_id,
            "ekstra_mesaj": "{username} adlı kullanıcı toplanti gundemini guncelledi.".format(
                username=current_user.username),
        }
        signal_sender(**signal_payload)
        DB.session.commit()

        toplanti_tarihi = gundem.toplanti.toplanti_tarihi.strftime(
            "%d.%m.%Y") if gundem.toplanti and gundem.toplanti.toplanti_tarihi else "Toplantı tarihi belirtilmedi"
        data = {
            "toplanti_tarihi": toplanti_tarihi,
            "gundem_tipi": gundem.tipi.value,
            "gundem_aciklama": gundem.aciklama,
            "gundem_karar": gundem.karar,
            "toplanti_id": gundem.toplanti_id
        }

        return jsonify(status="success", gundem_data=data)
Beispiel #9
0
    def rol_ekle_set():
        """Request bodysinde gelen rolün veritabanına kaydedildiği metottur."""
        selected_permissions = set(request.get_json().get('selected_permissions', []))
        updated_rol_name = request.get_json().get('rol_adi')
        permissions_to_add_ids = [ptoa[0] for ptoa in
                                  PermissionModel.query.with_entities(PermissionModel.id).filter(
                                      PermissionModel.name.in_(selected_permissions)).all()]
        try:
            rol = Role(name=updated_rol_name)
            DB.session.add(rol)
            DB.session.commit()
            if permissions_to_add_ids:
                for perm in permissions_to_add_ids:
                    DB.session.add(RolePermission(role_id=rol.id, permission_id=perm))
            DB.session.commit()
            signal_payload = {
                "message_type": USER_ACTIVITY_MESSAGES.get("yonetim").get(
                    "yeni_rol_ekle").type_index,
                "nesne": 'Role',
                "nesne_id": rol.id,
                "ekstra_mesaj": "Yeni rol eklendi: {}".format(rol.name),
            }
            signal_sender(**signal_payload)

        except SQLAlchemyError as exc:
            DB.session.rollback()
            CustomErrorHandler.error_handler()

            return jsonify(status="error"), 400
        return jsonify(status="success")
Beispiel #10
0
 def duzenlenebilir_mi(self, proje_id, rapor_id):  # pylint: disable=R0201
     """
         Proje raporunun duzenlenebilirligini degistirmek icin kullanilir
     """
     rapor = DB.session.query(ProjeRapor).filter(
         ProjeRapor.proje_id == proje_id, ProjeRapor.id == rapor_id).one()
     rapor.duzenlenebilir_mi = not rapor.duzenlenebilir_mi
     DB.session.commit()
     signal_payload = {
         "message_type":
         USER_ACTIVITY_MESSAGES.get("bap").get(
             "proje_raporu_duzenlenebilir").type_index,
         "nesne":
         'Proje Rapor',
         "nesne_id":
         rapor.id,
         "ekstra_mesaj":
         "{} adlı kullanıcı, {} id'li proje raporunu düzenlenebilir "
         "yaptı.".format(current_user.username, rapor.id)
     }
     signal_sender(**signal_payload)
     if rapor.duzenlenebilir_mi:
         flash(_("Seçtiğiniz rapor artık düzenlenebilir."))
     else:
         flash(_("Seçtiğiniz raporun düzenlenebilirliğini kaldırdınız."))
     return redirect(
         url_for('proje.proje_rapor_index_get', proje_id=proje_id))
Beispiel #11
0
    def bap_duyuru_sil(duyuru_id):
        """Belirli bir bap duyurusunu getirir"""
        # tipi duyuru, birim tipi bap, id si 'duyuru_id' olan icerigi getirir
        silinecek_duyuru = DB.session.query(Icerik).filter(
            Icerik.tipi == IcerikTipi.duyuru,
            Icerik.birim_tipi == IcerikBirimTipi.bap,
            Icerik.id == duyuru_id).one()
        DB.session.delete(silinecek_duyuru)

        DB.session.commit()

        signal_payload = {
            "message_type":
            USER_ACTIVITY_MESSAGES.get("icerik").get(
                "bap_duyuru_sil").type_index,
            "nesne":
            'Icerik',
            "nesne_id":
            duyuru_id,
            "ekstra_mesaj":
            "{} adli user, {} id'li icerik(bap duyuru) sildi.".format(
                current_user.username, duyuru_id)
        }
        signal_sender(**signal_payload)

        return jsonify(status="success")
Beispiel #12
0
    def yeni_basvuru(tur_id):
        """Yeni proje başvurusu formları"""
        user_id = current_user.id
        try:
            p_tur = DB.session.query(ProjeTuru).filter_by(
                id=tur_id, basvuru_aktif_mi=True, guncel_mi=True).one()
        except NoResultFound as exc:
            CustomErrorHandler.error_handler(
                hata="Güncel olmayan veya var olmayan bir proje türü ile proje "
                "basvurusu yapılmaya çalışıldı. Hata: {}, User id: {}, "
                "Proje turu id: {}".format(exc, user_id, tur_id))
            return abort(404)

        proje_tur_dict = proje_turu_to_dict(p_tur)

        # basvuruyu yapan ogretim elamanininin id sini getirir
        ogretim_elemani = DB.session.query(
            OgretimElemani.id.label("ogretim_elemani_id")).join(
                Personel, OgretimElemani.personel_id == Personel.id).join(
                    Person, Personel.person_id == Person.id).filter(
                        Person.user_id == current_user.id).one()
        yurutucu_id = ogretim_elemani.ogretim_elemani_id

        yeni_basvuru_formu = basvuru_formu_restriction(proje_tur_dict)
        yeni_basvuru_formu.proje_personeli.yurutucu.yurutucu_id.data = yurutucu_id

        yeni_proje = Proje(proje_turu=p_tur.id,
                           proje_turu_numarasi=p_tur.tur_kodu,
                           yurutucu=yurutucu_id,
                           user_id=user_id)
        DB.session.add(yeni_proje)
        DB.session.flush()
        proje_no = "{}{}".format(date.today().year, yeni_proje.id)
        yeni_proje.proje_no = proje_no
        # proje_basvuru_durumu=ProjeBasvuruDurumu.taslak
        DB.session.commit()
        signal_payload = {
            "message_type":
            USER_ACTIVITY_MESSAGES.get("bap").get(
                "proje_basvuru_basla").type_index,
            "nesne":
            'Proje',
            "nesne_id":
            yeni_proje.id,
            "ekstra_mesaj":
            "{} adlı kullanıcı, {} kategorisine proje başvuru islemine "
            "basladi.".format(current_user.username, p_tur.kategori)
        }
        signal_sender(**signal_payload)
        # yeni_basvuru_formu.proje_id.data = yeni_proje.id

        return render_template(
            'arastirma_projesi_basvuru/arastirma_proje_basvurusu.html',
            yeni_basvuru_formu=yeni_basvuru_formu,
            proje_tur_dict=proje_tur_dict,
            proje_id=yeni_proje.id,
            revizyon_bekleniyor_mu=False,
            uyari_mesajlari=proje_tur_dict.get("genel_uyari_mesajlari", None))
Beispiel #13
0
    def post_hakem_proje_degerlendirme_istekleri(self, proje_hakem_id,
                                                 proje_id):  # pylint: disable=R0201
        """
                Hakem degerlendirmesi kabul veya reddi icin kullanilir.

        """
        proje_hakemi = DB.session.query(ProjeHakemleri).options(
            joinedload(ProjeHakemleri.proje).load_only(Proje.proje_no)).filter(
                ProjeHakemleri.id == proje_hakem_id,
                ProjeHakemleri.davet_durumu ==
                ProjeHakemDavetDurumlari.gonderildi).one()
        hakem = DB.session.query(Hakem.id.label("hakem_id")).options(
            lazyload('*')).filter(
                Hakem.person_id == current_user.person.id).one()
        if proje_hakemi:
            if proje_hakemi.hakem_id != hakem.hakem_id:
                return jsonify(status="error"), 500
            davet_durumu = request.get_json().get('davet_durumu')
            proje_hakemi.davet_durumu = davet_durumu
            DB.session.commit()
            if proje_hakemi.davet_durumu == ProjeHakemDavetDurumlari.kabul_edildi:
                message = "hakemlik davetini kabul etti"
            else:
                message = "hakemlik davetini reddetti"
            extra_message = """{} adlı kullanıcı({} id'li hakem),{} numaralı projenin {}""".format(
                current_user.username, hakem.hakem_id,
                proje_hakemi.proje.proje_no, message)
            signal_payload = {
                "message_type":
                USER_ACTIVITY_MESSAGES.get("bap").get(
                    "degerlendirme_teklifi_cevaplandi").type_index,
                "nesne":
                'Proje Hakemleri',
                "nesne_id":
                proje_hakemi.id,
                "ekstra_mesaj":
                extra_message
            }
            signal_sender(**signal_payload)

            for bap_admin in bap_yetkili_and_admin_ids():
                payload = {
                    "notification_receiver":
                    bap_admin.person_id,
                    "notification_title":
                    proje_hakemi.davet_durumu.value,
                    "notification_message":
                    "{} adlı kullanıcı {} numaralı projenin {}".format(
                        current_user.username, proje_hakemi.proje.proje_no,
                        message),
                }

                signal_sender(log=False, notification=True, **payload)
            return jsonify(status="success")

        return abort(400)
Beispiel #14
0
 def activity_types():
     """
     Activite kayıt mesajları listesi döndürür
     :return(list): activity message types
     """
     activity_type_list = []
     for module_values in USER_ACTIVITY_MESSAGES.values():
         for activity_message in module_values.values():
             activity_type_list.append(activity_message)
     return activity_type_list
Beispiel #15
0
    def firma_onay(self, firma_id):
        onay = bool(int(request.get_json().get('onay')))
        firma = DB.session.query(BapFirma).filter(
            BapFirma.id == firma_id).first()

        if not onay:
            firma.onaylandi = False
            firma.reddedildi_mi = True
            firma.faaliyet_durumu = False
            DB.session.commit()
            signal_payload = {
                "message_type":
                USER_ACTIVITY_MESSAGES.get("bap").get("firma_red").type_index,
                "nesne":
                'BapFirma',
                "nesne_id":
                firma.id,
                "ekstra_mesaj":
                "{} adlı kullanıcı, {} idli firmayı reddetti.".format(
                    current_user.username, firma.id)
            }
            signal_sender(**signal_payload)
            return jsonify(status="success")
        else:
            firma.onaylandi = True
            firma.faaliyet_durumu = True
            firma.reddedildi_mi = False

            DB.session.commit()
            signal_payload = {
                "message_type":
                USER_ACTIVITY_MESSAGES.get("bap").get("firma_onay").type_index,
                "nesne":
                'BapFirma',
                "nesne_id":
                firma.id,
                "ekstra_mesaj":
                "{} adlı kullanıcı, {} idli firmayı onayladı.".format(
                    current_user.username, firma.id)
            }
            signal_sender(**signal_payload)
            flash("Firma başarıyla onaylanmıştır..")
            return jsonify(status="success")
Beispiel #16
0
    def post_belge_sablonlari(self):
        """
        Varsayilan belge sablonlari yukleme ekrani

        """
        form = self.form()
        sablon_dosya = request.files.get(form.sablon_dosya.name, None)
        sablon_text = form.sablon_text.data
        if not sablon_text and not sablon_dosya:
            flash(_("Dosya yüklemelisiniz veya şablon metni girmelisiniz"))
        elif sablon_text and sablon_dosya:
            flash(_("Aynı anda dosya yükleyip şablon metni giremezsiniz."))
        else:
            if form.validate():
                sablon_tipi_id = form.sablon_tipi_id.data
                sablon_adi = form.sablon_adi.data
                kullanilabilir_mi = form.sablon_kullanilabilir_mi.data
                query_helper_id = form.query_helper_id.data
                sablon_dosya_id = None
                if sablon_dosya:
                    _sablon = File(content=sablon_dosya)
                    DB.session.add(_sablon)
                    DB.session.flush()
                    sablon_dosya_id = _sablon.id

                sablon = Sablon(file=sablon_dosya_id,
                                sablon_tipi_id=sablon_tipi_id,
                                sablon_text=sablon_text or "",
                                module_name="BAP",
                                adi=sablon_adi,
                                kullanilabilir_mi=kullanilabilir_mi,
                                query_id=query_helper_id)

                DB.session.add(sablon)
                DB.session.commit()
                flash("Belge Şablonu başarıyla yüklenmiştir.")
                form = self.form()
                signal_payload = {
                    "message_type":
                    USER_ACTIVITY_MESSAGES.get("ayarlar").get(
                        "bap_sablon_kaydet").type_index,
                    "nesne":
                    'Sablon',
                    "nesne_id":
                    sablon.id,
                    "ekstra_mesaj":
                    "{} adli user, {} id'li bap sablonu kaydetti.".format(
                        current_user.username, sablon.id)
                }
                signal_sender(**signal_payload)
        sablonlar = DB.session.query(Sablon).order_by(Sablon.updated_at).all()

        return render_template("varsayilan_sablonlar.html",
                               sablon_form=form,
                               sablonlar=sablonlar)
Beispiel #17
0
    def formlar_ve_belgeler_ayarlar_kaydet():
        form = AnaSayfaDosyaAyarlari(request.form)
        ana_sayfa_dosya = request.files.get(form.file_id.name, None)
        dosya_id = None
        if not form.validate():
            flash("Lütfen uygun dosya uzantısı olan bir dosya yükleyiniz.")
            return redirect(
                url_for(
                    'ana_sayfa_yonetimi.FormlarVeBelgelerAyarlarView:formlar_ve_belgeler_ayarlar'
                ))

        if ana_sayfa_dosya:
            bap_belge = BAPBelge()
            _ana_sayfa_dosya = File(content=ana_sayfa_dosya)
            try:
                DB.session.add(_ana_sayfa_dosya)
                DB.session.flush()
                bap_belge.file_id = _ana_sayfa_dosya.id
                dosya_id = _ana_sayfa_dosya.id
                bap_belge.adi = ana_sayfa_dosya.filename
                bap_belge.tur = BAPBelgeTipi.formlar_ve_belgeler
                DB.session.add(bap_belge)
                DB.session.commit()
            except Exception as exc:
                DB.session.rollback()
                CustomErrorHandler.error_handler(
                    hata="Formlar ve Belgeler oluşturulurken hata"
                    "oluştu.Hata: {}".format(exc))
                flash("Lütfen uygun dosya uzantısı olan bir dosya yükleyiniz.")
                return redirect(
                    url_for(
                        'ana_sayfa_yonetimi.FormlarVeBelgelerAyarlarView:formlar_ve_belgeler_ayarlar'
                    ))

        signal_payload = {
            "message_type":
            USER_ACTIVITY_MESSAGES.get("yonetim").get(
                "formlar_ve_belgeler_eklendi").type_index,
            "nesne":
            'Formlar ve Belgeler Ayarları',
            "nesne_id":
            dosya_id,
            "ekstra_mesaj":
            "Formlar ve Belgeler eklendi: {}".format(dosya_id),
        }
        signal_sender(**signal_payload)

        flash("Formlar ve Belgeler başarılı bir şekilde kaydedilmiştir.")

        return redirect(
            url_for(
                'ana_sayfa_yonetimi.FormlarVeBelgelerAyarlarView:formlar_ve_belgeler_ayarlar'
            ))
Beispiel #18
0
def user_activity_message_index_controll():
    from zopsedu.lib.user_activity_messages import USER_ACTIVITY_MESSAGES
    message_index_list = []
    number_of_user_activity_messages = 0
    for user_activity_message in USER_ACTIVITY_MESSAGES.values():
        for user_activiyt_tuple in user_activity_message.values():
            message_index_list.append(user_activiyt_tuple.type_index)
            number_of_user_activity_messages += 1

    if len(set(message_index_list)) != number_of_user_activity_messages:
        raise IndexError(
            "USER_ACTIVITY_MESSAGES değişkeninde aynı index 2 defa kullanılmıştır. "
            "Lütfen dikkat ediniz.")
Beispiel #19
0
    def kurum_kodlari_kaydet():
        """
        Butce kodlarinin kaydedildigi view
        """
        butce_kodlari_form = ButceKodlari(request.form)
        universite_id = SessionHandler.universite_id()
        if not butce_kodlari_form.validate():
            flash(_("Lütfen hatalı yerleri düzeltip tekrar deneyin."))

            fonksiyonel_kodlar_form = FonksiyonelKodlar()
            hesap_kodu_search_form = HesapKodlariSearch()
            return render_template(
                'butce_kodlari_listeleme.html',
                fonksiyonel_kodlar=fonksiyonel_kodlar_form,
                hesap_kodu_search_form=hesap_kodu_search_form,
                butce_kodlari_formu=butce_kodlari_form)

        butce_kodlari_form_data = dict(butce_kodlari_form.data)
        butce_kodlari_form_data.pop('csrf_token')
        eski_genel_ayarlar = DB.session.query(GenelAyarlar).filter_by(
            universite_id=universite_id, aktif_mi=True).first()
        if eski_genel_ayarlar:
            yeni_data = eski_genel_ayarlar.to_dict()["bap_butce"]
            yeni_data.update(butce_kodlari_form_data)
            yeni_ayarlar = genel_ayarlar_guncelle(
                eski_genel_ayarlar,
                guncellenecek_field="bap_butce",
                yeni_data=yeni_data)
        else:
            yeni_ayarlar = GenelAyarlar(universite_id=universite_id,
                                        bap_butce=butce_kodlari_form_data)

        DB.session.add(yeni_ayarlar)
        DB.session.commit()
        flash(_("İşlem başarıyla gerçekleşti."))
        signal_payload = {
            "message_type":
            USER_ACTIVITY_MESSAGES.get("bap").get(
                "butce_kodlari_kaydet").type_index,
            "nesne":
            'GenelAyarlar',
            "nesne_id":
            yeni_ayarlar.id,
            "ekstra_mesaj":
            "{} adlı kullanıcı, bap bütçe kurum kodları ayarlarını güncelledi."
            .format(current_user.username)
        }
        signal_sender(**signal_payload)

        return redirect(
            url_for("butce.ButceKodlariView:butce_kodlari_goruntuleme"))
Beispiel #20
0
    def toplanti_kaydet():
        """
        Formda kaydedilen gundemler ve tarih/saat ile yeni bir toplantı olusturur.
        Returns:
        """
        form_nesne = ToplantiOlusturForm(request.form)
        toplantiya_alinanlar = list(
            filter(lambda x: x['toplantiya_alinsin'], form_nesne.data['gundem_listesi']))

        if form_nesne.validate() and toplantiya_alinanlar:
            try:
                toplanti = BapToplanti(toplanti_durumu=ToplantiDurumu.gerceklestirilmedi,
                                       ekleyen_id=current_user.id)
                DB.session.add(toplanti)
                DB.session.flush()
                for ind, top_al in enumerate(toplantiya_alinanlar):
                    gundem_id = top_al['id']
                    gundem = BapGundem.query.get(gundem_id)
                    gundem.toplanti_id = toplanti.id
                toplanti.toplanti_tarihi = form_nesne.data['toplanti_tarih_saat']
                DB.session.commit()

                signal_payload = {
                    "message_type": USER_ACTIVITY_MESSAGES.get("toplanti").get(
                        "toplanti_olustur").type_index,
                    "nesne": 'BapToplanti',
                    "nesne_id": toplanti.id,
                    "ekstra_mesaj": "{user} kullanıcısı, {gundemler} idli gündemlerle, {toplanti} "
                                    "idli yeni toplantı "
                                    "oluşturdu.".format(
                        user=current_user.username,
                        gundemler=list(map(lambda x: x['id'], toplantiya_alinanlar)),
                        toplanti=toplanti.id
                    )
                }
                signal_sender(**signal_payload)

                return redirect(url_for('index'))
            except SQLAlchemyError as e:
                DB.session.rollback()
                CustomErrorHandler.error_handler(
                    hata="{} kullanıcısı bir toplantı oluşturmaya çalışırken hata "
                         "meydana geldi. hata: {}".format(current_user.username, e))

                flash(_("Bir hata meydana geldi. İşleminiz kaydedilemedi."))
                return redirect(url_for('.ToplantiOlusturView:toplanti_maddeleri_listele'))

        else:
            flash('Formu doğru doldurduğunuzdan emin olunuz.')
            return redirect(url_for('.ToplantiOlusturView:toplanti_maddeleri_listele'))
Beispiel #21
0
    def toplanti_sonuclandir(toplanti_id):
        """YK toplantisini sonuclandir"""
        toplanti_katilimci_kayit = DB.session.query(ToplantiKatilimci).filter(
            ToplantiKatilimci.toplanti_id == toplanti_id).first()

        if not toplanti_katilimci_kayit:
            flash("Lütfen sonuçlandırmadan önce toplantıya katılımcı ekleyiniz")
            return redirect(url_for("toplanti.toplanti_gundem_listele",
                                    toplanti_id=toplanti_id))

        try:
            degerlendirmemis_gundem_sayisi = DB.session.query(
                BapGundem
            ).filter(
                BapGundem.toplanti_id == toplanti_id,
                BapGundem.karar_durum == KararDurumu.degerlendirilmedi
            ).count()

            if degerlendirmemis_gundem_sayisi:
                flash("Toplantıda değerlendirilmemiş gündemler mevcut. "
                      "Lütfen gündemleri değerlendirin veya toplantıdan çıkarınız.")
                return redirect(url_for("toplanti.toplanti_gundem_listele",
                                        toplanti_id=toplanti_id))

            toplanti = DB.session.query(BapToplanti).options(lazyload("*")).filter_by(
                id=toplanti_id).one()
            toplanti.sonuclandi_mi = True
            toplanti.toplanti_durumu = ToplantiDurumu.gerceklestirildi
            flash("Toplantı başarılı bir şekilde sonuçlandırıldı.")
            DB.session.commit()
            signal_payload = {
                "message_type": USER_ACTIVITY_MESSAGES.get("toplanti").get(
                    "toplanti_sonuclandirildi").type_index,
                "nesne": 'BAP Toplanti',
                "nesne_id": toplanti.id,
                "ekstra_mesaj": "{} adlı kullanıcı bap toplantisini sonuçlandırdı.".format(
                    current_user.username),
            }
            signal_sender(**signal_payload)
        except Exception as exc:
            DB.session.rollback()
            CustomErrorHandler.error_handler(
                hata="Var olmayan bir toplanti id ile istek gönderildi.User id: {},"
                     " Hata: {}".format(current_user.id, exc))
            return abort(404)

        return redirect(url_for("toplanti.toplanti_gundem_listele",
                                toplanti_id=toplanti_id))
Beispiel #22
0
    def degerlendirme_kaydet(degerlendirme_id):
        degerlendirme_formu = ProjeDegerlendirmeFormu(request.form)
        degerlendirme = DB.session.query(ProjeDegerlendirmeleri).options(
            joinedload(ProjeDegerlendirmeleri.rapor).joinedload(
                ProjeRapor.proje).load_only("proje_no")).filter(
                    ProjeDegerlendirmeleri.id == degerlendirme_id).one()

        degerlendirme.degerlendirme = degerlendirme_formu.degerlendirme_metni.data
        degerlendirme.degerlendirme_sonuclandi_mi = degerlendirme_formu.degerlendirme_tamamlandi_mi.data
        degerlendirme.degerlendirme_gonderim_tarihi = datetime.now()
        degerlendirme.sonuc = degerlendirme_formu.degerlendirme_sonucu.data
        DB.session.commit()
        if degerlendirme.degerlendirme_sonuclandi_mi:
            for bap_admin in bap_yetkili_and_admin_ids():
                payload = {
                    "notification_receiver":
                    bap_admin.person_id,
                    "notification_title":
                    "{} Değerlendirmesi Tamamlandı".format(
                        degerlendirme.rapor.rapor_tipi.value),
                    "notification_message":
                    "{} adlı kullanıcı {} numaralı projenin {} değerlendirmesini tamamladı. Değerlendirme sonucu {}"
                    .format(current_user.username,
                            degerlendirme.rapor.proje.proje_no,
                            degerlendirme.rapor.rapor_tipi.value,
                            degerlendirme.sonuc.value),
                }

                signal_sender(log=False, notification=True, **payload)
            signal_payload = {
                "message_type":
                USER_ACTIVITY_MESSAGES.get("bap").get(
                    "proje_degerlendirdi").type_index,
                "nesne":
                'ProjeDegerlendirmeleri',
                "nesne_id":
                degerlendirme.id,
                "ekstra_mesaj":
                "{} adlı kullanıcı {} numaralı projenin {} değerlendirmesini tamamladı. Değerlendirme sonucu {}"
                .format(current_user.username,
                        degerlendirme.rapor.proje.proje_no,
                        degerlendirme.rapor.rapor_tipi.value,
                        degerlendirme.sonuc.value)
            }
            signal_sender(**signal_payload)
        return redirect(
            url_for('hakem_dashboard.HakemDashboard:proje_listesi'))
Beispiel #23
0
    def proje_calisani_sil(proje_id, calisan_id):
        """
        Daha önce projeye kaydedilmiş çalışanı siler.
        """
        try:
            try:
                silinecek_calisan = DB.session.query(
                    ProjeCalisanlari).filter_by(id=calisan_id,
                                                proje_id=proje_id).one()
            except NoResultFound as exc:
                DB.session.rollback()
                CustomErrorHandler.error_handler(
                    hata="Var olmayan bir id ile proje çalışanı silinmeye "
                    "çalışıldı. Proje id: {}, Hata: {}".format(proje_id, exc))
                return jsonify(status="error"), 400

            DB.session.delete(silinecek_calisan)
            if silinecek_calisan.person:
                DB.session.delete(silinecek_calisan.person)
            DB.session.commit()
            signal_payload = {
                "message_type":
                USER_ACTIVITY_MESSAGES.get("bap").get(
                    "proje_calisani_sil").type_index,
                "nesne":
                'Proje Calisanlari',
                "nesne_id":
                calisan_id,
                "etkilenen_nesne":
                "Proje",
                "etkilenen_nesne_id":
                proje_id,
                "ekstra_mesaj":
                "{} adlı kullanıcı, proje çalışanını projeden sildi.".format(
                    current_user.username)
            }
            signal_sender(**signal_payload)
            return jsonify(status="success")
        except SQLAlchemyError as exc:
            DB.session.rollback()
            CustomErrorHandler.error_handler(
                hata=
                "Proje çalışanı silinmeye çalışırken hata ile karşılaşıldı. "
                "Proje id: {}, Calisan id: {}, Hata: {}".format(
                    proje_id, calisan_id, exc))
        return jsonify(status="error"), 400
Beispiel #24
0
    def proje_ekleri(self, proje_id, ek_id):
        """
        Proje eklerini indirmek icin kullanilir
        Args:
            self:
            proje_id(int): proje idsi
            belge_id(int): projenin belge idsi

        Returns:

        """
        proje = get_proje_with_related_fields(proje_id=proje_id)
        proje_ek = DB.session.query(ProjeBelgeleri).filter_by(
            belge_id=ek_id).first()

        # for belge in proje.proje_belgeleri:
        # if request.method == "POST" and request.form.get(ek.baslik) == str(ek.belge_id):
        context = {**proje.__dict__, 'proje_detay': proje.proje_detayi}

        renderer = TRenderer(template=proje_ek.belge.file_object,
                             context=context)
        rendered_document = renderer.render_document()

        signal_payload = {
            "message_type":
            USER_ACTIVITY_MESSAGES.get("bap").get(
                "proje_eki_indirildi").type_index,
            "nesne":
            'Proje Belgeleri',
            "nesne_id":
            ek_id,
            "etkilenen_nesne":
            "Proje",
            "etkilenen_nesne_id":
            proje_id,
            "ekstra_mesaj":
            "{} adlı kullanıcı, {} adlı proje ekini indirdi.".format(
                current_user.username, proje_ek.belge.content.file.filename)
        }
        signal_sender(**signal_payload)

        return send_file(
            BytesIO(rendered_document),
            as_attachment=True,
            attachment_filename=proje_ek.belge.content.file.filename,
            mimetype='application/vnd.oasis.opendocument.text')
Beispiel #25
0
    def bap_duyuru_olustur():
        """Bap duyuru olusturur"""
        bap_duyuru_formu = BapDuyuruForm(request.form)
        if request.method == 'GET' or not bap_duyuru_formu.validate():
            return render_template("bap_duyuru_olustur.html",
                                   duyuru_formu=bap_duyuru_formu)

        duyuru_data = bap_duyuru_formu.data
        if duyuru_data["baslangic_tarihi"] >= duyuru_data["bitis_tarihi"]:
            flash(
                _("{}, {} sonraki bir tarih olamaz").format(
                    bap_duyuru_formu.baslangic_tarihi.label.text,
                    bap_duyuru_formu.bitis_tarihi.label.text))
            return render_template("bap_duyuru_olustur.html",
                                   duyuru_formu=bap_duyuru_formu)

        # formda olup modelde kullanilmayan alanlari cikartir
        duyuru_data.pop("icerik_id")
        duyuru_data.pop("ekleyen_ad_soyad")
        duyuru_data.pop("csrf_token")
        bap_duyuru = Icerik(ekleyen_id=current_user.id,
                            tipi=IcerikTipi.duyuru,
                            birim_tipi=IcerikBirimTipi.bap,
                            **duyuru_data)

        DB.session.add(bap_duyuru)
        DB.session.commit()
        flash(_("BAP Duyuru Başarı ile Oluşturuldu."))

        signal_payload = {
            "message_type":
            USER_ACTIVITY_MESSAGES.get("icerik").get(
                "bap_duyuru_olustur").type_index,
            "nesne":
            'Icerik',
            "nesne_id":
            bap_duyuru.id,
            "ekstra_mesaj":
            "{} adli user, {} id'li icerik(bap duyuru) olusturdu.".format(
                current_user.username, bap_duyuru.id)
        }
        signal_sender(**signal_payload)

        return render_template("bap_duyuru_olustur.html",
                               duyuru_formu=bap_duyuru_formu)
Beispiel #26
0
 def ekle(self):
     """Toplanti Ekleme"""
     toplanti_ekle_form = ToplantiEkleForm(request.form)
     toplanti = BapToplanti(toplanti_tarihi=toplanti_ekle_form.toplanti_tarihi.data,
                            toplanti_durumu=toplanti_ekle_form.toplanti_durumu.data,
                            ekleyen_id=self.user_id, )
     DB.session.add(toplanti)
     DB.session.commit()
     flash(_("Toplantı başarıyla eklenmiştir."))
     signal_payload = {
         "message_type": USER_ACTIVITY_MESSAGES.get("toplanti").get(
             "toplanti_olustur").type_index,
         "nesne": 'BAP Toplanti',
         "nesne_id": toplanti.id,
         "ekstra_mesaj": "{} adlı kullanıcı yeni toplanti olusturdu.".format(
             current_user.username),
     }
     signal_sender(**signal_payload)
     return redirect(url_for('toplanti.ToplantiView:liste'))
Beispiel #27
0
    def sil(toplanti_id):
        """Toplanti Silme"""
        toplanti = DB.session.query(
            BapToplanti).filter(BapToplanti.id == toplanti_id).one()
        if toplanti:
            DB.session.delete(toplanti)
            DB.session.commit()
            signal_payload = {
                "message_type": USER_ACTIVITY_MESSAGES.get("toplanti").get(
                    "toplanti_sil").type_index,
                "nesne": 'BAP Toplanti',
                "nesne_id": toplanti.id,
                "ekstra_mesaj": "{} adlı kullanıcı bap toplantisini sildi.".format(
                    current_user.username),
            }
            signal_sender(**signal_payload)
            return jsonify(status="success")

        return abort(400)
Beispiel #28
0
    def post_proje_degerlendirme(proje_id):
        """Hakem Proje Degerlendirme"""
        form = ProjeDegerlendirmeForm(request.form)
        sess = DB.session

        hakem_id = DB.session.query(Hakem).filter(
            Hakem.person_id == current_user.person.id).one().id

        try:
            proje_degerlendirmesi = sess.query(ProjeDegerlendirmeleri).filter(
                ProjeDegerlendirmeleri.hakem_id == hakem_id).filter(
                    ProjeDegerlendirmeleri.proje_id == proje_id).one()

            proje_degerlendirmesi.degerlendirme_detaylari = form.data
            proje_degerlendirmesi.sonuc = form.degerlendirme_sonucu.data
            proje_degerlendirmesi.degerlendirme_tarihi = datetime.now()
            if form.degerlendirme_tamamlandi.data:
                proje_degerlendirmesi.davet_durumu = ProjeHakemDavetDurumlari.tamamlandi
            else:
                proje_degerlendirmesi.davet_durumu = ProjeHakemDavetDurumlari.suruyor

            sess.commit()
            extra_mesaj = """{} adlı kullanıcı({} id'li hakem), proje değerlendirme bilgilerini
            {} olarak düzenledi.""".format(current_user.username, hakem_id,
                                           proje_degerlendirmesi.davet_durumu)
            signal_payload = {
                "message_type":
                USER_ACTIVITY_MESSAGES.get("bap").get(
                    "proje_degerlendirdi").type_index,
                "nesne":
                'Proje Degerlendirme',
                "nesne_id":
                proje_degerlendirmesi.id,
                "ekstra_mesaj":
                extra_mesaj
            }
            signal_sender(**signal_payload)
        except SQLAlchemyError as exc:
            sess.rollback()
            print(str(exc))

        return redirect(
            url_for(".HakemDashboard:proje_listesi", proje_id=proje_id))
Beispiel #29
0
    def idari_personel_kaydet(self):
        form_data = request.form.to_dict()
        idari_personel_ekle_form = IdariPersonelEkle(**form_data)

        if not idari_personel_ekle_form.validate():
            flash(
                "İdari personel eklenirken bir hata ile karşılaşıldı. Lütfen girdiğiniz bilgileri kontrol ediniz"
            )
            return redirect(
                url_for('personel_yonetimi.IdariPersonelView:liste'))

        idari_personel = BapIdariPersonel(
            personel_id=idari_personel_ekle_form.personel_id.data,
            gorevi=idari_personel_ekle_form.gorevi.data,
            gorev_aciklamasi=idari_personel_ekle_form.gorev_aciklamasi.data)
        try:
            DB.session.add(idari_personel)
            DB.session.commit()
            flash("İşleminiz başarıyla gerçekleştirildi")
            signal_payload = {
                "message_type":
                USER_ACTIVITY_MESSAGES.get("yonetim").get(
                    "idari_personel_ekle").type_index,
                "nesne":
                'Personel',
                "nesne_id":
                idari_personel.personel_id,
                "ekstra_mesaj":
                " {} personel idsine sahip personel idari personel olarak eklendi"
                .format(idari_personel.personel_id)
            }
            signal_sender(**signal_payload)
            return redirect(
                url_for('personel_yonetimi.IdariPersonelView:liste'))
        except Exception as exc:
            DB.session.rollback()
            flash("İdari personel eklenirken bir hata ile karşılaşıldı")
            CustomErrorHandler.error_handler(
                hata="İdari personel eklenmeye çalışıldı. Hata: {}".format(
                    exc))
            return redirect(
                url_for('personel_yonetimi.IdariPersonelView:liste'))
Beispiel #30
0
    def yeni_rapor_ekle(self, proje_id):  # pylint: disable=R0201
        """
            Projeye yeni rapor eklemek icin kullanilir
        """
        ara_rapor_mu = request.args.get("ara_rapor_mu")
        rapor_form = RaporForm(request.form)

        # todo: monkey patch
        rapor_tipi = ProjeRaporTipi.ara_rapor if ara_rapor_mu == 'true' else ProjeRaporTipi.sonuc_raporu
        rapor_durumu = ProjeRaporDurumu.tamamlandi if rapor_form.tamamlandi_mi.data else ProjeRaporDurumu.tamamlanmadi
        duzenlenebilir_mi = False if rapor_durumu == ProjeRaporDurumu.tamamlandi else True

        yeni_rapor = ProjeRapor(rapor_tipi=rapor_tipi,
                                proje_id=proje_id,
                                file_id=rapor_form.rapor_dosya.data,
                                rapor_icerigi=rapor_form.rapor_metni.data,
                                durumu=rapor_durumu,
                                duzenlenebilir_mi=duzenlenebilir_mi)
        DB.session.add(yeni_rapor)
        DB.session.commit()
        signal_payload = {
            "message_type":
            USER_ACTIVITY_MESSAGES.get("bap").get(
                "proje_raporu_eklendi").type_index,
            "nesne":
            'Proje Rapor',
            "nesne_id":
            yeni_rapor.id,
            "etkilenen_nesne":
            "Proje",
            "etkilenen_nesne_id":
            proje_id,
            "ekstra_mesaj":
            "{} adlı kullanıcı, {} id'li proje raporu {} id'li projeye "
            "ekledi.".format(current_user.username, yeni_rapor.id, proje_id)
        }
        signal_sender(**signal_payload)

        flash(_("Rapor başarıyla projeye eklendi."))

        return redirect(
            url_for('proje.proje_rapor_index_get', proje_id=proje_id))