#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/














