1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #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 ) |
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 | #controllers/category.py import config, copy from flask import render_template, session, redirect from flask_classful import FlaskView, route from controllers.dashboard.category import Category class Dashboard(FlaskView): def __init__( self ): self .cat = Category() @route ( '/' ) def index( self ): vdict = copy.deepcopy(config.vdict) vdict[ 'blog_title' ] = 'ទំព័រគ្រប់គ្រង' if 'logged-in' in session: return render_template( 'dashboard/dashboard.html' , data = vdict) else : return redirect( '/login/' ) @route ( '/category/' , methods = [ 'GET' , 'POST' ]) def category( self ): 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) dashboard = Dashboard() |
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 | #controllers/dashboard/category.py import config, copy, lib, datetime from flask import render_template, request, session, redirect from models.dashboard.categorydb import Categorydb class Category(): def __init__( self ): self .categorydb = Categorydb() self .lib = lib.Lib() def get_post( self ): vdict = copy.deepcopy(config.vdict) vdict[ 'blog_title' ] = 'បង្កើតប្រភេទមេរៀន' vdict[ 'datetime' ] = self .lib.get_timezone() vdict[ 'categories' ] = self .categorydb.select(vdict[ 'dashboard_max_category' ]) vdict[ 'thumbs' ] = self .lib.get_thumbs(vdict[ 'categories' ], 2 ) if (request.method = = "POST" ) and ( 'logged-in' in session): category = request.form[ 'fcategory-title' ] if not category: category = 'unknown' content = request.form[ 'fcontent' ] date = request.form[ 'fcategory-date' ] time = request.form[ 'fcategory-time' ] author = session[ 'logged-in' ] try : date = datetime.datetime.strptime(date, "%d/%m/%Y" ) except ValueError: vdict[ 'message' ] = 'ទំរង់កាលបរិច្ឆេទមិនត្រឹមត្រូវ!' return render_template( 'dashboard/category.html' , data = vdict) try : time = datetime.datetime.strptime(time, "%H:%M:%S" ) except ValueError: vdict[ 'message' ] = 'ទំរង់ពេលវេលាមិនត្រឹមត្រូវ!' return render_template( 'dashboard/category.html' , data = vdict) self .categorydb.insert(category, content, date, time, author) vdict[ 'categories' ] = self .categorydb.select(vdict[ 'dashboard_max_category' ]) vdict[ 'thumbs' ] = self .lib.get_thumbs(vdict[ 'categories' ], 2 ) return render_template( 'dashboard/category.html' , data = vdict) else : if 'logged-in' in session: return render_template( 'dashboard/category.html' , data = vdict) return render_template( 'login.html' , data = vdict) def delete( self , category): if 'logged-in' in session: self .categorydb.delete(category) return redirect( '/dashboard/category/' ) return render_template( 'login.html' , data = vdict) def edit( self , category): if 'logged-in' in session: vdict = copy.deepcopy(config.vdict) vdict[ 'blog_title' ] = 'បង្កើតប្រភេទមេរៀន' vdict[ 'categories' ] = self .categorydb.select(vdict[ 'dashboard_max_category' ]) vdict[ 'thumbs' ] = self .lib.get_thumbs(vdict[ 'categories' ], 2 ) category = self .categorydb.select( 1 , category) vdict[ 'datetime' ] = (category[ 3 ].strftime( '%d/%m/%Y' ), category[ 4 ].strftime( '%H:%M:%S' )) vdict[ 'category' ] = category return render_template( 'dashboard/category.html' , data = vdict) return render_template( 'login.html' , data = vdict) |
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 | #models/dashboard/userdb.py import os, psycopg2 class Categorydb(): 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 CATEGORIES( ID SERIAL PRIMARY KEY, CATEGORY VARCHAR(320), CONTENT TEXT, CATDATE DATE, CATTIME TIME, AUTHOR VARCHAR(320) )''' self .cursor.execute(SQL) self .conn.commit() self .conn.close() def insert( self , * category): self .set_conection() self .cursor.execute( "SELECT CATEGORY FROM CATEGORIES WHERE CATEGORY = %s" , (category[ 0 ],)) result = self .cursor.fetchone() if not result: self .cursor.execute( "INSERT INTO CATEGORIES (CATEGORY, CONTENT, CATDATE, CATTIME, AUTHOR) VALUES %s " , (category,)) else : sql = "UPDATE CATEGORIES SET CATEGORY = %s, CONTENT = %s, CATDATE = %s, CATTIME = %s, AUTHOR = %s WHERE CATEGORY = '" + category[ 0 ] + "'" self .cursor.execute(sql, category) self .conn.commit() self .conn.close() def select( self , amount, category = ''): self .set_conection() if category: SQL = "SELECT * FROM CATEGORIES WHERE CATEGORY = %s LIMIT 1" self .cursor.execute(SQL, (category,)) result = self .cursor.fetchone() else : SQL = "SELECT * FROM CATEGORIES ORDER BY CATDATE DESC, CATTIME DESC LIMIT %s" self .cursor.execute(SQL, (amount,)) result = self .cursor.fetchall() self .conn.close() return result def delete( self , category): self .set_conection() SQL = "DELETE FROM CATEGORIES WHERE CATEGORY = %s" self .cursor.execute(SQL, (category,)) self .conn.commit() self .conn.close() |
GitHub: "https://github.com/Sokhavuth/E-Learning
Heroku: https://khmerweb-elearning.herokuapp.com/