#controllers/post.py import config, lib, datetime, uuid from bottle import route, template, request, redirect, response from models import postdb @route('/post/<id:int>') def post(id): config.kargs['blogTitle'] = "ទំព័រការផ្សាយ" config.kargs['post'] = postdb.select(1, id) config.kargs['posts'] = postdb.select(config.kargs['frontPagePostLimit']) config.kargs['thumbs'] = lib.getPostThumbs(config.kargs['posts']) author = request.get_cookie("logged-in", secret=config.kargs['secretKey']) if author: config.kargs['showEdit'] = True return template('post', data=config.kargs) @route('/posting', method="POST") def posting(): author = request.get_cookie("logged-in", secret=config.kargs['secretKey']) if ((author != "Guest") and postdb.check(author)): title = request.forms.getunicode('fpost-title') if title == "": title = "untitled" postdate = request.forms.getunicode('fpost-date') posttime = request.forms.getunicode('fpost-time') category = request.forms.getunicode('fcategory') content = request.forms.getunicode('fcontent') try: postdate = postdate + ' ' + posttime postdate = datetime.datetime.strptime(postdate, "%d-%m-%Y %H:%M:%S") except ValueError: config.kargs['message'] = 'ទំរង់កាលបរិច្ឆេទមិនត្រឹមត្រូវ!' return template('dashboard/home', data=config.kargs) try: datetime.datetime.strptime(posttime, "%H:%M:%S") except ValueError: config.kargs['message'] = 'ទំរង់ពេលវេលាមិនត្រឹមត្រូវ!' return template('dashboard/home', data=config.kargs) if 'postId' in config.kargs: id = config.kargs['postId'] postdb.update(title, postdate, posttime, category, content, id) del config.kargs['postId'] else: postdb.insert(str(uuid.uuid4().int), title, author, postdate, posttime, category, content) redirect('/login') @route('/post/delete/<id:int>') def delete(id): author = request.get_cookie("logged-in", secret=config.kargs['secretKey']) if ((author != "Guest") and postdb.check(author)): postdb.delete(id) redirect('/login') @route('/post/edit/<id:int>') def edit(id): author = request.get_cookie("logged-in", secret=config.kargs['secretKey']) if ((author != "Guest") and postdb.check(author)): config.kargs['post'] = postdb.select(1, id) config.kargs['edit'] = True config.kargs['postId'] = id return template('dashboard/home', data=config.kargs) redirect('/login')
<!--views/post.tpl--> %include('./partials/header.tpl') <style> #content{ min-height: 350px; background: lavender; box-sizing: border-box; } #content article{ background: rgb(247, 247, 248); min-height: 350px; padding: 20px; } #content .post-header{ display: grid; grid-template-columns: auto auto; } #content .post-title{ font: 20px/1.5 Oswald, Limonf3; } #content .post-author{ font: bold 14px/1.5 "Lucida Sans"; margin: 10px 0; } #content .post-date{ float: right; text-align: right; width: 100% !important; font: bold 18px/1.5 'Lucida Sans'; } #content .post-body{ line-height: 1.75; } #content .post-body .image{ padding: 0; margin: 0; } #content .post-body img{ width: 100%; } #content .post-author{ display: grid; grid-template-columns: auto auto; margin-bottom: 20px; align-items: center; } #content .post-author .icon-outer{ text-align: right; } #content .edit-icon img, #content .delete-icon img{ width: 35px; } #content .delete-icon img{ width: 28px; margin-left: 5px; position: relative; top: -3.5px } </style> <div id='main' class='main region'> %include('./partials/sidebar.tpl') <section id='content' class='content'> <article class="post"> %if 'post' in data: <div class='post-header'> <div class="post-title">{{data['post'][0][1]}}</div> <div class="post-date">{{data['post'][0][3].strftime("%d-%m-%Y")}}</div> </div> <div class="post-author"> <span>{{data['post'][0][2]}}</span> %if 'showEdit' in data: <div class="icon-outer"> <a class="edit-icon" href="/post/edit/{{data['post'][0][0]}}"><img src="/static/images/edit.png"/></a> <a class="delete-icon" href="/post/delete/{{data['post'][0][0]}}"><img src="/static/images/delete.png"/></a> </div> % del data['showEdit'] %end </div> <div class="post-body">{{!data['post'][0][6]}}</div> %end <div id="disqus_thread"></div> <script> (function() { // DON'T EDIT BELOW THIS LINE var d = document, s = d.createElement('script'); s.src = 'https://khmerweb.disqus.com/embed.js'; s.setAttribute('data-timestamp', +new Date()); (d.head || d.body).appendChild(s); })(); </script> <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> </article> </section><!--content--> </div><!--main--> %include('./partials/footer.tpl')
GitHub: https://github.com/Sokhavuth/kwblog
Heroku: https://khmerweb-kwblog.herokuapp.com/