import os
from dotenv import load_dotenv

basedir = os.path.abspath(os.path.dirname(__file__))
load_dotenv(os.path.join(basedir, '.env'))

class Config(object):
  SECRET_KEY = os.environ.get('SECRET_KEY')
  SECURITY_PASSWORD_SALT = os.environ.get('SECURITY_PASSWORD_SALT')
  SQLALCHEMY_DATABASE_URI = os.environ.get('SQLALCHEMY_DATABASE_URI')
  SQLALCHEMY_TRACK_MODIFICATIONS = False
  BOOKINGS_PER_PAGE = 10
  NOLABS_ADMINS = ['fdegir@gmail.com', 'fatih.degirmenci@est.tech']
  LOGS_DIR = os.environ.get('LOGS_DIR')
  CONTENT_DIR = basedir + '/content'
  JENKINS_URL=os.environ.get('JENKINS_URL')
  JENKINS_SLAVE_LABEL=os.environ.get('JENKINS_SLAVE_LABEL')
  JENKINS_NOLABS_USERNAME=os.environ.get('JENKINS_NOLABS_USERNAME')
  JENKINS_NOLABS_TOKEN=os.environ.get('JENKINS_NOLABS_TOKEN')
  JENKINS_HANDLE_BOOKING_JOB=os.environ.get('JENKINS_HANDLE_BOOKING_JOB')
  JENKINS_DELETE_BOOKING_JOB=os.environ.get('JENKINS_DELETE_BOOKING_JOB')
