Creating Post Template

#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(self):
        redirect('/static/images/site_logo.png')

    @route('/post/<id>')
    def get_single_post(self, id):
        vdict = self.post.get_single_post(id)
        return render_template('post.html', data=vdict)

#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, amount=5, category="", page=0):
    vdict = copy.deepcopy(config.vdict)
    vdict['posts'] = self.postdb.select(amount=amount, category=category, page=page)
    vdict['thumbs'] = self.lib.get_thumbs(vdict['posts'], 3)
    vdict['videos'] = self.lib.get_video_data(vdict['posts'], 7)
    vdict['category'] = category
    
    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

  def get_single_post(self, id):
    vdict = copy.deepcopy(config.vdict)
    vdict['post'] = self.postdb.select(1, id=id)

    return vdict
//static/scripts/post.js
class Post{
  setVideo(video){
    var video = JSON.parse(video);
    
    if(video.vidType === "youtube"){
      var src = "https://www.youtube.com/embed/" + video.videoId;
    }else if(video.vidType === "fbvid"){
      var src = `https://www.facebook.com/watch/?v=${video.videoId}`;
    }else if(video.vidType === "googledrive"){
      var src = "https://docs.google.com/file/d/"+video.videoId+"/preview";
    }else if(video.vidType === "dailymotion"){
      var src = "https://www.dailymotion.com/embed/video/" + video.vidType;
    }else if(video.vidType === "vimeo"){
      var src = "https://player.vimeo.com/video/" + video.vidType;
    }else if(video.vidType === "okvid"){
      var src = "//ok.ru/videoembed/" + video.vidType;
    }else if(video.vidType === "youtubepl"){
      var src = "https://www.youtube.com/embed/videoseries?list=" + video.vidType;
    }

    if(video.vidType !== 'fbvid'){
      var iframe = `<div style='position:relative;padding-top:56.25%;margin-top:20px;'>
      <iframe id="video-player" src="${src}" frameborder="0" allowfullscreen></iframe>
      </div>`;
    }else{
      var iframe = `<div class="fb-video" data-href="${src}" data-width="auto" data-show-captions="true"></div>`;
    }

    $('#video-wrapper').html(iframe);
  }
}//End of class

const post = new Post();

GitHub: "https://github.com/Sokhavuth/E-Learning
Heroku: https://khmerweb-elearning.herokuapp.com/

Comments

Popular posts from this blog

Boilerplate Code

Adding Frontend Single Movie Template