Adding Posts To Frontpage
#controllers/index.py
import config, copy, json
from flask import render_template, redirect, session, request
from flask_classful import FlaskView, route
from controllers.post import Post
class Index(FlaskView):
def __init__(self):
self.post = Post()
@route('/')
def index(self):
session['page'] = 0
vdict = self.post.get_post()
return render_template('index.html', data=vdict)
@route('/panel')
def get_post(self):
nav = request.args.get('nav', 0, type=str)
if nav == 'previous':
session['page'] += 1
elif nav == 'next':
if session['page'] > 0:
session['page'] -= 1
else:
session['page'] = 0
vdict = self.post.get_post(session['page'])
if not vdict['posts']:
session['page'] -= 1
return json.dumps(vdict)
@route('/favicon.ico')
def favicon():
redirect('/static/images/site_logo.png')
#controllers/post.py
import config, copy
from flask import render_template, redirect
from lib import Lib
from models.dashboard.postdb import Postdb
class Post():
def __init__(self):
self.postdb = Postdb()
self.lib = Lib()
def get_post(self, page=0):
vdict = copy.deepcopy(config.vdict)
vdict['posts'] = self.postdb.select(5, page=page)
vdict['thumbs'] = self.lib.get_thumbs(vdict['posts'], 3)
vdict['videos'] = self.lib.get_video_data(vdict['posts'], 7)
new_post_list = []
for post in vdict['posts']:
new_post = list(post)
new_post[4] = post[4].strftime('%d/%m/%Y')
new_post[5] = post[5].strftime('%H:%M:%S')
new_post_list.append(new_post)
vdict['posts'] = new_post_list
return vdict
//static/scripts/index.js
class Index{
navigate(nav){
$('#front-nav .home').attr('src', '/static/images/loading.gif')
$.get("/panel",
{nav:nav},
function(data, status){
if(status == "success"){
var html = '';
var data = JSON.parse(data);
if((data.posts).length !== 0){
for(var v in data.posts){
if(v == 0){
html += '<div class="wrapper1">';
html += '<div style="position:relative;padding-top:57.30%;">';
}else{
html += '<div class="wrapper">';
html += '<div style="position:relative;padding-top:56.25%;">';
}
html += `<a href="/post/${ data['posts'][v][0] }"><img src="${ data['thumbs'][v] }" style="position:absolute;top:0;left:0;width:100%;min-height:100%;" /></a>`;
html += `<a href="/post/${ data['posts'][v][0] }"><p class="title" >${ data['posts'][v][1] }</p></a>`;
if (data['videos'][v].length){
html += '<img class="play-icon" src="/static/images/play.png" />';
}
html += `<p class="date-news" >${(data['posts'][v][4]) }</p>`;
html += '</div>';
html += '</div>';
}
$('#front-panel').html(html);
}
$('#front-nav .home').attr('src', '/static/images/home.png')
}else
alert('Fail to connect to server.');
});
}
}//End of class
const index = new Index();
GitHub: "https://github.com/Sokhavuth/E-Learning
Heroku: https://khmerweb-elearning.herokuapp.com/

Comments
Post a Comment