Şevket Cerit Tarafından Yapılan Kısımlar

Kullanıcılar Tablosu

Kullanıcıları temsil etmek icin “users” tablosu oluşturuldu.Users tablosu “userId” birincil anahtar ve serial olarak tanımlandı. “Firstname” kullanıcının ismi ,”Lastname” kullanıcının soyismi ,”Email_adress” kullanıcının mail adresi ,”password” kullanıcının siteye giriş yapmak için kullanacağı şifresi ve universities tablosuna dış anahtar olan “uni” niteliklerine sahiptir.

def users(self):
    with dbapi2.connect(self.cp) as connection:
        cursor = connection.cursor()
        query = "DROP TABLE IF EXISTS users CASCADE"
        cursor.execute(query)
        query = """CREATE TABLE users (
            uni VARCHAR (100) NOT NULL REFERENCES universities(title)
            ON DELETE CASCADE
            ON UPDATE CASCADE,
            UserId SERIAL PRIMARY KEY,
            Firstname VARCHAR (80) NOT NULL,
            Lastname VARCHAR (80) NOT NULL ,
            Email_adress VARCHAR (100) NOT NULL UNIQUE,
            password VARCHAR(10) NOT NULL
        )"""
        cursor.execute(query)
        query = """INSERT INTO users(Firstname, Lastname, Email_adress,uni,password) VALUES
          ('Sevket','Cerit','cerits@itu.er','Ankara Üniversitesi','sevko'),
          ('Mert','Yıldız','yildiz@itu.edr','İstanbul Üniversitesi','mert'),
          ('Halit','Ugurgelen','ugurgelen@itu.edu.tr','Boğaziçi Üniversitesi','halit'),
          ('Hasan','Caglar','caglarh@itu.edu','İstanbul Teknik Üniversitesi','hhc'),
          ('Donald','Hearn','Hearn@ise.ufl.edu','Boğaziçi Üniversitesi','hearn'),
          ('Ulug','Bayazit','ulugbayazit@itu.edu.tr','İstanbul Teknik Üniversitesi','ulug'),
          ('Fatih','Guler','gulerfa','İstanbul Teknik Üniversitesi','feg');
          """
        cursor.execute(query)
        connection.commit()

Kullanıcı Girişi

Kullanıcıların sayfaya girişi için mail adresleri ve şifreleri veritabanında kontrol edildi.Eşleşme sağlanırsa sitenin anasayfasına yönlendirildi.

@app.route('/home', methods = ['POST', 'GET'])
def page_login():
  with dbapi2.connect(app.config['dsn']) as connection:
      cursor = connection.cursor()
      if request.method == 'POST':
          mailentered = request.form['mail']
          passentered = request.form['password']
          query = """SELECT Firstname,Lastname,Email_adress FROM users WHERE Email_adress='%s' AND password='%s' """ % (mailentered, passentered)
          cursor.execute(query)
          global allusers
          allusers = cursor.fetchall()
          x = len(allusers)
          if x == 1:

              return render_template('home.html')
          else:
              return render_template('signup.html')
      elif request.method == 'GET':
          return render_template('signup.html')

Kullanıcı Kayıt

Siteye kayıt olmak isteyen kullanıcılar email,ad,soyad,üniversite ve şifre formlarını doldurarak kayıt olur.Girilen bilgiler veritabanına kaydedilir.Kayıt işleminden sonra giriş sayfasına yönlendirilir.

@app.route('/user_add', methods=['GET', 'POST'])
def user_add():
  user = users(app.config['dsn'])
  if request.method == 'GET':
      now = datetime.datetime.now()
      return render_template('signup.html', current_time=now.ctime())
  if request.method == 'POST':
      user.set_mail(request.form['email'])
      user.set_name(request.form['firstname'])
      user.set_lastname(request.form['lastname'])
      user.set_uni(request.form['uni'])
      user.set_password(request.form['password'])
      user.add_user()
      now = datetime.datetime.now()
      return redirect(url_for('page_login'))

Kullanıcı Profil

Kullanıcı profil sayfasında bilgilerini güncelleyebilir.Formda yer alan mail bilgisi veritabanında kontrol edilir ve eşlesen kullanıcının yeni girilen bilgileri veritabanına kaydedilir.

@app.route('/user_update', methods=['GET', 'POST'])
def user_update():
  user = users(app.config['dsn'])
  if request.method == 'GET':
      now = datetime.datetime.now()
      return render_template('signup.html', current_time=now.ctime())
  if request.method == 'POST':
      name = request.form['firstname']
      mail = request.form['email']
      uni = request.form['uni']
      connection = dbapi2.connect(app.config['dsn'])
      cursor = connection.cursor()
      statement = """UPDATE users
                  SET  Firstname='%s',uni='%s'
                  WHERE Email_adress='%s'""" % (name, uni, mail)
      cursor.execute(statement)
      connection.commit()
      now = datetime.datetime.now()
      return redirect(url_for('page_profile'))