1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #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' ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | <!--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, Limonf 3 ; } #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/