#config.py from models import settingdb setting = settingdb.createTable() kargs = {} kargs['message'] = '' kargs['page'] = 1 def reset(setting): kargs['blogTitle'] = setting[0] kargs['secretKey'] = setting[1] kargs['dashboardPostLimit'] = setting[2] kargs['frontPagePostLimit'] = setting[3] kargs['homePagePostLimit'] = setting[4] kargs['authorPagePostLimit'] = setting[5] kargs['blogDescription'] = setting[6] if not setting: settingdb.insert('គេហទំព័រខ្មែរអង្គរ', 'h4!#au%8tb_9@oe+c0te=g=u%cfxb8t8fy%7+(gx2+51!t*b+s', 5, 8, 12, 16, 'Description' ) setting = settingdb.select() reset(setting)
#models/settingdb.py import os import psycopg2 def connect(): if 'DYNO' in os.environ: DATABASE_URL = os.environ['DATABASE_URL'] conn = psycopg2.connect(DATABASE_URL, sslmode='require') cursor = conn.cursor() else: conn = psycopg2.connect( database="postgres", user="postgres", password="sokhavuth", host="localhost", port="5432" ) cursor = conn.cursor() return (cursor, conn) def createTable(): cursor, conn = connect() SQL = '''CREATE TABLE IF NOT EXISTS SETTING( BLOGTITLE TEXT, SECRETKEY TEXT, DASHBOARDPOSTLIMIT INT, FRONTPAGEPOSTLIMIT INT, HOMEPAGEPOSTLIMIT INT, AUTHORPAGEPOSTLIMIT INT, SITEDESCRIPTION TEXT )''' cursor.execute(SQL) cursor.execute("SELECT * FROM SETTING LIMIT 1") result = cursor.fetchone() conn.commit() conn.close() return result def insert(*setting): cursor, conn = connect() SQL = "INSERT INTO SETTING VALUES %s" cursor.execute(SQL, (setting,)) conn.commit() conn.close() def select(): createTable() cursor, conn = connect() cursor.execute("SELECT * FROM SETTING LIMIT 1") result = cursor.fetchone() conn.commit() conn.close() return result def update(*args): cursor, conn = connect() sql = '''UPDATE SETTING SET BLOGTITLE = %s, SECRETKEY = %s, DASHBOARDPOSTLIMIT = %s, FRONTPAGEPOSTLIMIT = %s, HOMEPAGEPOSTLIMIT = %s, AUTHORPAGEPOSTLIMIT = %s, SITEDESCRIPTION = %s ''' cursor.execute(sql, args) conn.commit() conn.close()
#controllers/setting.py import config, lib from bottle import route, template, request, redirect, response from models import settingdb, userdb, postdb @route('/setting', method="POST") def posting(): author = request.get_cookie("logged-in", secret=config.kargs['secretKey']) if ((author != "Guest") and userdb.checkAdmin(author)): blogTitle = request.forms.getunicode('fblog-title') secretKey = request.forms.getunicode('fsecret-key') dpostLimit = request.forms.getunicode('fdpost-limit') fpostLimit = request.forms.getunicode('ffpost-limit') hpostLimit = request.forms.getunicode('fhpost-limit') apostLimit = request.forms.getunicode('fapost-limit') blogDescription = request.forms.getunicode('fblog-description') settingdb.update(blogTitle, secretKey, dpostLimit, fpostLimit, hpostLimit, apostLimit, blogDescription) redirect('/login') @route('/setting') def edit(): author = request.get_cookie("logged-in", secret=config.kargs['secretKey']) if ((author != "Guest") and userdb.checkAdmin(author)): config.kargs['blogTitle'] = "ទំព័រកែតំរូវ" config.kargs['posts'] = postdb.select(config.kargs['dashboardPostLimit']) config.kargs['thumbs'] = lib.getPostThumbs(config.kargs['posts']) config.kargs['post'] = settingdb.select() config.kargs['page'] = 1 return template('dashboard/setting', data=config.kargs) redirect('/login')
<!--views/dashboard/setting.tpl--> %include('./dashboard/partials/header.tpl') <style> #content{ min-height: 350px; background: lavender; padding: 20px; box-sizing: border-box; } #content #setting{ display: grid; grid-template-columns: 17% 50%; grid-gap: 5px; align-items: center; } #content #setting span{ text-align: right; font: 14px/1.5 Oswald, Bayon; } #content #setting input{ padding: 5px 10px; font: 14px/1.5 Arial, OdorMeanChey; } </style> <div id='main' class='main region'> %include('./dashboard/partials/sidebar.tpl') <section id='content' class='content'> <form id="setting" action="/setting" method="post"> <span>Blog Title:</span><input type="text" name="fblog-title" value="{{data['post'][0]}}" required /> <span>Secret Key:</span><input type="text" name="fsecret-key" value="{{data['post'][1]}}" required/> <span>Dashboard Post Limit:</span><input type="text" name="fdpost-limit" value="{{data['post'][2]}}" required /> <span>Frontend Post Limit:</span><input type="text" name="ffpost-limit" value="{{data['post'][3]}}" required /> <span>Home Post Limit:</span><input type="text" name="fhpost-limit" value="{{data['post'][4]}}" required /> <span>Author Post Limit:</span><input type="text" name="fapost-limit" value="{{data['post'][5]}}" required /> <span>Blog Description:</span><input type="text" name="fblog-description" value="{{data['post'][6]}}" required /> <a></a><input type="submit" value="បញ្ចូលទិន្នន័យ" /> </form> <div style="text-align: center;">{{data["message"]}}</div> %data['message'] = "" </section><!--content--> </div><!--main--> %include('./dashboard/partials/footer.tpl')
GitHub: https://github.com/Sokhavuth/kwblog
Heroku: https://khmerweb-kwblog.herokuapp.com/