Kariyerim’in dökümantasyonuna hoşgeldiniz

Proje:

Kariyerim

Takım:
  • Hikmet Altıntaş
  • Fatih Demirel
  • Hasan Berat Özfidan
  • Emir Bilgin
  • Hamitcan Malkoç

Kariyerim, python programlama diliyle veritabanı (PostgeSQL) kullanılarak oluşturulmuş bir web uygulamasıdır

Contents:

User Guide

Kariyerim sitesine ilk girildiğinde karşınıza login sayfası çıkıyor. Üyeyseniz sağ üst köşeye email ve şifrenizi girip siteye giriş yapabiliyorsunuz. Eğer üyeliğiniz yoksa Kişi olarak veya Şirket olarak kayıt ol butonuna basarak siteye kayıt olabiliyorsunuz.

map to buried treasure

Login Sayfası

Bu sayfadan Kariyerim’in Facebook, Twitter ve Github sayfasına ulaşabiliyorsunuz.

Hikmet ALTINTAŞ Tarafından Yapılan Kısımlar

Profil Sayfası

_images/ss_profil_crop.png

Kişinin bilgilerini görebileceği profil sayfası.

Kullanıcı kendisine ait bilgileri profil sayfasında görüntüleyebilir. Okul ve dil ilgili ayrıntılı bilgiler için akordiyon butonlar kullanılabilir. Kullanıcı sil butonunu kullanarak hesabını kalıcı olarak silebilir. Düzenle butonu kullanılarak bilgiler düzenlenebilir.

Profil Düzenleme

Dil Düzenleme ve Silme

_images/ss_profil_edit-diller.png

Dil düzenleme ve silme

Kullanıcı sağ üstteki ‘Sil’ butonuyla kayıtlı olan dili silebilir. Alt kısımdaki ‘Dil Ekle’ butonuyla yeni dil ekleyebilir. Mevcut formları değiştirerek düzenleme yapabilir. Düzenleme sonrası ‘Kaydet’ butonu bilgiler kalıcı hale getirilir.

Okul Düzenleme ve Silme

_images/ss_profil_edit-okullar.png

Okul düzenleme ve silme

Kullanıcı sağ üstteki ‘Sil’ butonuyla kayıtlı olan okulu silebilir. Alt kısımdaki ‘Okul Ekle’ butonuyla yeni okul ekleyebilir. Mevcut formları değiştirerek düzenleme yapabilir. Düzenleme sonrası ‘Kaydet’ butonu bilgiler kalıcı hale getirilir.

Okul ve Dil Ekleme

_images/ss_okul_dil-ekle.png

Okul ve dil ekleme

Kullanıcı ‘Okul Ekle’ veya ‘Dil Ekle’ butonuyla gelen formu doldurarak ekleme işlemi yapabilir.

Fatih Demirel Tarafından Kodlanmış Kısımlar

Hesap Sayfası

_images/hesap.png

Kişilerin hesap bilgilerini göreceği sayfadır.

Hesap Düzenleme

Hesap Ekleme ve Silme

_images/hesap_ek_sil.png

Hesap ekleme ve silme

Kullanıcı sağdaki ‘Sil’ butonuyla kayıtlı olan hesabı silebilir. Alt kısımdaki ‘Hesap Ekle’ butonuyla yeni hesap ekleyebilir. Kullanıcı sağdaki ‘Düzenle’ butonuyla kayıtlı hesap bilgilerini yeni açılacak-aşağıdaki sayfa- sayfada güncelleyebilir.

Hesap Güncelleme

_images/hesap_guncel.png

Hesap güncelleme

Sol altta bulunan ‘Ekle’ butonuyla yaptılan değişiklikler kaydedilir.

Banka Sayfası

_images/banka.png

Bankaların göreceği sayfadır.

Banka Düzenleme

Banka Ekleme ve Silme

_images/banka_ek_sil.png

Banka ekleme ve silme

Kullanıcı sağdaki ‘Sil’ butonuyla kayıtlı olan banka bilgisini silebilir. Alt kısımdaki ‘Banka Ekle’ butonuyla yeni banka ekleyebilir. Kullanıcı sağdaki ‘Düzenle’ butonuyla kayıtlı banka bilgilerini yeni açılacak-aşağıdaki sayfa- sayfada güncelleyebilir.

Banka Güncelleme

_images/banka_guncel.png

Banka güncelleme

Sol altta bulunan ‘Ekle’ butonuyla yapılan değişiklikler kaydedilir.

İşlemler Sayfası

_images/islemler.png

Kişilerin işlem bilgilerini göreceği sayfadır.

İşlem Düzenleme

İşlem Ekleme ve Silme

_images/islemler_ek_sil.png

İşlem ekleme ve silme

Kullanıcı sağdaki ‘Sil’ butonuyla kayıtlı olan bir işlemi silebilir. Alt kısımdaki ‘İşlem Ekle’ butonuyla yeni işlem ekleyebilir. Kullanıcı sağdaki ‘Düzenle’ butonuyla kayıtlı işlem bilgilerini yeni açılacak -aşağıdaki sayfa- sayfada güncelleyebilir.

İşlem Güncelleme

_images/islemler_guncel.png

İşlem güncelleme

Sol altta bulunan ‘Ekle’ butonuyla yapılan değişiklikler kaydedilir.

Hasan Berat Özfidan Tarafından Yapılan Kısımlar

Siteye Admin Olarak Giriş Yapıldığında

Hizmetler Sayfasına tıklanıldığında 3 adet sayfa çıkıyor. Bunlar Kurslar, Reklamlar ve Etkinliklerdir.

1)Kurslar Tablosu

Bu sayfada admin için kurslar listeleniyor .Listelenen ülkelerin ekleme,silme ve güncelleme işlemleri yapılıyor. Sil butonuna basıldığında o kurs siliniyor.

map to buried treasure

Bütün kursların listelendiği sayfa.

Kurslar sayfasının en altında kurs ekleme butonu vardır. Bu butona tıklanıldığında sayfasının altında form açılır.

map to buried treasure

Kurs ekleme formu.

Bu form doldurulup ekle dendiğinde kurs veri tabanına eklenir.

Admin satırları değiştirme yetkisine sahiptir. Değiştir butonuna basarak güncelleme sayfasına yönlendirilir.

map to buried treasure

Kurs güncelleme sayfası.

2)Reklamlar Tablosu

Bu sayfada admin girişi için reklamlar listeleniyor. Listelenen reklamların ekleme, silme ve güncelleme işlemleri yapılıyor. Sil butonuna basıldığında o reklam siliniyor. Bu listenin en altında bulunan reklam ekle butonuna basılınca aynı kurs ekle butonunda olduğu gibi bir form açılır. Form doldurulduktan sonra ekle butonuna basılarak reklam eklenir. Güncelle butonuna basıldığında ise güncelleme formu gelir.

map to buried treasure

Bütün reklamların listelendiği sayfa.

Reklam düzenleme sayfası

map to buried treasure

Reklam düzenleme sayfası.

3)Etkinlikler Tablosu

Bu sayfada admin için etkinlikler listeleniyor. Listelenen etkinlikler için ekleme,silme ve güncelleme işlemleri yapılıyor.Sil butonuna basıldığında o reklam siliniyor.

map to buried treasure

Bütün etkinliklerin listelendiği sayfa.

Etkinlikler sayfasının en altında etkinlik ekle butonu vardır. Tıklandıktan sonra form doldurulur ve reklam veritabanına eklenir. Etkinlik satırları değiştirilmek istendiğinde satırın yanındaki güncelle butonuna basılır.

map to buried treasure

Etkinlik düzenleme sayfası

Siteye Kişi Olarak Giriş Yapıldığında

Hizmetler sayfasına tıklanınca bütün kurs, reklam ve etkinlik bilgilerine ulaşabiliyoruz.

1)Kurslar Sayfası

Bu sayfada kişi bütün kursların bilgilerini ayrı ayrı liste şeklinde görebiliyor. Fakat kişi kurslar üzerinde güncelleme ve silme işlemi yapamaz. Yalnızca ekleme işlemi yapabilir.

map to buried treasure

Bütün kursların bilgisi.

2)Reklamlar Sayfası

Bu sayfada kişi bütün reklamların bilgilerini ayrı ayrı liste şeklinde görebiliyor. Fakat kişi reklamlar üzerinde güncelleme ve silme işlemi yapamaz. Yalnızca ekleme işlemi yapabilir.

map to buried treasure

Bütün reklam bilgileri.

3)Etkinlikler Sayfası

Bu sayfada kişi bütün etkinliklerin bilgilerini ayrı ayrı liste şeklinde görebiliyor. Fakat kişi etkinlikler üzerinde güncelleme ve silme işlemi yapamaz. Yalnızca ekleme işlemi yapabilir.

map to buried treasure

Bütün etkinlik bilgileri.

Siteye Şirket Olarak Giriş Yapıldığında

Hizmetler sayfasına tıklanınca bütün kurs, reklam ve etkinlik bilgilerine ulaşabiliyoruz.

1)Kurslar Sayfası

Bu sayfada şirket bütün kursların bilgilerini ayrı ayrı liste şeklinde görebiliyor. Fakat şirket kurslar üzerinde güncelleme ve silme işlemi yapamaz. Yalnızca ekleme işlemi yapabilir.

map to buried treasure

Bütün kursların bilgisi.

2)Reklamlar Sayfası

Bu sayfada şirket bütün reklamların bilgilerini ayrı ayrı liste şeklinde görebiliyor. Fakat şirket reklamlar üzerinde güncelleme ve silme işlemi yapamaz. Yalnızca ekleme işlemi yapabilir.

map to buried treasure

Bütün reklam bilgileri.

3)Etkinlikler Sayfası

Bu sayfada şirket bütün etkinliklerin bilgilerini ayrı ayrı liste şeklinde görebiliyor. Fakat şirket etkinlikler üzerinde güncelleme ve silme işlemi yapamaz. Yalnızca ekleme işlemi yapabilir.

map to buried treasure

Bütün etkinlik bilgileri.

Emir Bilgin Tarafından Yapılan Kısımlar

Siteye Kayıt Olurken

Siteye şirket olarak kayıt olmak için login sayfasında Şirket olarak Kayıt ol butonuna basılınca bu aşağıdaki form geliyor. İstenilen bilgiler doldurlunca login sayfasına geri dönülüyor. Buradan kayıt olduğunuz email ve şifre ile siteye giriş yapabiliyorsunuz.

map to buried treasure

Şirket kayıt formu

Siteye Admin Olarak Giriş Yapıldığında

Sirketim Sayfasına tıklanılınca 3 adet sayfa çıkıyor. Bunlar Ülkeler,Şirketler ve İş İlanlarıdır.

1)Ülkeler Tablosu

Bu sayfada ülkeler listeleniyor admin için.Listelenen ülkelerin ekleme, silme ve güncelleme işlemleri yapılıyor. Sil butonuna basıldığında o ülke siliniyor.

map to buried treasure

Bütün ülkelerin listelendiği sayfa.

Ülkeler sayfasının en altında ülke ekle butonu vardır.

map to buried treasure

Ülke ekleme butonu

Ülke Ekle butonuna basılınca aşağıdaki bu text formu ortaya çıkıyor. Buraya istenilen bilgiler girilerek ekleye basılarak ekleniliyor, iptale basılarak iptal ediliyor.

map to buried treasure

Ülke ekleme text formu

Düzenle Butonuna basıldığında bu aşağıdaki gibi ülkeyi düzenlemek için text formu geliyor. Burada düzenlenilecek ülkenin bilgileri yazılı duruyor,istenilen değiştirilip kaydet butonunna basılarak kaydediliyor veya iptal edilip ülkeler sayfasına geri dönülüyor.

map to buried treasure

Ülke duzenleme text formu

2)Şirketler Tablosu

Bu sayfada şirketler listeleniyor admin için. Listelenen şirketlerin ekleme, silme ve güncelleme işlemleri yapılıyor. Sil butonuna basıldığında o şirket siliniyor.

map to buried treasure

Bütün şirketlerin listelendiği sayfa.

Şirketler sayfasının en altında Şirket Ekle butonu vardır.

map to buried treasure

Şirket ekleme butonu

Şirket Ekle butonuna basılınca aşağıdaki bu text formu ortaya çıkıyor. Buraya istenilen bilgiler girilerek ekleye basılarak ekleniliyor, iptale basılarak iptal ediliyor. Şirketler tablosu dış anahtarla ülkeler tablosuna bağlı olduğundan, ülke bilgisini ülkeler tablosundaki verilere göre listeliyip seçebiliyoruz.

map to buried treasure

Şirket ekleme text formu

Düzenle Butonuna basıldığında bu aşağıdaki gibi şirketi düzenlemek için text formu geliyor. Burada düzenlenilecek şirketin bilgileri yazılı duruyor, istenilen değiştirilip kaydet butonunna basılarak kaydediliyor ve ya iptal edilip Şirketler sayfasına geri dönülüyor. Şirketler tablosu dış anahtarla ülkeler tablosuna bağlı olduğundan, ülke bilgisini ülkeler tablosundaki verilere göre listeliyip seçebiliyoruz.

map to buried treasure

Şirket duzenleme text formu

Aşağıda düzenlerken ülkeyi seçebilceğimiz liste görüntüsü vardır.

map to buried treasure

Ülke seçim listesi

3)İş İlanları Tablosu

Bu sayfada iş ilanları listeleniyor admin için. Listelenen iş ilanlarının ekleme,silme ve güncelleme işlemleri yapılıyor. Sil butonuna basıldığında o iş ilanı siliniyor.

map to buried treasure

Bütün iş ilanlarının listelendiği sayfa.

İş İlanları sayfasının en altında İş İlanı Ekle butonu vardır.

map to buried treasure

İş ilanı ekleme

İş İlanı Ekle butonuna basılınca aşağıdaki bu text formu ortaya çıkıyor. Buraya istenilen bilgiler girilerek ekleye basılarak ekleniliyor, iptale basılarak iptal ediliyor. İş İlanı tablosu dış anahtarla şirketler tablosuna bağlı olduğundan, şirket bilgisini şirketler tablosundaki verilere göre listeliyip seçebiliyoruz.

map to buried treasure

İş İlanı ekleme text formu

Düzenle Butonuna basıldığında bu aşağıdaki gibi iş ilanı düzenlemek için text formu geliyor. Burada düzenlenilecek iş ilanının bilgileri yazılı duruyor, istenilen değiştirilip kaydet butonunna basılarak kaydediliyor veya iptal edilip iş ilanları sayfasına geri dönülüyor. İş İlanı tablosu dış anahtarla şirketler tablosuna bağlı olduğundan, şirket bilgisini şirketler tablosundaki verilere göre listeliyip seçebiliyoruz.

map to buried treasure

İş İlanı duzenleme text formu

Aşağıda düzenlerken şirket seçebilceğimiz liste görüntüsü vardır.

map to buried treasure

Şirket seçim listesi

Siteye Kişi Olarak Giriş Yapıldığında

Şirketler ve İş İlanları sayfasına tıklanınca Bütün Şirketler ve İş İlanları sayfasına ulaşabiliyoruz.

1)Bütün Şirketler Sayfası

Bu sayfada kişi bütün şirketlerin bilgilerini ayrı ayrı liste şeklinde görebiliyor.Fakat kişi şirketler üzerinde herhangi bir değişiklil yapamıyor.Ekleme,silme güncelleme gibi.

map to buried treasure

Bütün şirketlerin bilgisi

2)Bütün İş İlanları Sayfası

Bu sayfada kişi bütün iş ilanlarının bilgilerini ayrı ayrı liste şeklinde görebiliyor.Fakat kişi iş ilanları üzerinde herhangi bir değişiklik yapamıyor.Ekleme,silme güncelleme gibi.

map to buried treasure

Bütün iş ilanlarının bilgisi

Siteye Şirket Olarak Giriş Yapıldığında

En sağ üstte şirket ismine tıklanıldığı zaman çıkan dropdownda Şirketim ve İş İlanlarım sayfasına tıklanıldığında Şirketimin Bilgileri,Diğer Şirket Bilgileri,İş İlanlarım ve Bütün İş İlanları sayfasına ulaşabiliyoruz.

1)Şirketimin Bilgileri Sayfası

Bu sayfada şirket kendi bilgilerini görebiliyor.Kendi bilgilerini düzenleyebiliyor.

map to buried treasure

Şirketimin bilgileri

Düzenle butonuna basılınca aşağıdaki text form geliyor ve değişiklik yapabiliyorsunuz istenilen bilgileri.İptal ile Şirketimin Bilgileri Sayfasına geri dönüyorsunuz.

map to buried treasure

Şirketimin düzenleme formu

2)Diğer Şirket Bilgileri Sayfası

Bu sayfada şirket bütün şirketlerin bilgilerini ayrı ayrı liste şeklinde görebiliyor.Fakat şirketler diğer şirketlerin üzerinde herhangi bir değişiklik yapamıyor.Ekleme,silme güncelleme gibi.

map to buried treasure

Bütün diğer şirketlerin bilgisi

3)İş İlanlarım Sayfası

Bu sayfada şirket kendi iş ilanlarına görebiliyor.İsterse var olan iş ilanını düzenleyip silebiliyor ve ya yeni bir iş ilanı ekleyebiliyor.

map to buried treasure

İş İlanlarımın bilgisi

Sayfanın en aşağısındaki İş ilanı Ekle butonuna basarak iş ilanı ekleyebiliyoruz.İş ilanı eklerken her hangi bir şirket bilgisi girmiyoruz.Sitede giriş yaptığımız şirketin bilgilerini otomatik alıyor.

map to buried treasure

İş İlanı ekleme formu

Eğer herhangi bir iş ilanımızın bilgilerini güncellemek istiyorsak düzenle tuşuna basıyoruz ve aşağıdaki form geliyor bize.

map to buried treasure

İş İlanı düzenleme formu

4)Bütün İş İlanları Sayfası

Bu sayfada şirket bütün iş ilanlarının bilgilerini ayrı ayrı liste şeklinde görebiliyor.Fakat şirket bu iş ilanları üzerinde herhangi bir değişiklik yapamıyor.Ekleme,silme güncelleme gibi.

map to buried treasure

Bütün iş ilanlarının bilgisi

Hamitcan MALKOÇ Tarafından Yapılan Kısımlar

  • Paylaşım

    • Paylaşım Ekleme

      Yeni paylaşım yollamak için metin yazıp göndere basınız

      Yaptığınız bir paylaşımı düzenlemek için paylaşımın sağ üst tarafında bulunan butona basınız

      Yaptığınız bir paylaşımı silmek için paylaşımın sağ alt tarafındaki bulunan butona basınız

_images/paylasimlar-ve-ekleme.png

paylaşımların gösterildiği ve yeni paylaşımın yapıldığı sayfa

  • Paylaşım Düzenleme

    Paylaşımı düzenlemek için karşınıza gelen paylaşım düzenleme formunda yeni metin yazıp butona basınız

_images/paylasim-duzenleme.png

paylaşım düzenleme formu

  • Mesaj

    • Mesaj Ekleme

      Yeni mesaj yollamak için metin yazıp göndere basınız

      Yaptığınız bir mesajı düzenlemek için mesajın sağ üst tarafında bulunan butona basınız

      Yaptığınız bir mesajı silmek için mesajın sağ alt tarafındaki bulunan butona basınız

_images/mesajlar-ve-ekleme.png

mesaj geçmişinin gösterildiği ve yeni mesaj gönderilen sayfa

  • Mesaj Düzenleme

    Mesajı düzenlemek için karşınıza gelen paylaşım düzenleme formunda yeni metin yazıp butona basınız

_images/mesaj-duzenleme.png

mesaj düzenleme formu

  • Yorum

    • Yorum Ekleme

      Yeni yorum yollamak için metin yazıp göndere basınız

      Yaptığınız bir yorumu düzenlemek için yorumun sağ üst tarafında bulunan butona basınız

      Yaptığınız bir yorumu silmek için yorumun sağ alt tarafındaki bulunan butona basınız

_images/yorumlar-ve-ekleme.png

yorumların gösterildiği ve yeni yorumun yapıldığı sayfa

  • Yorum Düzenleme

    Yorumu düzenlemek için karşınıza gelen paylaşım düzenleme formunda yeni metin yazıp butona basınız

_images/yorum-duzenleme.png

yorum düzenleme formu

Developer Guide

Database Design

ER Diagram

_images/er.png

Varlık-İlişki Diyagramı

Code

Hikmet ALTINTAŞ Tarafından Yapılan Kısımlar

Kayıt İşlemi (Add)

Kayıt işleminde form bilgileri alınır, veritabanı bağlantısı sağlanır ve ‘insert’ sorgusu yapılır. İlgili roller de ‘roller’ tablosuna eklenir. Kişi topluluk sayfasına yönlendirilir.

if request.method =='POST':
    isim = request.form['isim']
    soyisim = request.form['soyisim']
    cinsiyet = request.form['cinsiyet']
    email = request.form['email']
    sifre = request.form['sifre']

    session['name'] = isim

    try:
        with dbapi2.connect(current_app.config['dsn']) as connection:
            cursor = connection.cursor()

        query ="""INSERT INTO kisi (isim,soyisim,cinsiyet,sifre,email) VALUES(%s,%s,%s,%s,%s) RETURNING id"""
        cursor.execute(query,(isim,soyisim,cinsiyet,sifre,email))
        id = cursor.fetchone()[0]
        session['id'] = id

        query ="""INSERT INTO roller (varlikid,rol) VALUES(%s,%s)"""
        cursor.execute(query,(session['id'],'kisi'))
        connection.commit()
        .
        .
        .
    return redirect(url_for('topluluk.community'))
Giriş İşlemi

Kişi veya şirket olarak giriş yapılabilir. Kullanıcının girdiği veriler, request form ile alınır, veritabanı bağlantısı yapılır. Girilen email ve şifre ile veritabanındaki email ve şifre karşılaştırılır. Giriş yapıldığında gerekli ‘session’ değişkenleri atanır. Giriş başarılıysa topluluk sayfasında yönlendirilir. Başarısız girişte hata mesajı yazılır

email = request.form['email']
sifre = request.form['sifre']

with dbapi2.connect(current_app.config['dsn']) as connection:
    cursor = connection.cursor()

    query ="""select id,isim,sifre from kisi where (email=%s)"""
    cursor.execute(query,(email,))
    connection.commit()

    result = cursor.fetchone();

    if result and email :
        if sifre == result[2]:
            session['name'] = result[1]
            session['id'] = result[0]
            session['rol'] = 'kisi'

            ...

        return redirect(url_for('topluluk.community'))

    else:     # Şirket girişi
        query ="""select id,isim,sifre from sirket where (mail=%s)"""
        cursor.execute(query,(email,))
        connection.commit()
        result = cursor.fetchone();

        if result and email :
            if sifre == result[2]:
                session['name'] = result[1]
                session['id'] = result[0]
                session['rol'] = 'sirket'
return '<!DOCTYPE html><html><body><h1>Hatalı e-posta ya da şifre</h1></body></html>'
Çıkış İşlemi

Çıkış işleminde session değerleri sıfırlanır. Ana sayfaya yönlendirilir.

def cikis():
    session['id'] = 0
    session['name'] = ""
    return redirect(url_for('kisi.home_page'))
Profil Sayfasının Oluşturulması (Profil, Dil ve Okul için Select)

Giriş yapan kişinin session[‘id’]’sine göre veritabanında seçme işlemi yapılır. Kişi’nin bildiği diller ve okullar için join işlemi ile dil ve okul tablosu sorgulanır. Gelen bilgiler html içine ‘kisi’, ‘diller’ ve ‘okullar’ objeleri olarak gönderilir.

def profil(kisi_id):
    with dbapi2.connect(current_app.config['dsn']) as connection:
        cursor = connection.cursor()

        query = "SELECT * FROM kisi WHERE (kisi.id=%s)"
        cursor.execute(query,(kisi_id,))
        result = cursor.fetchone();
        kisi = Kisi(result[0],result[1],result[2],result[3],result[4],result[5],result[6],result[7],result[8])

        # 'dil join kisi'den dilleri bul
        query = "SELECT dil.id, dil.isim, dil.seviye, dil.sertifika FROM kisi, dil WHERE (kisi.id=%s) AND (kisi.id=dil.kisiid)"
        cursor.execute(query,(kisi_id,))
        result = cursor.fetchall()
        diller = []
        for dil in result:
            sertifikaId = dil[3]
            query = "SELECT sertifika FROM kurslar WHERE (idd=%s)"
            cursor.execute(query,(sertifikaId,))
            sertifikaIsim = cursor.fetchone()
            if not sertifikaIsim:
                sertifikaIsim = None
            else:
                sertifikaIsim = sertifikaIsim[0]
            yeniDil = Dil(dil[0],dil[1],dil[2],sertifikaIsim)
            diller.append(yeniDil)

        # 'okul join kisi'den okulları bul
        query = "SELECT okul.id, okul.isim, fakulte, bolum, tip, mezuniyet, ortalama FROM okul, kisi WHERE (kisi.id=%s) AND (kisi.id=okul.kisiid)"
        cursor.execute(query,(kisi_id,))
        result = cursor.fetchall()
        okullar = []
        for okul in result:
            yeniOkul = Okul(okul[0],okul[1],okul[2],okul[3],okul[4],okul[5],okul[6])
            okullar.append(yeniOkul)

        connection.commit()
        filename = '{yetki}/profil.html'.format(yetki=session['yetki'])
        return render_template(filename,kisi=kisi, diller=diller, okullar=okullar, kisi_id=kisi_id)
Profil Sayfasının Düzenlenmesi (Edit)

Düzenleme yaparken varolan bilgilerin formlarda gösterilmesi için ‘select’ sorgusu yapılır. Post metodunda, veritabanında ‘update’ sorgusu yapılarak bilgiler güncellenir.

...

cursor = connection.cursor()
query = "SELECT * FROM kisi WHERE (kisi.id=%s)"
cursor.execute(query,(session['id'],))
result = cursor.fetchone();
kisi = Kisi(result[0],result[1],result[2],result[3],result[4],result[5],result[6],result[7],result[8])

...

if request.method =='POST':

...

     with dbapi2.connect(current_app.config['dsn']) as connection:
         cursor = connection.cursor()
         query = "UPDATE kisi SET isim=%s,soyisim=%s,sifre=%s,dogumtarihi=%s,cinsiyet=%s,email=%s,telefon=%s,adres=%s WHERE (id=%s)"
         cursor.execute(query,(isim,soyisim,sifre,dogum,cinsiyet,email,telefon,adres,session['id']))
         connection.commit()
         return redirect(url_for('kisi.profil',kisi_id=session['id']))
Hesabın Silinmesi (Delete)

Profil kaydı veritabından ‘delete’ sorgusuyla silinir.

def kisi_sil():
    with dbapi2.connect(current_app.config['dsn']) as connection:
        cursor = connection.cursor()

        query ="""DELETE FROM kisi WHERE id=%s"""
        cursor.execute(query,(session['id'],))
        connection.commit()

        cikis()
    return redirect(url_for('kisi.home_page'))
Dillerin Eklenmesi, Düzenlemesi ve Silinmesi

Dil eklenirken form bilgileri alınır ve veritabanında ‘insert’ sorgusu yapılır.

def dil_ekle():
    with dbapi2.connect(current_app.config['dsn']) as connection:
        cursor = connection.cursor()
        isim = request.form['isim']
        seviye = request.form['seviye']
        sertifika = request.form['sertifika']
        print(sertifika)
        if not sertifika:
            sertifika = None
        query ="""INSERT INTO dil (isim,seviye,sertifika,kisiid) VALUES(%s,%s,%s,%s)"""
        cursor.execute(query,(isim,seviye,sertifika,session['id']))
        connection.commit()
    return redirect(url_for('kisi.profil',kisi_id=session['id']))

Düzenleme yaparken varolan bilgilerin formlarda gösterilmesi için ‘select’ sorgusu yapılır. Dil’in sertifikası varsa kurslar tablosu ile join edilerek sertifika bilgisi alınır. Kaydet butonuyla dil_edit’e id göderilir, veritabanında ‘update’ sorgusu yapılarak bilgiler güncellenir.

def profil_edit():
    if request.method =='GET':
        with dbapi2.connect(current_app.config['dsn']) as connection:

        ...

         # 'dil join kisi'den dilleri bul
         query = "SELECT dil.id, dil.isim, dil.seviye, dil.sertifika FROM kisi, dil WHERE (kisi.id=%s) AND (kisi.id=dil.kisiid)"
         cursor.execute(query,(session['id'],))
         result = cursor.fetchall()
         diller = []
         for dil in result:
             sertifikaId = dil[3]
             query = "SELECT sertifika FROM kurslar WHERE (idd=%s)"
             cursor.execute(query,(sertifikaId,))
             sertifikaIsim = cursor.fetchone()
             if not sertifikaIsim:
                 sertifikaIsim = None
             else:
                 sertifikaIsim = sertifikaIsim[0]
             yeniDil = Dil(dil[0],dil[1],dil[2],sertifikaIsim)
             diller.append(yeniDil)


def dil_edit():
    with dbapi2.connect(current_app.config['dsn']) as connection:
        cursor = connection.cursor()

        dilId = request.form['id']
        isim = request.form['isim']
        seviye = request.form['seviye']
        sertifika = request.form['sertifika']

        query ="""UPDATE dil SET isim=%s,seviye=%s,sertifika=%s WHERE (id=%s)"""
        cursor.execute(query,(isim,seviye,sertifika,dilId))
        connection.commit()
    return redirect(url_for('kisi.profil',kisi_id=session['id']))

Sil butonuyla dil_sil’e dilin id değeri post metoduyla gönderilir ve ‘delete’ sorgusuyla dil silinir.

def dil_sil():
    with dbapi2.connect(current_app.config['dsn']) as connection:
        cursor = connection.cursor()

        dilId = request.form['id']
        query ="""DELETE FROM dil WHERE id=%s"""
        cursor.execute(query,(dilId,))
        connection.commit()

    return redirect(url_for('kisi.profil',kisi_id=session['id']))
Okulların Eklenmesi, Düzenlemesi ve Silinmesi

Okul eklenirken form bilgileri alınır ve veritabanında ‘insert’ sorgusu yapılır.

def okul_ekle():
    with dbapi2.connect(current_app.config['dsn']) as connection:
        cursor = connection.cursor()
        isim = request.form['isim']
        fakulte = request.form['fakulte']
        bolum = request.form['bolum']
        tip = request.form['tip']
        mezuniyet = request.form['mezuniyet']
        ortalama = request.form['ortalama']
        if not mezuniyet:
            mezuniyet = None
        if not ortalama:
            ortalama = None
        query ="""INSERT INTO okul (isim,fakulte,bolum,tip,mezuniyet,ortalama,kisiid) VALUES(%s,%s,%s,%s,%s,%s,%s)"""
        cursor.execute(query,(isim,fakulte,bolum,tip,mezuniyet,ortalama,session['id']))
        connection.commit()
    return redirect(url_for('kisi.profil',kisi_id=session['id']))

Düzenleme yaparken varolan bilgilerin formlarda gösterilmesi için ‘select’ sorgusu yapılır. Kaydet butonuyla okul_edit’e id gönderilir, veritabanında ‘update’ sorgusu yapılarak bilgiler güncellenir.

def profil_edit():
    if request.method =='GET':
        with dbapi2.connect(current_app.config['dsn']) as connection:

        ...

         # 'okul join kisi'den okulları bul
         query = "SELECT okul.id, okul.isim, fakulte, bolum, tip, mezuniyet, ortalama FROM okul, kisi WHERE (kisi.id=%s) AND (kisi.id=okul.kisiid)"
         cursor.execute(query,(session['id'],))
         result = cursor.fetchall()
         okullar = []
         for okul in result:
             yeniOkul = Okul(okul[0],okul[1],okul[2],okul[3],okul[4],okul[5],okul[6])

def okul_edit():
    with dbapi2.connect(current_app.config['dsn']) as connection:
        cursor = connection.cursor()

        okulId = request.form['id']
        isim = request.form['isim']
        fakulte = request.form['fakulte']
        bolum = request.form['bolum']
        tip = request.form['tip']
        mezuniyet = request.form['mezuniyet']
        ortalama = request.form['ortalama']

        query ="""UPDATE okul SET isim=%s,fakulte=%s,bolum=%s,tip=%s,mezuniyet=%s,ortalama=%s WHERE (id=%s)"""
        cursor.execute(query,(isim,fakulte,bolum,tip,mezuniyet,ortalama,okulId))
        connection.commit()
    return redirect(url_for('kisi.profil',kisi_id=session['id']))

Sil butonuyla okul_sil’e okulun id değeri post metoduyla gönderilir ve ‘delete’ sorgusuyla dil silinir.

def okul_sil():
    with dbapi2.connect(current_app.config['dsn']) as connection:
        cursor = connection.cursor()

        okulId = request.form['id']
        query ="""DELETE FROM okul WHERE id=%s"""
        cursor.execute(query,(okulId,))
        connection.commit()

    return redirect(url_for('kisi.profil',kisi_id=session['id']))

Fatih Demirel Tarafından Yapılan Kısımlar

Hesap Sayfasının Oluşturulması

Hesap, Banka ve Ulke tabloları kullanıldı. Hesap bilgilerini databaseden çekerek HTML’e atan ve hesap ekleme yapan kod kısmı:

def hesap():
  hesaplar =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      query = """ SELECT HESAP.Id2 ,HESAP.KisiAd, HESAP.KisiSoyad, HESAP.Telefon, HESAP.Mail, HESAP.Adres, BANKA.BankAdii, HESAP.HesapNo, HESAP.Iban, HESAP.ParaMiktari,  ulke.para_birimi FROM HESAP, BANKA, ulke WHERE HESAP.BankAdi = BANKA.Idd AND HESAP.ParaBirimi = ulke.id;"""
      cursor.execute(query)
      for hesap in cursor:
          hesaplar.append(hesap)
      connection.commit()

  bankalar =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      query = """ SELECT Idd ,BankAdii, SubeKodu, SubeIsmi, Adres, Telefon, Fax, WebAdres FROM BANKA;"""
      cursor.execute(query)
      for banka in cursor:
          bankalar.append(banka)
      connection.commit()

  ulkeler =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      query = """ SELECT ulke.id,ulke.isim,ulke.dil, ulke.sembol, ulke.para_birimi, ulke.kita FROM ulke;"""
      cursor.execute(query)
      for ulke in cursor:
          ulkeler.append(ulke)
      connection.commit()

  if request.method == 'POST':
      KisiAd = request.form['KisiAd']
      KisiSoyad = request.form['KisiSoyad']
      Telefon = request.form['Telefon']
      Mail = request.form['Mail']
      Adres = request.form['Adres']
      BankAdi = request.form['BankAdi']
      HesapNo = request.form['HesapNo']
      Iban = request.form['Iban']
      ParaMiktari = request.form['ParaMiktari']
      ParaBirimi = request.form['ParaBirimi']

      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = """INSERT INTO HESAP (KisiAd, KisiSoyad, Telefon, Mail, Adres, BankAdi, HesapNo, Iban, ParaMiktari, ParaBirimi) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """
          cursor.execute(query, (KisiAd, KisiSoyad, Telefon, Mail, Adres, BankAdi, HesapNo, Iban, ParaMiktari, ParaBirimi))
          connection.commit()
          return redirect(url_for('account.hesap'))

  filename = '{yetki}/hesap.html'.format(yetki=session['yetki'])
  return render_template(filename, hesaplar = hesaplar, bankalar = bankalar, ulkeler = ulkeler)
Hesap Düzenleme Sayfasının Oluşturulması

Hesap bilgilerini databaseden çekerek HTML’e atan ve hesap güncelleme yapan kod kısmı:

def hesap_islem(Id2):
  hesaplar =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      cursor.execute(" SELECT HESAP.Id2 ,HESAP.KisiAd, HESAP.KisiSoyad, HESAP.Telefon, HESAP.Mail, HESAP.Adres, BANKA.BankAdii, HESAP.HesapNo, HESAP.Iban, HESAP.ParaMiktari,  ulke.para_birimi FROM HESAP, BANKA, ulke WHERE HESAP.BankAdi = BANKA.Idd AND HESAP.ParaBirimi = ulke.id AND Id2 = %s ", [Id2])
      for hesap in cursor:
          hesaplar.append(hesap)
      connection.commit()

  bankalar =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      query = """ SELECT Idd ,BankAdii, SubeKodu, SubeIsmi, Adres, Telefon, Fax, WebAdres FROM BANKA;"""
      cursor.execute(query)
      for banka in cursor:
          bankalar.append(banka)
      connection.commit()

  ulkeler =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      query = """ SELECT ulke.id,ulke.isim,ulke.dil, ulke.sembol, ulke.para_birimi, ulke.kita FROM ulke;"""
      cursor.execute(query)
      for ulke in cursor:
          ulkeler.append(ulke)
      connection.commit()

  if request.method == 'POST':
      KisiAd = request.form['KisiAd']
      KisiSoyad = request.form['KisiSoyad']
      Telefon = request.form['Telefon']
      Mail = request.form['Mail']
      Adres = request.form['Adres']
      BankAdi = request.form['BankAdi']
      HesapNo = request.form['HesapNo']
      Iban = request.form['Iban']
      ParaMiktari = request.form['ParaMiktari']
      ParaBirimi = request.form['ParaBirimi']

      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = """ UPDATE HESAP  SET KisiAd=%s, KisiSoyad=%s, Telefon=%s, Mail=%s, Adres=%s, BankAdi=%s, HesapNo=%s, Iban=%s, ParaMiktari=%s, ParaBirimi = %s WHERE (Id2 =%s)"""
          cursor.execute(query, (KisiAd, KisiSoyad, Telefon, Mail, Adres, BankAdi, HesapNo, Iban, ParaMiktari, ParaBirimi, Id2))
          connection.commit()
          return redirect(url_for('account.hesap'))

  filename = '{yetki}/hesap_islem.html'.format(yetki=session['yetki'])
  return render_template(filename, Id2 = Id2, hesaplar = hesaplar, bankalar = bankalar, ulkeler = ulkeler)
Hesap Silme İşleminin Yapılması

Hesap silme yapan kod kısmı:

def hesap_delete(Id2):
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      cursor.execute(" DELETE  FROM HESAP WHERE Id2 = %s ", [Id2])
      connection.commit()

  return redirect(url_for('account.hesap'))
Banka Sayfasının Oluşturulması

Banka bilgilerini databaseden çekerek HTML’e atan ve banka ekleme yapan kod kısmı:

def banka():
  bankalar =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      query = """ SELECT Idd ,BankAdii, SubeKodu, SubeIsmi, Adres, Telefon, Fax, WebAdres FROM BANKA;"""
      cursor.execute(query)
      for banka in cursor:
          bankalar.append(banka)
      connection.commit()

  if request.method == 'POST':
      BankAdii = request.form['BankAdii']
      SubeKodu = request.form['SubeKodu']
      SubeIsmi = request.form['SubeIsmi']
      Adres = request.form['Adres']
      Telefon = request.form['Telefon']
      Fax = request.form['Fax']
      WebAdres = request.form['WebAdres']

      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = """INSERT INTO BANKA (BankAdii, SubeKodu, SubeIsmi, Adres, Telefon, Fax, WebAdres) VALUES (%s, %s, %s, %s, %s, %s, %s) """
          cursor.execute(query, (BankAdii, SubeKodu, SubeIsmi, Adres, Telefon, Fax, WebAdres))
          connection.commit()
          return redirect(url_for('account.banka'))

  filename = '{yetki}/banka.html'.format(yetki=session['yetki'])
  return render_template(filename, bankalar = bankalar)
Banka Düzenleme Sayfasının Oluşturulması

Banka bilgilerini databaseden çekerek HTML’e atan ve banka güncelleme yapan kod kısmı:

def banka_islem(Idd):
  bankalar =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      cursor.execute(" SELECT Idd ,BankAdii, SubeKodu, SubeIsmi, Adres, Telefon, Fax, WebAdres FROM BANKA WHERE Idd = %s ", [Idd])
      for banka in cursor:
          bankalar.append(banka)
      connection.commit()

  if request.method == 'POST':
      BankAdii = request.form['BankAdii']
      SubeKodu = request.form['SubeKodu']
      SubeIsmi = request.form['SubeIsmi']
      Adres = request.form['Adres']
      Telefon = request.form['Telefon']
      Fax = request.form['Fax']
      WebAdres = request.form['WebAdres']

      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = """ UPDATE BANKA  SET BankAdii=%s, SubeKodu=%s, SubeIsmi=%s, Adres=%s, Telefon=%s, Fax=%s, WebAdres=%s WHERE (Idd =%s)"""
          cursor.execute(query, (BankAdii, SubeKodu, SubeIsmi, Adres, Telefon, Fax, WebAdres, Idd))
          connection.commit()
          return redirect(url_for('account.banka'))

  filename = '{yetki}/banka_islem.html'.format(yetki=session['yetki'])
  return render_template(filename, Idd = Idd, bankalar = bankalar)
Banka Silme İşleminin Yapılması

Banka silme yapan kod kısmı:

def banka_delete(Idd):
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      cursor.execute(" DELETE  FROM BANKA WHERE Idd = %s ", [Idd])
      connection.commit()

  return redirect(url_for('account.banka'))
İşlemler Sayfasının Oluşturulması

Hesap, Kurslar tabloları kullanıldı. İşlem bilgilerini databaseden çekerek HTML’e atan ve işlem ekleme yapan kod kısmı:

def islemler():

  islemlerr =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      query = """ SELECT ISLEMLER.Id3 ,kurslar.isim, HESAP.HesapNo, ISLEMLER.Miktar FROM HESAP, kurslar, ISLEMLER WHERE ISLEMLER.IslemTuru = kurslar.idd AND ISLEMLER.HesapSec = HESAP.Id2;"""
      cursor.execute(query)
      for islemler in cursor:
          islemlerr.append(islemler)
      connection.commit()



  hesaplar =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      query = """ SELECT HESAP.Id2 ,HESAP.KisiAd, HESAP.KisiSoyad, HESAP.Telefon, HESAP.Mail, HESAP.Adres, BANKA.BankAdii, HESAP.HesapNo, HESAP.Iban, HESAP.ParaMiktari,  ulke.para_birimi FROM HESAP, BANKA, ulke WHERE HESAP.BankAdi = BANKA.Idd AND HESAP.ParaBirimi = ulke.id;"""
      cursor.execute(query)
      for hesap in cursor:
          hesaplar.append(hesap)
      connection.commit()

  kurslar =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      query = """ SELECT kurslar.idd, kurslar.isim, kurslar.sertifika, kurslar.tipi, kurslar.katilimci_sayisi, kurslar.adres, kurslar.mail, kurslar.tel_no, ulke.dil FROM kurslar, ulke WHERE kurslar.dil = ulke.id;"""
      cursor.execute(query)
      for kurs in cursor:
          kurslar.append(kurs)
      connection.commit()





  if request.method == 'POST':
      IslemTuru = request.form['IslemTuru']
      HesapSec = request.form['HesapSec']
      Miktar = request.form['Miktar']


      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = """INSERT INTO ISLEMLER (IslemTuru, HesapSec, Miktar) VALUES (%s, %s, %s) """
          cursor.execute(query, (IslemTuru, HesapSec, Miktar))
          connection.commit()
          return redirect(url_for('account.islemler'))


  filename = '{yetki}/islemler.html'.format(yetki=session['yetki'])
  return render_template(filename, hesaplar = hesaplar, kurslar = kurslar, islemlerr = islemlerr)
İşlem Düzenleme Sayfasının Oluşturulması

İşlem bilgilerini databaseden çekerek HTML’e atan ve işlem güncelleme yapan kod kısmı:

def islemler_islem(Id3):

  islemlerr =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      cursor.execute(" SELECT ISLEMLER.Id3 ,kurslar.isim, HESAP.HesapNo, ISLEMLER.Miktar FROM HESAP, kurslar, ISLEMLER WHERE ISLEMLER.IslemTuru = kurslar.idd AND ISLEMLER.HesapSec = HESAP.Id2 AND Id3 = %s ", [Id3])
      for islemler in cursor:
          islemlerr.append(islemler)
      connection.commit()



  hesaplar =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      query = """ SELECT HESAP.Id2 ,HESAP.KisiAd, HESAP.KisiSoyad, HESAP.Telefon, HESAP.Mail, HESAP.Adres, BANKA.BankAdii, HESAP.HesapNo, HESAP.Iban, HESAP.ParaMiktari,  ulke.para_birimi FROM HESAP, BANKA, ulke WHERE HESAP.BankAdi = BANKA.Idd AND HESAP.ParaBirimi = ulke.id;"""
      cursor.execute(query)
      for hesap in cursor:
          hesaplar.append(hesap)
      connection.commit()

  kurslar =[]
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      query = """ SELECT kurslar.idd, kurslar.isim, kurslar.sertifika, kurslar.tipi, kurslar.katilimci_sayisi, kurslar.adres, kurslar.mail, kurslar.tel_no, ulke.dil FROM kurslar, ulke WHERE kurslar.dil = ulke.id;"""
      cursor.execute(query)
      for kurs in cursor:
          kurslar.append(kurs)
      connection.commit()


  if request.method == 'POST':
      IslemTuru = request.form['IslemTuru']
      HesapSec = request.form['HesapSec']
      Miktar = request.form['Miktar']


      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = """ UPDATE ISLEMLER  SET IslemTuru=%s, HesapSec=%s, Miktar=%s WHERE (Id3 =%s)"""
          cursor.execute(query, (IslemTuru, HesapSec, Miktar, Id3))
          connection.commit()
          return redirect(url_for('account.islemler'))

  filename = '{yetki}/islemler_islem.html'.format(yetki=session['yetki'])
  return render_template(filename, Id3 = Id3, hesaplar = hesaplar, kurslar = kurslar, islemlerr = islemlerr)
İşlem Silme İşleminin Yapılması

İşlem silme yapan kod kısmı:

def islemler_delete(Id3):
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      cursor.execute(" DELETE  FROM ISLEMLER WHERE Id3 = %s ", [Id3])
      connection.commit()

  return redirect(url_for('account.islemler'))

Hasan Berat Özfidan Tarafından Yapılan Kısımlar

Hizmetler Sayfasının Oluşturulması

Kurslar, reklamlar ve etkinlikler tabloları kullanıldı. Kurs bilgilerini ve dil bilgilerini (ülke tablosundan) databaseden çekerek HTML’e atan ve kurs ekleme yapan kod kısmı:

def services():
    services = []
    with dbapi2.connect(current_app.config['dsn']) as connection:
        cursor = connection.cursor()
        query = """ SELECT kurslar.idd, kurslar.isim, kurslar.sertifika, kurslar.tipi, kurslar.katilimci_sayisi, kurslar.adres, kurslar.mail, kurslar.tel_no, ulke.dil FROM kurslar, ulke WHERE kurslar.dil = ulke.id;"""
        cursor.execute(query)

        for hizmet in cursor:
            services.append(hizmet)

        connection.commit()

    ulkeler = []
    with dbapi2.connect(current_app.config['dsn']) as connection:
        cursor = connection.cursor()
        query = """ SELECT ulke.id,ulke.isim,ulke.dil, ulke.sembol, ulke.para_birimi, ulke.kita FROM ulke;"""
        cursor.execute(query)

        for ulke in cursor:

            ulkeler.append(ulke)

            connection.commit()

    if request.method == 'POST':
        with dbapi2.connect(current_app.config['dsn']) as connection:
            cursor = connection.cursor()

            query= """
            INSERT INTO kurslar
            (isim, sertifika, tipi, katilimci_sayisi, adres, mail, tel_no,dil)
            VALUES (%(isim)s, %(sertifika)s, %(tipi)s, %(katilimci_sayisi)s, %(adres)s, %(mail)s, %(tel_no)s, %(dil)s)
            """

            cursor.execute(query, request.form)
            connection.commit()
            return redirect(url_for('hizmetler.services'))


    else:
        filename = '{yetki}/hizmetler.html'.format(yetki=session['yetki'])
        return render_template(filename,services=services, ulkeler=ulkeler)
Kurs Düzenleme Sayfasının Oluşturulması

Kurs bilgilerini ve dil bilgilerini (ülke tablosundan) databaseden çekerek HTML’e atan ve kurs güncellenmesini içeren bu kod kısmında HTML’den gönderilen “idd” değişkeni üzerinden seçim işlemi yapılarak veriler HTML’e yazdırılır ve güncellenilir.

def hizmet_islem(idd):
      ulkeler = []
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = """ SELECT ulke.id,ulke.isim,ulke.dil, ulke.sembol, ulke.para_birimi, ulke.kita FROM ulke;"""
          cursor.execute(query)

      for ulke in cursor:

          ulkeler.append(ulke)

          connection.commit()


      services =[]
      with dbapi2.connect(current_app.config["dsn"]) as connection:
          cursor = connection.cursor()
          cursor.execute(" SELECT kurslar.idd,kurslar.isim,kurslar.sertifika, kurslar.tipi, kurslar.katilimci_sayisi, kurslar.adres, kurslar.mail, kurslar.tel_no, ulke.dil FROM kurslar, ulke WHERE kurslar.dil = ulke.id AND idd = %s ", [idd])
          for kurs in cursor:
              services.append(kurs)
          connection.commit()

      if  request.method == 'POST':
          isim = request.form['isim']
          sertifika = request.form['sertifika']
          tipi = request.form['tipi']
          katilimci_sayisi = request.form['katilimci_sayisi']
          adres = request.form['adres']
          mail = request.form['mail']
          tel_no = request.form['tel_no']
          dil = request.form['dil']

          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
              query = """ UPDATE kurslar  SET isim=%s, sertifika=%s, tipi=%s, katilimci_sayisi=%s, adres=%s, mail=%s, tel_no=%s, dil=%s WHERE (idd =%s)"""
              cursor.execute(query, (isim, sertifika, tipi, katilimci_sayisi, adres, mail, tel_no, dil, idd))
              connection.commit()
              return redirect(url_for('hizmetler.services'))

      filename = '{yetki}/hizmet_islem.html'.format(yetki=session['yetki'])
      return render_template(filename, idd = idd, services = services, ulkeler = ulkeler)
Kurs Silme İşleminin Yapılması

Kurs silme yapan kod kısmında HTML’den gönderilen “idd” değişkeni kullanılarak satır silme tamamlanır.

def hizmet_delete(idd):
    with dbapi2.connect(current_app.config["dsn"]) as connection:
        cursor = connection.cursor()
        cursor.execute(" DELETE  FROM kurslar WHERE idd = %s ", [idd])
        connection.commit()

    return redirect(url_for('hizmetler.services'))
Reklam Sayfasının Oluşturulması

Reklam bilgilerini databaseden çekerek HTML’e atan ve reklam ekleme yapan kod kısmı:

reklamlar = []
 with dbapi2.connect(current_app.config['dsn']) as connection:
     cursor = connection.cursor()
     query = """ SELECT reklamlar.id,reklamlar.veren_adi,reklamlar.reklam_adi,reklamlar.sure,reklamlar.gosterilme_sikligi,reklamlar.boyut,reklamlar.yas_grubu,reklamlar.bitis_tarihi,reklamlar.fiyat FROM reklamlar;"""
     cursor.execute(query)

     for reklam in cursor:
         reklamlar.append(reklam)

     connection.commit()


 if request.method == 'POST':
     with dbapi2.connect(current_app.config['dsn']) as connection:
         cursor = connection.cursor()

         query= """
         INSERT INTO reklamlar
         (veren_adi,reklam_adi,sure,gosterilme_sikligi,boyut,yas_grubu,bitis_tarihi,fiyat)
         VALUES (%(veren_adi)s, %(reklam_adi)s, %(sure)s, %(gosterilme_sikligi)s, %(boyut)s, %(yas_grubu)s, %(bitis_tarihi)s, %(fiyat)s)
         """

         cursor.execute(query, request.form)
         connection.commit()
         return redirect(url_for('hizmetler.reklamlar'))


 else:
     filename = '{yetki}/hizmet_reklamlar.html'.format(yetki=session['yetki'])
     return render_template(filename,reklamlar=reklamlar)
Reklam Düzenleme Sayfasının Oluşturulması

Reklam bilgilerini databaseden çekerek HTML’e atan ve reklam güncelleme yapan bu kod kısmında HTML’den gönderilen “id” değişkeni kullanılarak güncellenecek veriler yazılır ve güncellenir.

def reklamlar_islem(id):
      reklamlar =[]
      with dbapi2.connect(current_app.config["dsn"]) as connection:
          cursor = connection.cursor()
          cursor.execute( "SELECT reklamlar.id,reklamlar.veren_adi,reklamlar.reklam_adi,reklamlar.sure,reklamlar.gosterilme_sikligi,reklamlar.boyut,reklamlar.yas_grubu,reklamlar.bitis_tarihi,reklamlar.fiyat FROM reklamlar WHERE id = %s", [id])
          for reklam in cursor:
              reklamlar.append(reklam)
          connection.commit()

      if  request.method == 'POST':
          veren_adi = request.form['veren_adi']
          reklam_adi = request.form['reklam_adi']
          sure = request.form['sure']
          gosterilme_sikligi = request.form['gosterilme_sikligi']
          boyut = request.form['boyut']
          yas_grubu = request.form['yas_grubu']
          bitis_tarihi = request.form['bitis_tarihi']
          fiyat = request.form['fiyat']

          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
              query = """ UPDATE reklamlar SET veren_adi=%s, reklam_adi=%s, sure=%s, gosterilme_sikligi=%s, boyut=%s, yas_grubu=%s, bitis_tarihi=%s, fiyat=%s WHERE (id =%s)"""
              cursor.execute(query, (veren_adi, reklam_adi, sure, gosterilme_sikligi, boyut, yas_grubu, bitis_tarihi, fiyat, id))
              connection.commit()
              return redirect(url_for('hizmetler.reklamlar'))
      filename = '{yetki}/hizmet_reklam_islem.html'.format(yetki=session['yetki'])
      return render_template(filename, id = id, reklamlar = reklamlar)
Reklam Silme İşleminin Yapılması

Reklam silme yapan bu kod kısmında reklam satırının “id” değişkeni üzerinden seçim işlemi yapılır. Güncellenecek veriler HTML’e yazdırılır ve güncellenir.

def reklamlar_delete(id):
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      cursor.execute(" DELETE FROM reklamlar WHERE id = %s ", [id])
      connection.commit()

  return redirect(url_for('hizmetler.reklamlar'))
Etkinlikler Sayfasının Oluşturulması

Etkinlik bilgilerini databaseden çekerek HTML’e atan ve etkinlik ekleme yapan kod kısmı:

def etkinlikler():
    etkinlikler = []
    with dbapi2.connect(current_app.config['dsn']) as connection:
        cursor = connection.cursor()
        query = """ SELECT etkinlikler.id,etkinlikler.veren_adi,etkinlikler.etkinlik_adi,etkinlikler.etkinlik_konusu,etkinlikler.yer,etkinlikler.tarih,etkinlikler.saat,etkinlikler.kontenjan FROM etkinlikler;"""
        cursor.execute(query)

        for etkinlik in cursor:
            etkinlikler.append(etkinlik)

        connection.commit()


    if request.method == 'POST':
        with dbapi2.connect(current_app.config['dsn']) as connection:
            cursor = connection.cursor()

            query= """
            INSERT INTO etkinlikler
            (veren_adi,etkinlik_adi,etkinlik_konusu,yer,tarih,saat,kontenjan)
            VALUES (%(veren_adi)s, %(etkinlik_adi)s, %(etkinlik_konusu)s, %(yer)s, %(tarih)s, %(saat)s, %(kontenjan)s)
            """

            cursor.execute(query, request.form)
            connection.commit()
            return redirect(url_for('hizmetler.etkinlikler'))


    else:
        filename = '{yetki}/hizmet_etkinlikler.html'.format(yetki=session['yetki'])
        return render_template(filename,etkinlikler=etkinlikler)
Etkinlik Düzenleme Sayfasının Oluşturulması

Etkinlik bilgilerini databaseden çekerek HTML’e atan ve etkinlik güncelleme yapan bu kod kısmında HTML’den gönderilen “id” değişkeni üzerinden seçilen satır tekrar HTML’e yazdırılır ve güncellenir.

def etkinlikler_islem(id):
      etkinlikler =[]
      with dbapi2.connect(current_app.config["dsn"]) as connection:
          cursor = connection.cursor()
          cursor.execute( "SELECT etkinlikler.id,etkinlikler.veren_adi,etkinlikler.etkinlik_adi,etkinlikler.etkinlik_konusu,etkinlikler.yer,etkinlikler.tarih,etkinlikler.saat,etkinlikler.kontenjan FROM etkinlikler WHERE id = %s", [id])
          for etkinlik in cursor:
              etkinlikler.append(etkinlik)
          connection.commit()

      if  request.method == 'POST':
          veren_adi = request.form['veren_adi']
          etkinlik_adi = request.form['etkinlik_adi']
          etkinlik_konusu = request.form['etkinlik_konusu']
          yer = request.form['yer']
          tarih = request.form['tarih']
          saat = request.form['saat']
          kontenjan = request.form['kontenjan']


          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
              query = """ UPDATE etkinlikler SET veren_adi=%s, etkinlik_adi=%s, etkinlik_konusu=%s, yer=%s, tarih=%s, saat=%s, kontenjan=%s WHERE (id =%s)"""
              cursor.execute(query, (veren_adi, etkinlik_adi, etkinlik_konusu, yer, tarih, saat, kontenjan, id))
              connection.commit()
              return redirect(url_for('hizmetler.etkinlikler'))

      filename = '{yetki}/hizmet_etkinlikler_islem.html'.format(yetki=session['yetki'])
      return render_template(filename, id = id, etkinlikler = etkinlikler)
Reklam Silme İşleminin Yapılması

Reklam silme yapan bu kod kısmında silinecek satırın “id” değişkeni üzerinden silme işlemi tamamlanır.

def etkinlikler_delete(id):
  with dbapi2.connect(current_app.config["dsn"]) as connection:
      cursor = connection.cursor()
      cursor.execute(" DELETE FROM etkinlikler WHERE id = %s ", [id])
      connection.commit()

  return redirect(url_for('hizmetler.etkinlikler'))

Emir Bilgin Tarafından Yapılan Kısımlar

Tabloların Oluşturulması

1)Ulke Tablosu

Ulke tablosunun oluşturulması ve örnek verilerin veritabanına eklenmesi aşağıdaki koddaki gibi initialize_db.py’da yapıldı.

cursor.execute("""DROP TABLE IF EXISTS ulke CASCADE""")
cursor.execute("""CREATE TABLE ulke (
                        id SERIAL PRIMARY KEY NOT NULL,
                        isim VARCHAR(500) NOT NULL UNIQUE,
                        dil VARCHAR(50),
                        sembol VARCHAR(5),
                        para_birimi VARCHAR(50),
                        kita VARCHAR(50))""")


cursor.execute("""INSERT INTO ulke(isim,dil,sembol,para_birimi ,kita)VALUES (
                    'Türkiye',
                    'Türkçe',
                    'TR',
                    'Türk Lirası',
                    'Avrupa')""")

cursor.execute("""INSERT INTO ulke(isim,dil,sembol,para_birimi ,kita)VALUES (
                    'İngiltere',
                    'İnglizce',
                    'ENG',
                    'Pound',
                    'Avrupa')""")

2)Şirket Tablosu

Şirket tablosunun oluşturulması ve örnek verilerin veritabanına eklenmesi aşağıdaki koddaki gibi initialize_db.py’da yapıldı.

cursor.execute("""DROP TABLE IF EXISTS sirket CASCADE""")
cursor.execute("""CREATE TABLE sirket (
                        id SERIAL PRIMARY KEY NOT NULL,
                        isim VARCHAR(500) UNIQUE ,
                        sifre VARCHAR(20) NOT NULL,
                        tipi VARCHAR(50),
                        sektor VARCHAR(50),
                        isci_sayisi VARCHAR(50) DEFAULT 0,
                        adres VARCHAR(50),
                        mail VARCHAR(50) NOT NULL UNIQUE,
                        tel_num VARCHAR(50),
                        ulke INTEGER REFERENCES ulke(id) ON DELETE RESTRICT ON UPDATE CASCADE )""")

#sirket tablosuna insert yapılıyor
cursor.execute("""INSERT INTO sirket(isim,sifre,tipi,sektor,isci_sayisi ,adres,mail , tel_num ,ulke)VALUES(
                    'Sabanci Hold',
                    'pass',
                    'Anonim',
                    'Enerji',
                    34765,
                    'Maslak/Istanbul',
                    'sabanci@sab.com.tr',
                    902323371267,
                    '1')""")
cursor.execute("""INSERT INTO sirket(isim,sifre,tipi,sektor,isci_sayisi ,adres,mail , tel_num ,ulke)VALUES (
                    'Koc Hold',
                    'pass',
                    'LTD',
                    'Yazılım',
                    34732,
                    'Kağıthane/Istanbul',
                    'koc@koc.com.tr',
                    902323332267,
                    '1')""")
cursor.execute("""INSERT INTO sirket(isim,sifre,tipi,sektor,isci_sayisi ,adres,mail , tel_num ,ulke)VALUES (
                    'Dogus Hold',
                    'pass',
                    'Komandit',
                    'Otomotiv',
                    12567,
                    'Gebze/Kocaeli',
                    'dogus@dogus.com.tr',
                    902303672267,
                    '1')""")

3)İş İlanı Tablosu

İş ilanı tablosunun oluşturulması ve örnek verilerin veritabanına eklenmesi aşağıdaki koddaki gibi initialize_db.py’da yapıldı.

cursor.execute("""DROP TABLE IF EXISTS is_ilani CASCADE""")
cursor.execute("""CREATE TABLE is_ilani (
                        id SERIAL PRIMARY KEY NOT NULL,
                        meslek VARCHAR(500),
                        pozisyon VARCHAR(50),
                        deneyim VARCHAR(50),
                        yetenek VARCHAR(50),
                        yabanci_dil VARCHAR(50),
                        sirket INTEGER REFERENCES sirket(id) ON DELETE RESTRICT ON UPDATE CASCADE )""")


cursor.execute("""INSERT INTO is_ilani(meslek,pozisyon,deneyim,yetenek,yabanci_dil ,sirket)VALUES (
                    'Bilgisayar Mühendisi',
                    'Veritabanı Takım Lideri',
                    '3 Yıllık Veritabanı Deneyimi',
                    'SQL',
                    'İngilizce',
                    '1')""")
cursor.execute("""INSERT INTO is_ilani(meslek,pozisyon,deneyim,yetenek,yabanci_dil ,sirket)VALUES (
                    'İnşaat Mühendisi',
                    'Şantiye Şefi',
                    '3 Yıllık Şantiye Deneyimi',
                    'Betonarme',
                    'Arapça',
                    '2')""")
cursor.execute("""INSERT INTO is_ilani(meslek,pozisyon,deneyim,yetenek,yabanci_dil ,sirket)VALUES (
                    'Endüstri Mühendisi',
                    'Proje Yönetimi Lideri',
                    '6 Yıllık Proje Yönetimi Deneyimi',
                    'Proje Yönetimi',
                    'İngilizce,Fransızca',
                    '3')""")
Ülke Gösterme ve Ekleme

Ülkeler üstünde oynamayı sadece admin yapabildiği için önce admin yekisi kontrolü yapılıyor.Ekleme yapılmıyorsa SELECT ile veritabanındaki bütün ülkeler listeleniyor.Eğer ekleme varsa POST metodu ile INSERT işlemi yapılarak veritabanına yeni bir ülke ekleniyor.

def sirket_page():

  .
  .
  .
  .
  .

      elif session['yetki'] =='admin':

          query = """ SELECT ulke.id,ulke.isim,ulke.dil, ulke.sembol, ulke.para_birimi, ulke.kita FROM ulke;"""
          cursor.execute(query)

          for ulke in cursor:

              ulkeler.append(ulke)

              connection.commit()

          if request.method == 'POST':
              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query= """INSERT INTO ulke(isim, dil, sembol, para_birimi, kita)VALUES (%(isim)s, %(dil)s, %(sembol)s, %(para_birimi)s, %(kita)s )"""

                  cursor.execute(query, request.form)
                  connection.commit()
                  return redirect(url_for('sirket.sirket_page'))

          else:
              filename = '{yetki}/sirketler.html'.format(yetki=session['yetki'])
              return render_template(filename,ulkeler=ulkeler)
Ülke Güncelleme

Güncellenecek ülkenin id si alınarak hangi ülkenin güncelleneceği SELECT işlemi ile seçilir.Sonra html formundan değişkenleri alarak UPDATE işlemi yapılır.

def edit_ulke(ulke_id):
  if request.method =='GET':

      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = """SELECT * FROM ulke WHERE (ulke.id=%s)"""
          cursor.execute(query,[ulke_id])
          result = cursor.fetchone();
          ulke = Ulke(result[0],result[1],result[2],result[3],result[4],result[5])
          filename = '{yetki}/ulke_edit.html'.format(yetki=session['yetki'])
          return render_template(filename,ulke=ulke)


  if request.method =='POST':
      isim = request.form['isim']
      dil = request.form['dil']
      sembol = request.form['sembol']
      para_birimi = request.form['para_birimi']
      kita = request.form['kita']

      x=ulke_id
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = """UPDATE ulke SET isim=%s ,dil=%s ,sembol=%s ,para_birimi=%s ,kita=%s  WHERE (id=%s)"""
          cursor.execute(query,(isim,dil,sembol,para_birimi,kita,x))
          connection.commit()
          return redirect(url_for('sirket.sirket_page'))
Ülke Silme

Ülke id sini alıp DELETE işlemi ile istenilen ülke siliniyor.

def delete_ulke(ulke_id):
  with dbapi2.connect(current_app.config['dsn']) as connection:
      cursor = connection.cursor()
      query = """DELETE from ulke WHERE (id = %s)"""
      cursor.execute(query,[ulke_id])
      connection.commit()
      return redirect(url_for('sirket.sirket_page'))
Şirket Gösterme ve Ekleme

Şirketleri göstermek için SELECT işlemini kullanarak veritabanındaki bütün şirketleri listeliyoruz html de.Şirket ekleme işlemini tek admin yapabiliyor.Şirket eklerken ülke tablosundan ülkeleri dış referans yapıldığından bütün ülkeleri listemek için ülke tablosu için SELECT işlemini yapıyoruz.Sonrasında ise POST methodu ile alınan gerekli bilgileri INSERT işlemi ile şirket eklemeyi yapıyoruz.

def diger_sirketler_page():

  ulkeler = []
  .
  .
  .
  .
  .
      elif session['yetki'] =='admin':

          cursor = connection.cursor()
          query = """ SELECT ulke.id,ulke.isim,ulke.dil, ulke.sembol, ulke.para_birimi, ulke.kita FROM ulke ;"""
          cursor.execute(query)

          for ulke in cursor:

              ulkeler.append(ulke)

              connection.commit()



          companys = []
          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
              query = """ SELECT sirket.id,sirket.isim, sirket.tipi, sirket.sektor, sirket.isci_sayisi, sirket.adres, sirket.mail, sirket.tel_num,ulke.isim,ulke.dil,ulke.kita FROM sirket,ulke where (sirket.ulke=ulke.id);"""
              cursor.execute(query)

              for sirketler in cursor:

                  companys.append(sirketler)

                  connection.commit()

              if request.method == 'POST':
                  with dbapi2.connect(current_app.config['dsn']) as connection:
                      cursor = connection.cursor()
                      query= """INSERT INTO sirket(isim, tipi, sektor, isci_sayisi, adres, mail, tel_num,ulke)VALUES (%(isim)s, %(tipi)s, %(sektor)s, %(isci_sayisi)s, %(adres)s, %(mail)s, %(tel_num)s, %(ulke)s )"""

                      cursor.execute(query, request.form)
                      connection.commit()
                      return redirect(url_for('sirket.diger_sirketler_page'))

              else:
                  filename = '{yetki}/diger_sirketler.html'.format(yetki=session['yetki'])
                  return render_template(filename,companys=companys,ulkeler=ulkeler)
Şirket Güncelleme

Şirket güncelleme işlemini admin ve şirket yapabiliyor.Admin ve şirketin ayrı layout ve html leri olduğunda,ikisini ayrıacak koşul yazıldı.Temelde ikisi de aynı işlemi yapıyor.Şirket id’sini fonksiyona göderip SELECT işlemi ile şirket seçiliyor.Sonra bu şirketi UPDATE işlemi ile gerekli bilgilerini güncelliyor.

def edit_sirket(sirket_id):

  ulkeler = []

  with dbapi2.connect(current_app.config['dsn']) as connection:
      if session['rol']=='sirket':
          cursor = connection.cursor()
          query = """ SELECT ulke.id,ulke.isim,ulke.dil, ulke.sembol, ulke.para_birimi, ulke.kita FROM ulke ;"""
          cursor.execute(query)

          for ulke in cursor:

              ulkeler.append(ulke)

              connection.commit()



          if request.method =='GET':

              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query = """SELECT * FROM sirket WHERE (sirket.id=%s)"""
                  cursor.execute(query,[sirket_id])
                  result = cursor.fetchone();
                  sirket = Sirket(result[0],result[1],result[2],result[3],result[4],result[5],result[6],result[7],result[8],result[9])
                  filename = '{yetki}/edit_sirketim.html'.format(yetki=session['yetki'])
                  return render_template(filename,sirket=sirket,ulkeler=ulkeler)


          if request.method =='POST':
              isim = request.form['isim']
              tipi = request.form['tipi']
              sektor = request.form['sektor']
              isci_sayisi = request.form['isci_sayisi']
              adres = request.form['adres']
              mail = request.form['mail']
              tel_num = request.form['tel_num']
              ulke = request.form['ulke']

              x=sirket_id
              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query = """UPDATE sirket SET isim=%s ,tipi=%s ,sektor=%s ,isci_sayisi=%s ,adres=%s ,mail=%s ,tel_num=%s,ulke =%s   WHERE (id=%s)"""
                  cursor.execute(query,(isim,tipi,sektor,isci_sayisi,adres,mail,tel_num,ulke,x))
                  connection.commit()
                  return redirect(url_for('sirket.sirket_page'))


      elif session['yetki'] =='admin':

          cursor = connection.cursor()
          query = """ SELECT ulke.id,ulke.isim,ulke.dil, ulke.sembol, ulke.para_birimi, ulke.kita FROM ulke ;"""
          cursor.execute(query)

          for ulke in cursor:

              ulkeler.append(ulke)

              connection.commit()



          if request.method =='GET':

              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query = """SELECT * FROM sirket WHERE (sirket.id=%s)"""
                  cursor.execute(query,[sirket_id])
                  result = cursor.fetchone();
                  sirket = Sirket(result[0],result[1],result[2],result[3],result[4],result[5],result[6],result[7],result[8],result[9])
                  filename = '{yetki}/edit_sirket.html'.format(yetki=session['yetki'])
                  return render_template(filename,sirket=sirket,ulkeler=ulkeler)


          if request.method =='POST':
              isim = request.form['isim']
              tipi = request.form['tipi']
              sektor = request.form['sektor']
              isci_sayisi = request.form['isci_sayisi']
              adres = request.form['adres']
              mail = request.form['mail']
              tel_num = request.form['tel_num']
              ulke = request.form['ulke']

              x=sirket_id
              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query = """UPDATE sirket SET isim=%s ,tipi=%s ,sektor=%s ,isci_sayisi=%s ,adres=%s ,mail=%s ,tel_num=%s,ulke =%s   WHERE (id=%s)"""
                  cursor.execute(query,(isim,tipi,sektor,isci_sayisi,adres,mail,tel_num,ulke,x))
                  connection.commit()
                  return redirect(url_for('sirket.diger_sirketler_page'))
Şirket Silme

Şirket id’sini fonksiyona göndererek şirketi DELETE işlemi ile silebiliyoruz.

def delete_sirket(sirket_id):
  with dbapi2.connect(current_app.config['dsn']) as connection:
      cursor = connection.cursor()
      query = """DELETE from sirket WHERE (id = %s)"""
      cursor.execute(query,[sirket_id])
      connection.commit()
      return redirect(url_for('sirket.diger_sirketler_page'))
Şirket Olarak Siteye Kayıt Olma

Siteye şirket olarak kayıt olurken ülke tablosundan ülkeleri dış referans yapıldığından bütün ülkeleri listemek için ülke tablosu için SELECT işlemini yapıyoruz.Sonrasında ise POST methodu ile alınan gerekli bilgileri INSERT işlemi ile şirket ekleyip sisteme kayıt ediyoruz.

def sirket_kayit():
  ulkeler=[]
  with dbapi2.connect(current_app.config['dsn']) as connection:
      cursor = connection.cursor()
      query = """ SELECT ulke.id,ulke.isim,ulke.dil, ulke.sembol, ulke.para_birimi, ulke.kita FROM ulke ;"""
      cursor.execute(query)

      for ulke in cursor:

          ulkeler.append(ulke)

          connection.commit()

      if request.method == 'POST':



          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
              query= """INSERT INTO sirket(isim, tipi, sektor, isci_sayisi, adres, mail, tel_num,ulke,sifre)VALUES (%(isim)s, %(tipi)s, %(sektor)s, %(isci_sayisi)s, %(adres)s, %(mail)s, %(tel_num)s, %(ulke)s, %(sifre)s ) RETURNING id"""
              cursor.execute(query, request.form)
              id = cursor.fetchone()[0]
              session['id'] = id

              query ="""INSERT INTO roller (varlikid,rol,yetki) VALUES(%s,%s,%s)"""
              cursor.execute(query,(session['id'],'sirket','sirket'))
              connection.commit()
              return redirect('')

      else:

          return render_template('sirket_kayit.html',ulkeler=ulkeler)
Şirket Olarak Siteye Kayıt Olma

Paylaşım sayfasında şirket ismine tıklanınca,tıklanılan şirketi göstermek için SELECT işlemi ile yapılmış şirket gösterme fonksiyonudur.

def show_sirket(sirket_id):
  with dbapi2.connect(current_app.config['dsn']) as connection:
      cursor = connection.cursor()
      query = """SELECT sirket.id,sirket.isim, sirket.tipi, sirket.sektor, sirket.isci_sayisi, sirket.adres, sirket.mail, sirket.tel_num,ulke.isim,ulke.dil,ulke.kita FROM sirket,ulke where (sirket.id = %s) and (sirket.ulke=ulke.id) ;"""
      cursor.execute(query,[sirket_id])
      result=cursor.fetchone()
      giren_sirket=Sirket_Info(result[0],result[1],result[2],result[3],result[4],result[5],result[6],result[7],result[8],result[9],result[10])
      connection.commit()
      filename = '{yetki}/sirket_goster.html'.format(yetki=session['yetki'])
      return render_template(filename,giren_sirket=giren_sirket)
İş İlanlarını Gösterme

Bütün iş ilanlarını listeleyerek gösteren fonksiyondur.SELECT işlemini kullanır.

def is_ilanlari_page2():
  is_ilanlari = []
  with dbapi2.connect(current_app.config['dsn']) as connection:
      cursor = connection.cursor()
      query = """ SELECT is_ilani.id,sirket.isim,sirket.tipi, sirket.sektor, sirket.adres, sirket.mail, sirket.tel_num,ulke.isim,is_ilani.meslek,is_ilani.pozisyon,is_ilani.deneyim,is_ilani.yetenek,is_ilani.yabanci_dil FROM sirket,ulke,is_ilani where (sirket.ulke=ulke.id) AND (is_ilani.sirket=sirket.id);"""
      cursor.execute(query)

      for isler in cursor:

          is_ilanlari.append(isler)

          connection.commit()

      filename = '{yetki}/sirket_butun_is_ilani.html'.format(yetki=session['yetki'])
      return render_template(filename,is_ilanlari=is_ilanlari)
İş İlanlanı Ekleme

İş ilanı ekleme işlemini admin ve şirket yapabildiğinden if koşulu ile fonksiyon ikiye ayrılmıştır.Şirket iş ilanı eklerken kendi şirket bilgilerini eklemek zorunda kalmıyor.Session[‘id] ile bilgileri otomatik alınıyor.Sadece iş ilanı tablosunda gerekli olan yerleri doldurunca bu iş ilanı INSERT işlemi ile ekleniyor.Admin ise istediği şirket için istediği iş ilanını INSERT işlemi ile ekleyebiliyor.

def is_ilanlari_page():

  is_ilani = []
  with dbapi2.connect(current_app.config['dsn']) as connection:
      .
      .
      .
      .

      if session['rol']=='sirket':
          cursor = connection.cursor()
          query = """SELECT sirket.id,sirket.isim, sirket.tipi, sirket.sektor, sirket.isci_sayisi, sirket.adres, sirket.mail, sirket.tel_num FROM sirket ;"""
          cursor.execute(query)

          for is_il in cursor:

              is_ilani.append(is_il)

              connection.commit()



              is_ilanlari = []
              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query = """ SELECT is_ilani.id,sirket.isim,sirket.tipi, sirket.sektor, sirket.adres, sirket.mail, sirket.tel_num,ulke.isim,is_ilani.meslek,is_ilani.pozisyon,is_ilani.deneyim,is_ilani.yetenek,is_ilani.yabanci_dil FROM sirket,ulke,is_ilani where (sirket.id=%s)AND(sirket.ulke=ulke.id) AND (is_ilani.sirket=sirket.id);"""
                  cursor.execute(query,(session['id'],))

                  for isler in cursor:

                      is_ilanlari.append(isler)

                      connection.commit()

          if request.method == 'POST':

              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query= """INSERT INTO is_ilani(meslek, pozisyon, deneyim, yetenek, yabanci_dil,sirket)VALUES (%(meslek)s, %(pozisyon)s, %(deneyim)s, %(yetenek)s, %(yabanci_dil)s, {sirketid} )""".format(sirketid=session['id'])

                  cursor.execute(query, request.form)

                  connection.commit()
                  return redirect(url_for('sirket.is_ilanlari_page'))

          elif request.method == 'GET':
              filename = '{yetki}/sirket_is_ilani.html'.format(yetki=session['yetki'])
              return render_template(filename,is_ilani=is_ilani,is_ilanlari=is_ilanlari)

      print("Admin Öncesi")
      if session['yetki']=='admin':

          cursor = connection.cursor()
          query = """SELECT sirket.id,sirket.isim, sirket.tipi, sirket.sektor, sirket.isci_sayisi, sirket.adres, sirket.mail, sirket.tel_num FROM sirket ;"""
          cursor.execute(query)

          for is_il in cursor:

              is_ilani.append(is_il)

              connection.commit()



              is_ilanlari = []
              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query = """ SELECT is_ilani.id,sirket.isim,sirket.tipi, sirket.sektor, sirket.adres, sirket.mail, sirket.tel_num,ulke.isim,is_ilani.meslek,is_ilani.pozisyon,is_ilani.deneyim,is_ilani.yetenek,is_ilani.yabanci_dil FROM sirket,ulke,is_ilani where (sirket.ulke=ulke.id) AND (is_ilani.sirket=sirket.id);"""
                  cursor.execute(query)

                  for isler in cursor:

                      is_ilanlari.append(isler)

                      connection.commit()

          if request.method == 'POST':
              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query= """INSERT INTO is_ilani(meslek, pozisyon, deneyim, yetenek, yabanci_dil, sirket)VALUES (%(meslek)s, %(pozisyon)s, %(deneyim)s, %(yetenek)s, %(yabanci_dil)s, %(sirket)s )"""

                  cursor.execute(query, request.form)
                  connection.commit()
                  return redirect(url_for('sirket.is_ilanlari_page'))

          else:
              filename = '{yetki}/is_ilani.html'.format(yetki=session['yetki'])
              return render_template(filename,is_ilanlari=is_ilanlari,is_ilani=is_ilani)
İş İlanlanı Güncelleme

İş ilanı güncelleme de şirket ve admin olarak if koşulu ile ikiye ayrılıyor.Güncelleme ekleme ile aynı gibi işliyor.Şirket iş ilanı güncellerken kendi şirket bilgilerini görmek zorunda kalmıyor.Session[‘id] ile bilgileri otomatik alınıyor.Sadece iş ilanı tablosunda istenilen yerleri değiştirilince bu iş ilanı UPDATE işlemi ile güncelleniyor.Admin ise istediği şirket için istediği iş ilanını UPDATE işlemi ile güncelleyebiliyor.

def edit_is_ilanlari(is_ilani_id):

  is_ilani = []
  with dbapi2.connect(current_app.config['dsn']) as connection:
      if session['rol']=='sirket':
          cursor = connection.cursor()
          query = """SELECT sirket.id,sirket.isim, sirket.tipi, sirket.sektor, sirket.isci_sayisi, sirket.adres, sirket.mail, sirket.tel_num FROM sirket ;"""
          cursor.execute(query)

          for is_il in cursor:

              is_ilani.append(is_il)

              connection.commit()



          if request.method =='GET':

              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query = """SELECT * FROM is_ilani WHERE (is_ilani.id=%s)"""
                  cursor.execute(query,[is_ilani_id])
                  result = cursor.fetchone();
                  is_il = Is_Ilani(result[0],result[1],result[2],result[3],result[4],result[5],result[6])
                  filename = '{yetki}/edit_sirket_is_ilani.html'.format(yetki=session['yetki'])
                  return render_template(filename,is_il=is_il,is_ilani=is_ilani)


          if request.method =='POST':
              meslek = request.form['meslek']
              pozisyon = request.form['pozisyon']
              deneyim = request.form['deneyim']
              yetenek = request.form['yetenek']
              yabanci_dil = request.form['yabanci_dil']

              x=is_ilani_id
              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query = """UPDATE is_ilani SET meslek=%s ,pozisyon=%s ,deneyim=%s ,yetenek=%s ,yabanci_dil=%s , sirket=%s WHERE (id=%s) """
                  cursor.execute(query,(meslek,pozisyon,deneyim,yetenek,yabanci_dil,session['id'],x))
                  connection.commit()
                  return redirect(url_for('sirket.is_ilanlari_page'))


      if session['yetki']=='admin':
          cursor = connection.cursor()
          query = """SELECT sirket.id,sirket.isim, sirket.tipi, sirket.sektor, sirket.isci_sayisi, sirket.adres, sirket.mail, sirket.tel_num FROM sirket ;"""
          cursor.execute(query)

          for is_il in cursor:

              is_ilani.append(is_il)

              connection.commit()



          if request.method =='GET':

              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query = """SELECT * FROM is_ilani WHERE (is_ilani.id=%s)"""
                  cursor.execute(query,[is_ilani_id])
                  result = cursor.fetchone();
                  is_il = Is_Ilani(result[0],result[1],result[2],result[3],result[4],result[5],result[6])
                  filename = '{yetki}/edit_is_ilani.html'.format(yetki=session['yetki'])
                  return render_template(filename,is_il=is_il,is_ilani=is_ilani)


          if request.method =='POST':
              meslek = request.form['meslek']
              pozisyon = request.form['pozisyon']
              deneyim = request.form['deneyim']
              yetenek = request.form['yetenek']
              yabanci_dil = request.form['yabanci_dil']
              sirket = request.form['sirket']

              x=is_ilani_id
              with dbapi2.connect(current_app.config['dsn']) as connection:
                  cursor = connection.cursor()
                  query = """UPDATE is_ilani SET meslek=%s ,pozisyon=%s ,deneyim=%s ,yetenek=%s ,yabanci_dil=%s ,sirket=%sWHERE (id=%s)"""
                  cursor.execute(query,(meslek,pozisyon,deneyim,yetenek,yabanci_dil,sirket,x))
                  connection.commit()
                  return redirect(url_for('sirket.is_ilanlari_page'))
İş İlanlanı Silme

İş ilanının id’si alınarak DELETE işlemi ile siliniyor

def delete_is_ilani(is_ilani_id):
  with dbapi2.connect(current_app.config['dsn']) as connection:
      cursor = connection.cursor()
      query = """DELETE from is_ilani WHERE (id = %s)"""
      cursor.execute(query,[is_ilani_id])
      connection.commit()
      return redirect(url_for('sirket.is_ilanlari_page'))

Hamitcan MALKOÇ Tarafından Yapılan Kısımlar

  • Paylaşım

    • Paylaşımları Gösterme Kodu

      • Roller ve Paylaşım tabloları birleştiriliyor. Kişi veya Şirket bütün herkesin gönderdiği paylaşımlar veritabanından seçiliyor
      • Seçilen paylaşımlar ‘media’ değişkeni içerisinde liste olarak tutuluyor ve HTML dosyasına gönderiliyor
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
      
          query = '''select gonderenid, metin, paylasim.id, zaman, isim from paylasim, kisi, roller
                      where (kisi.id = roller.varlikid and roller.rol = 'kisi' and roller.rolid = gonderenid)'''
          cursor.execute(query)
          connection.commit()
          ps = cursor.fetchall()
      
          for sender, text, id, time, sendername in ps:
              p = Post(sender, sendername, text, id, time)
              current_app.media.add_post(p)
      
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
      
          query = '''select gonderenid, metin, paylasim.id, zaman, isim from paylasim, sirket, roller
                      where (sirket.id = roller.varlikid and roller.rol = 'sirket' and roller.rolid = gonderenid)'''
          cursor.execute(query)
          connection.commit()
          ps = cursor.fetchall()
      
          for sender, text, id, time, sendername in ps:
              p = Post(sender, sendername, text, id, time)
              current_app.media.add_post(p)
      
      posts = current_app.media.get_all_posts()
      
      filename = '{yetki}/topluluk.html'.format(yetki=session['yetki'])
      return render_template(filename, posts=posts, shownewpost=True, services=services)
      
    • Paylaşım Ekleme Kodu

      • Eklenecek olan paylaşımın metni HTML formdan alınıyor, eğer metin boş değilse, gönderenid’si ‘session[‘rolid’]’ olarak alınıyor
      • SQL ‘insert’ komutu uygulanıyor ve kullanıcı topluluk sayfasına geri gönderiliyor
      text = request.form['text']
      if text:
          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
              query = "insert into paylasim (gonderenid, metin) values ({senderid}, '{text}')".format(senderid=session['rolid'], text=text)
              cursor.execute(query)
              connection.commit()
      return redirect(url_for('topluluk.community'))
      
    • Paylaşım Düzenleme Kodu

      • Paylaşımid’si fonksiyon parametresi olarak ve paylaşımın yeni metni HTML den alınıyor, eğer metin boş değilse SQL ‘update’ komutu uygulanıyor
      • Kullanıcı topluluk sayfasına geri gönderiliyor
      text = request.form['text']
      if text:
          current_app.media.update_post_text(id, text)
          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
      
              query = '''update paylasim set metin = '{text}' where id = {postid}'''.format(text=text, postid=id)
              cursor.execute(query)
              connection.commit()
      return redirect(url_for('topluluk.community'))
      
    • Paylaşım Silme Kodu

      • Silinecek olan paylaşımın id’si fonksiyon parametresi olarak HTML den alınıyor SQL ‘delete’ komutu uygulanıyor ve kullanıcı topluluk sayfasına geri gönderiliyor
      current_app.media.delete_post(id)
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
      
          query = '''delete from paylasim where id = {postid}'''.format(postid=id)
          cursor.execute(query)
          connection.commit()
      return redirect(url_for('topluluk.community'))
      
  • Mesaj

    • Mesajları Gösterme Kodu

      • Mesajlaşma arkadaşının id’si fonksiyon parametresi olarak HTML den, kullanıcının id’si ‘session[‘rolid’]’ olarak alınıyor
      • Bu iki kişi arasında geçen bütün mesajlar veritabanından seçiliyor ve ‘media’ değişkeni içerisinde tutuluyor ve HTML dosyasına gönderiliyor
      messages = []
      
      idrol = ""
      friendid = id
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = '''select rol from roller
                      where rolid = {id}'''.format(id=friendid)
          cursor.execute(query)
          connection.commit()
          rol = cursor.fetchone()
          idrol, = rol
      
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = '''select mesaj.id, metin, zaman, gonderenid, aliciid, gonderen.isim, alan.isim
                          from mesaj, {grol} as gonderen, {arol} as alan, roller as gonderenrol, roller as alanrol
                          where (gonderenid = gonderenrol.rolid and aliciid = alanrol.rolid)
                              and (gonderen.id = gonderenrol.varlikid and alan.id = alanrol.varlikid)
                              and (gonderenrol.rol = '{gorol}' and alanrol.rol = '{alrol}')
                              and (gonderenrol.rolid = {goid} and alanrol.rolid = {alid})'''.format(grol=session['rol'], arol=idrol, gorol=session['rol'], alrol=idrol, goid=session['rolid'], alid=friendid)
      
          cursor.execute(query)
          connection.commit()
          messages = cursor.fetchall()
      
          for id, text, time, sender, receiver, sendername, receivername in messages:
              m = Message(sender, sendername, receiver, receivername, text, id, time)
              current_app.media.add_message(m)
      
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = '''select mesaj.id, metin, zaman, gonderenid, aliciid, gonderen.isim, alan.isim
                          from mesaj, {grol} as gonderen, {arol} as alan, roller as gonderenrol, roller as alanrol
                          where (gonderenid = gonderenrol.rolid and aliciid = alanrol.rolid)
                              and (gonderen.id = gonderenrol.varlikid and alan.id = alanrol.varlikid)
                              and (gonderenrol.rol = '{gorol}' and alanrol.rol = '{alrol}')
                              and (gonderenrol.rolid = {goid} and alanrol.rolid = {alid})'''.format(grol=idrol, arol=session['rol'], gorol=idrol, alrol=session['rol'], goid=friendid, alid=session['rolid'])
      
          cursor.execute(query)
          connection.commit()
          messages = cursor.fetchall()
      
          for id, text, time, sender, receiver, sendername, receivername in messages:
              m = Message(sender, sendername, receiver, receivername, text, id, time)
              current_app.media.add_message(m)
      
      messages = current_app.media.get_all_messages()
      
      filename = '{yetki}/messages.html'.format(yetki=session['yetki'])
      return render_template(filename, messages=messages, users=users, shownewmessage=True)
      
    • Mesaj Ekleme Kodu

      • Mesajlaşma arkadaşının id’si fonksiyon parametresi olarak, mesajın metni HTML den alınıyor, eğer metin boş değilse SQL ‘insert’ komutu uygulanıyor
      • Kullanıcı bulunduğu mesajlaşma sayfasına geri gönderiliyor
      text = request.form['text']
      if text:
          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
              query = "insert into mesaj (gonderenid, aliciid, metin) values ({senderid}, {receiverid}, '{text}')".format(senderid=session['rolid'], receiverid=id, text=text)
              cursor.execute(query)
              connection.commit()
      return redirect(url_for('topluluk.show_chat', id=id))
      
    • Mesaj Düzenleme Kodu

      • Mesaj id’si fonksiyon parametresi olarak, mesajın yeni metni de HTML ‘form’undan alınıyor, metin boş değilse SQL ‘update’ komutu uygulanıyor
      • Kullanıcı bulunduğu mesajlaşma sayfasına gönderiliyor
      text = request.form['text']
      kisiid = request.form['kisiid']
      if text:
          current_app.media.update_message_text(id, text)
          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
      
              query = '''update mesaj set metin = '{text}' where id = {messageid}'''.format(text=text, messageid=id)
              cursor.execute(query)
              connection.commit()
      return redirect(url_for('topluluk.show_chat', id=kisiid))
      
    • Mesaj Silme Kodu

      • Silinecek olan mesajın id’si fonksiyon parametresi olarak HTML den alınıyor ve SQL ‘delete’ komutu uygulanıyor
      • Kullanıcı mesajlaşma sayfasına geri gönderiliyor
      current_app.media.delete_message(id)
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
      
          query = '''delete from mesaj where id = {messageid}'''.format(messageid=id)
          cursor.execute(query)
          connection.commit()
      
      return redirect(url_for('topluluk.show_messages'))
      
  • Yorum

    • Hakkındaki Yorumları Gösterme Kodu

      • Kişi id’si ‘session[‘rolid’]’ olarak alınıyor, ‘yorum’, ‘roller’ ve ‘kisi’ tabloları birleştiriliyor
      • Kullanıcı hakkında olan bütün yorumlar seçiliyor ‘media’ içerisinde tutuluyor ve HTML dosyasına gönderiliyor
      current_app.media.media_reset()
      
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = '''select yorum.id, metin, zaman, gonderenid, hakkindaid, gonderen.isim, hakkinda.isim
                          from yorum, kisi as gonderen, {rol} as hakkinda, roller as gonderenrol, roller as hakkindarol
                          where (gonderenid = gonderenrol.rolid and hakkindaid = hakkindarol.rolid)
                                  and (gonderen.id = gonderenrol.varlikid and hakkinda.id = hakkindarol.varlikid)
                                  and (gonderenrol.rol = 'kisi' and hakkindarol.rol = '{hrol}')
                                  and (hakkindarol.rolid = '{id}')'''.format(rol=session['rol'], id=session['rolid'], hrol=session['rol'])
          cursor.execute(query)
          connection.commit()
          comments = cursor.fetchall()
      
          for id, text, time, senderid, aboutid, sendername, aboutname in comments:
              c = Comment(id, senderid, aboutid, sendername, aboutname, text, time)
              current_app.media.add_comment(c)
      
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = '''select yorum.id, metin, zaman, gonderenid, hakkindaid, gonderen.isim, hakkinda.isim
                          from yorum, sirket as gonderen, {rol} as hakkinda, roller as gonderenrol, roller as hakkindarol
                          where (gonderenid = gonderenrol.rolid and hakkindaid = hakkindarol.rolid)
                                  and (gonderen.id = gonderenrol.varlikid and hakkinda.id = hakkindarol.varlikid)
                                  and (gonderenrol.rol = 'sirket' and hakkindarol.rol = '{hrol}')
                                  and (hakkindarol.rolid = '{id}')'''.format(rol=session['rol'], id=session['rolid'], hrol=session['rol'])
          cursor.execute(query)
          connection.commit()
          comments = cursor.fetchall()
      
          for id, text, time, senderid, aboutid, sendername, aboutname in comments:
              c = Comment(id, senderid, aboutid, sendername, aboutname, text, time)
              current_app.media.add_comment(c)
      comments = current_app.media.get_all_comments()
      filename = '{yetki}/comments-about-you.html'.format(yetki=session['yetki'])
      return render_template(filename, comments=comments)
      
    • Yaptığın Yorumları Gösterme Kodu

      • Gönderen id’si ‘session[‘rolid’]’ olarak alınıyor, ‘yorum’, ‘roller’ ve ‘kisi’ tabloları birleştiriliyor
      • Kullanıcın gönderdiği bütün yorumlar seçiliyor ‘media’ içerisinde tutuluyor ve HTML dosyasına gönderiliyor
      current_app.media.media_reset()
      
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = '''select yorum.id, metin, zaman, gonderenid, hakkindaid, gonderen.isim, hakkinda.isim
                          from yorum, {rol} as gonderen, kisi as hakkinda, roller as gonderenrol, roller as hakkindarol
                          where (gonderenid = gonderenrol.rolid and hakkindaid = hakkindarol.rolid)
                                  and (gonderen.id = gonderenrol.varlikid and hakkinda.id = hakkindarol.varlikid)
                                  and (gonderenrol.rol = '{grol}' and hakkindarol.rol = 'kisi')
                                  and (gonderenrol.rolid = '{id}')'''.format(rol=session['rol'], id=session['rolid'], grol=session['rol'])
          cursor.execute(query)
          connection.commit()
          comments = cursor.fetchall()
      
          for id, text, time, senderid, aboutid, sendername, aboutname in comments:
              c = Comment(id, senderid, aboutid, sendername, aboutname, text, time)
              current_app.media.add_comment(c)
      
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
          query = '''select yorum.id, metin, zaman, gonderenid, hakkindaid, gonderen.isim, hakkinda.isim
                          from yorum, {rol} as gonderen, sirket as hakkinda, roller as gonderenrol, roller as hakkindarol
                          where (gonderenid = gonderenrol.rolid and hakkindaid = hakkindarol.rolid)
                                  and (gonderen.id = gonderenrol.varlikid and hakkinda.id = hakkindarol.varlikid)
                                  and (gonderenrol.rol = '{grol}' and hakkindarol.rol = 'sirket')
                                  and (gonderenrol.rolid = '{id}')'''.format(rol=session['rol'], id=session['rolid'], grol=session['rol'])
          cursor.execute(query)
          connection.commit()
          comments = cursor.fetchall()
      
          for id, text, time, senderid, aboutid, sendername, aboutname in comments:
              c = Comment(id, senderid, aboutid, sendername, aboutname, text, time)
              current_app.media.add_comment(c)
      comments = current_app.media.get_all_comments()
      filename = '{yetki}/comments-you-made.html'.format(yetki=session['yetki'])
      return render_template(filename, comments=comments)
      
    • Kişi veya Şirketler Hakkındaki Yorumları Gösterme Kodu

      • Hakkındaki yorumlara bakılacak kişinin id’si fonksiyon parametresi olarak HTML den alınıyor ve ‘şirket’ mi yoksa ‘kişi’ mi olduğu bulunuyor
      • ‘yorum’, ‘kişi’ veya ‘şirket’ ve ‘roller’ tabloları birletirilip, istenen kullanıcı hakkındaki bütün yorumlar seçiliyor
      • Bütün yorumlar ‘media’ değişkeni içerisinde tutuluyor ve HTML dosyasına gönderiliyor
      current_app.media.media_reset()
      if request.method == 'GET':
          comments = []
          idrol = ""
          aid = id
          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
              query = '''select rol from roller
                          where rolid = {id}'''.format(id=aid)
              cursor.execute(query)
              connection.commit()
              rol = cursor.fetchone()
              idrol, = rol
      
          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
              query = '''select yorum.id, metin, zaman, gonderenid, hakkindaid, gonderen.isim, hakkinda.isim
                          from yorum, sirket as gonderen, {rol} as hakkinda, roller as gonderenrol, roller as hakkindarol
                          where (gonderenid = gonderenrol.rolid and hakkindaid = hakkindarol.rolid)
                                  and (gonderen.id = gonderenrol.varlikid and hakkinda.id = hakkindarol.varlikid)
                                  and (gonderenrol.rol = 'sirket' and hakkindarol.rol = '{hrol}')
                                  and (hakkindarol.rolid = '{id}')'''.format(rol=idrol, id=aid, hrol=idrol)
      
              cursor.execute(query)
              connection.commit()
              cs = cursor.fetchall()
      
              for id, text, time, senderid, aboutid, sendername, aboutname in cs:
                  c = Comment(id, senderid, aboutid, sendername, aboutname, text, time)
                  current_app.media.add_comment(c)
      
          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
              query = '''select yorum.id, metin, zaman, gonderenid, hakkindaid, gonderen.isim, hakkinda.isim
                          from yorum, kisi as gonderen, {rol} as hakkinda, roller as gonderenrol, roller as hakkindarol
                          where (gonderenid = gonderenrol.rolid and hakkindaid = hakkindarol.rolid)
                                  and (gonderen.id = gonderenrol.varlikid and hakkinda.id = hakkindarol.varlikid)
                                  and (gonderenrol.rol = 'kisi' and hakkindarol.rol = '{hrol}')
                                  and (hakkindarol.rolid = '{id}')'''.format(rol=idrol, id=aid, hrol=idrol)
      
              cursor.execute(query)
              connection.commit()
              cs = cursor.fetchall()
      
              for id, text, time, senderid, aboutid, sendername, aboutname in cs:
                  c = Comment(id, senderid, aboutid, sendername, aboutname, text, time)
                  current_app.media.add_comment(c)
      
          comments = current_app.media.get_all_comments()
          filename = '{yetki}/comments-about-someone.html'.format(yetki=session['yetki'])
          return render_template(filename, comments=comments, shownewcomment=True)
      
    • Yorum Ekleme Kodu

      • Yorumun metni HTML ‘form’ dan alınıyor, eğer metin boş değilse SQL ‘insert’ komutu uygulanıyor
      • Kullanıcı bulunduğu sayfaya geri gönderiliyor
      text = request.form['text']
      if text:
          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
              query = "insert into yorum (gonderenid, hakkindaid, metin) values ({senderid}, {aboutid}, '{text}')".format(senderid=session['rolid'], aboutid=id, text=text)
              cursor.execute(query)
              connection.commit()
      return redirect(url_for('topluluk.show_comments', id=id))
      
    • Yorum Düzenleme Kodu

      • Yorumun id’si fonksiyon parametresi olarak, yorumun yeni metni HTML ‘form’ dan alınıyor, eğer metin boş değilse SQL ‘update’ komutu uygulanıyor
      • Kullanıcı bulunduğu sayfaya geri gönderiliyor
      text = request.form['text']
      kisiid = request.form['kisiid']
      if text:
          current_app.media.update_comment_text(id, text)
          with dbapi2.connect(current_app.config['dsn']) as connection:
              cursor = connection.cursor()
      
              query = '''update yorum set metin = '{text}' where id = {commentid}'''.format(text=text, commentid=id)
              cursor.execute(query)
              connection.commit()
      return redirect(url_for('topluluk.show_comments', id=kisiid))
      
    • Yorum Silme Kodu

      • Silinecek yorumun id’si fonksiyon parametresi olarak HTML den alınıyor ve SQL ‘delete’ komutu uygulanıyor
      • Kullanıcı topluluk sayfasına yönlendiriliyor
      current_app.media.delete_comment(id)
      with dbapi2.connect(current_app.config['dsn']) as connection:
          cursor = connection.cursor()
      
          query = '''delete from yorum where id = {commentid}'''.format(commentid=id)
          cursor.execute(query)
          connection.commit()
      
      return redirect(url_for('topluluk.community'))