Posts

Showing posts with the label E-Learning

Adding Search Functionality

Image
#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 from controllers.page import Page from controllers.book import Book from controllers.user import User from controllers.search import Search class Index(FlaskView): def __init__(self): self.post = Post() self.page = Page() self.book = Book() self.user = User() self.search = Search() @route('/') def index(self): session['page'] = 0 vdict = self.post.get_post() vdict['books'] = self.book.get_post_book() 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...

Adding Search Functionality

Image
#controllers/dashboard/dashboard.py from flask import session from flask_classful import FlaskView, route from controllers.dashboard.category import Category from controllers.dashboard.post import Post from controllers.dashboard.page import Page from controllers.dashboard.book import Book from controllers.dashboard.upload import Upload from controllers.dashboard.user import User from controllers.dashboard.setting import Setting from controllers.dashboard.search import Search class Dashboard(FlaskView): def __init__(self): self.cat = Category() self.post = Post() self.page = Page() self.book = Book() self.upload = Upload() self.user = User() self.setting = Setting() self.search = Search() @route('/favicon.ico') def favicon(self): redirect('/static/images/site_logo.png') @route('/', methods=['GET', 'POST']) def index(self): session['page'] = 0 return self.post.get_post()...

Adding Setting Functionality

Image
#config.py from models.dashboard.settingdb import Settingdb vdict = {} vdict['message'] = '' vdict['page'] = 0 settingdb = Settingdb() setting = settingdb.select() if not setting: vdict['dashboard_max_post'] = 5 vdict['dashboard_max_category'] = 5 vdict['post_max_category'] = 20 vdict['book_max_post'] = 8 vdict['blog_title'] = "សាáž›ាážšៀនពីáž…ំáž„ាáž™" vdict['blog_description'] = "áž…េះ​áž–ី​ážšៀáž“​ មាáž“​áž–ី​រក" vdict['secret_key'] = 'c89f675a9b7c74ffca5a44a0cf3e3acc' settingdb.insert(vdict['dashboard_max_post'], vdict['dashboard_max_category'], vdict['post_max_category'], vdict['book_max_post'], vdict['blog_title'], vdict['blog_description'], vdict['secret_key']) else: vdict['dashboard_max_post'] = setting[0] vdict['dashboard_max_category'] = setting[1] vdict['post_max_category'] = setting...

Creating User Template

Image
#controllers/user.py import config, copy from flask import render_template from models.userdb import Userdb class User(): def __init__(self): self.userdb = Userdb() def get_user(self, id): vdict = copy.deepcopy(config.vdict) vdict['user'] = self.userdb.select(1, id=id) return vdict <!--templates/user.html--> {% extends "base.html" %} {% block head %} {{ super() }} <link href="/static/styles/fuser.css" rel="stylesheet" > {% endblock %} {% block content %} <h3><span class="user-title">{{ data['user'][1] }}</span></h3> <p class="user-meta"> {% if 'logged-in' in session %} <span><a href="/dashboard/user/edit/{{ data['user'][0] }}"><img src="/static/images/edit.png" /></a> <a href="/dashboard/user/delete/{{ data['user'][0] ...

Adding Crud Functionality to User Database

Image
#models/userdb.py import os, psycopg2 class Userdb(): def __init__(self): self.create_table() def set_conection(self): if 'DYNO' in os.environ: DATABASE_URL = os.environ['DATABASE_URL'] self.conn = psycopg2.connect(DATABASE_URL, sslmode='require') self.cursor = self.conn.cursor() else: self.conn = psycopg2.connect( database="postgres", user="postgres", password="sokhavuth", host="localhost", port="5432" ) self.cursor = self.conn.cursor() def create_table(self): self.set_conection() SQL = '''CREATE TABLE IF NOT EXISTS USERS( ID SERIAL PRIMARY KEY, EMAIL VARCHAR(320), PASSWORD VARCHAR(320), ROLE TEXT, CONTENT TEXT, CATDATE DATE, CATTIME TIME, AUTHOR TEXT )''' self.cursor.execute(SQL) self.conn.commit() self.con...

Adding Uploading File Functionality

Image
#controllers/dashboard/upload.py import os, config, copy, uuid from flask import render_template, request, session from werkzeug.utils import secure_filename class Upload(): def __init__(self): pass def get_post(self): vdict = copy.deepcopy(config.vdict) if (request.method == "POST") and ('logged-in' in session): f = request.files['fupload'] if f != '': id = str(uuid.uuid4().int) ROOT_DIR = os.path.dirname(os.path.abspath("config.py")) savePath = ROOT_DIR + '/static/uploads/' + id + '_' + secure_filename(f.filename) url = '/static/uploads/' + id + '_' + secure_filename(f.filename) f.save(savePath) vdict['url'] = url return render_template('dashboard/uploadurl.html', data=vdict) else: return render_template('dashboard/upload.html', data=vdict) else: return render_templa...

Creating Book Template

Image
#controllers/book.py import config, copy, uuid, datetime from flask import render_template, session, redirect, request from lib import Lib from models.dashboard.bookdb import Bookdb class Book(): def __init__(self): self.lib = Lib() self.bookdb = Bookdb() def get_post_book(self): vdict = copy.deepcopy(config.vdict) vdict['books'] = self.bookdb.select(vdict['book_max_post']) vdict['thumbs'] = self.lib.get_thumbs(vdict['books'], 2) return vdict def get_book(self, id): vdict = copy.deepcopy(config.vdict) vdict['book'] = self.bookdb.select(1, id=id) return vdict def load(self, page): vdict = copy.deepcopy(config.vdict) vdict['books'] = self.bookdb.select(vdict['book_max_post'], page=page) vdict['thumbs'] = self.lib.get_thumbs(vdict['books'], 2) new_list = [] for book in vdict['books']: new_book = list(book) new_book[3] = book...

Adding Book to Frontpage

Image
#controllers/book.py import config, copy, uuid, datetime from flask import render_template, session, redirect, request from lib import Lib from models.dashboard.bookdb import Bookdb class Book(): def __init__(self): self.lib = Lib() self.bookdb = Bookdb() def get_post_book(self): vdict = copy.deepcopy(config.vdict) vdict['books'] = self.bookdb.select(vdict['book_max_post']) vdict['thumbs'] = self.lib.get_thumbs(vdict['books'], 2) return vdict def load(self, page): vdict = copy.deepcopy(config.vdict) vdict['books'] = self.bookdb.select(vdict['book_max_post'], page=page) vdict['thumbs'] = self.lib.get_thumbs(vdict['books'], 2) new_list = [] for book in vdict['books']: new_book = list(book) new_book[3] = book[3].strftime('%d/%m/%Y') new_book[4] = book[4].strftime('%H:%M:%S') new_list.append(new_book) vdict['...

Creating Book Database

Image
#controllers/dashboard/post.py import config, copy, uuid, datetime from flask import render_template, session, redirect, request from lib import Lib from models.dashboard.bookdb import Bookdb class Book(): def __init__(self): self.lib = Lib() self.bookdb = Bookdb() def get_post_book(self): vdict = copy.deepcopy(config.vdict) vdict['blog_title'] = 'áž…ុះáž•្សាáž™​សៀវភៅ' vdict['datetime'] = self.lib.get_timezone() if (request.method == "POST") and ('logged-in' in session): title = request.form['fbook-title'] if not title: title = 'unknown' content = request.form['fcontent'] date = request.form['fbook-date'] time = request.form['fbook-time'] author = session['logged-in'] try: date = datetime.datetime.strptime(date, "%d/%m/%Y") except ValueError: vdict['message'] = 'áž‘ំážšáž„់...

Creating Static Page Template

Image
#controllers/dashboard/dashboard.py from flask import session from flask_classful import FlaskView, route from controllers.dashboard.category import Category from controllers.dashboard.post import Post from controllers.dashboard.page import Page class Dashboard(FlaskView): def __init__(self): self.cat = Category() self.post = Post() self.page = Page() @route('/', methods=['GET', 'POST']) def index(self): session['page'] = 0 return self.post.get_post() @route('/category/', methods=['GET', 'POST']) def category(self): session['page'] = 0 return self.cat.get_post() @route('/category/delete/<category>') def delete(self, category): return self.cat.delete(category) @route('/category/edit/<category>') def edit(self, category): return self.cat.edit(category) @route('/category/load/') def load(self): ...

Creating Static Page Database

Image
#models/dashboard/pagedb.py import os, psycopg2 class Pagedb(): def __init__(self): self.create_table() def set_conection(self): if 'DYNO' in os.environ: DATABASE_URL = os.environ['DATABASE_URL'] self.conn = psycopg2.connect(DATABASE_URL, sslmode='require') self.cursor = self.conn.cursor() else: self.conn = psycopg2.connect( database="postgres", user="postgres", password="sokhavuth", host="localhost", port="5432" ) self.cursor = self.conn.cursor() def create_table(self): self.set_conection() SQL = '''CREATE TABLE IF NOT EXISTS PAGES( ID TEXT, TITLE TEXT, CONTENT TEXT, CATDATE DATE, CATTIME TIME, AUTHOR TEXT )''' self.cursor.execute(SQL) self.conn.commit() self.conn.close() def insert(self, *page): self.set_conect...

Creating Category Template

Image
#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(page=session['page']) if not vdict['posts']: session['page...

Adding Posts To Frontpage

Image
#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.dum...

Creating Post Template

Image
#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'] ...

Backend Vlog Functionality

Image
#main.py import config from flask import Flask from controllers.index import Index from controllers.login import Login from controllers.dashboard.dashboard import Dashboard app = Flask(__name__) app.secret_key = config.vdict['secret_key'] Index.register(app, route_base='/') Login.register(app, route_base='/login') Dashboard.register(app, route_base='/dashboard') if __name__ == '__main__': app.run(debug=True) //static/scripts/dashboard.js class Lib{ load_items(url){ $('#load-more img').attr('src', '/static/images/loading.gif'); $.get(url, function(data, status){ if(status == "success"){ listing_items(data); }else{ alert('Fail to connect to server.'); } }); } getVideoForm(event){ event.preventDefault(); var json = {}; var vidType = $("input:radio[name=vid-type]:checked").val(); var videoId = $("input:text[name=vid...