Adding Search Functionality
#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() @route('/category/', methods=['GET', 'POST']) def category(self): session['page'] = 0 return self.cat.get_post() @route('/category/delete/<category>') def delete_category(self, category): return self.cat.delete(category) @route('/category/edit/<category>') def edit_category(self, category): return self.cat.edit(category) @route('/category/load/') def load_category(self): session['page'] += 1 return self.cat.load(session['page']) @route('/post/delete/<id>') def delete_post(self, id): return self.post.delete(id) @route('/post/edit/<id>') def edit_post(self, id): session['edit'] = id return self.post.edit(id) @route('/post/load/') def load_post(self): session['page'] += 1 return self.post.load(session['page']) @route('/page/', methods=['GET', 'POST']) def get_post_page(self): session['page'] = 0 return self.page.get_post_page() @route('/page/edit/<id>') def edit_page(self, id): session['edit'] = id return self.page.edit(id) @route('/page/delete/<id>') def delete_page(self, id): return self.page.delete(id) @route('/page/load/') def load_page(self): session['page'] += 1 return self.page.load(session['page']) @route('/book/', methods=['GET', 'POST']) def get_book(self): session['page'] = 0 return self.book.get_post_book() @route('/book/edit/<id>') def edit_book(self, id): session['edit'] = id return self.book.edit(id) @route('/book/delete/<id>') def delete_book(self, id): return self.book.delete(id) @route('/book/load/') def load_book(self): session['page'] += 1 return self.book.load(session['page']) @route('/upload/', methods=['GET', 'POST']) def upload_file(self): return self.upload.get_post() @route('/signup/', methods=['GET', 'POST']) def signup(self): session['page'] = 0 return self.user.get_post_user() @route('/user/delete/<id>') def delete_user(self, id): return self.user.delete(id) @route('/user/edit/<id>') def edit_user(self, id): session['edit'] = id return self.user.edit(id) @route('/user/load/') def load_user(self): session['page'] += 1 return self.user.load(session['page']) @route('/setting/', methods=['GET', 'POST']) def get_post_setting(self): return self.setting.get_set() @route('/search/', methods=['GET', 'POST']) def get_post_search(self): return self.search.get_post() dashboard = Dashboard()
#controllers/dashboard/search.py import config, copy from flask import render_template, session, redirect, request from lib import Lib from models.dashboard.postdb import Postdb from models.dashboard.categorydb import Categorydb from models.dashboard.pagedb import Pagedb from models.dashboard.bookdb import Bookdb from models.userdb import Userdb from models.dashboard.settingdb import Settingdb class Search(): def __init__(self): self.lib = Lib() self.postdb = Postdb() self.categorydb = Categorydb() self.pagedb = Pagedb() self.bookdb = Bookdb() self.userdb = Userdb() self.settingdb = Settingdb() def get_post(self): vdict = copy.deepcopy(config.vdict) vdict['blog_title'] = 'ទំព័រស្វែងរក' if (request.method == "POST") and ('logged-in' in session): database = request.form['fsearch-option'] fquery = request.form['fquery'] if database == 'មេរៀន': vdict['search'] = self.postdb.search(fquery) vdict['type'] = 'post' elif database == 'ប្រភេទមេរៀន': vdict['search'] = self.categorydb.search(fquery) vdict['type'] = 'category' elif database == 'ទំព័រមាតិកា': vdict['search'] = self.pagedb.search(fquery) vdict['type'] = 'page' elif database == 'សៀវភៅ': vdict['search'] = self.bookdb.search(fquery) vdict['type'] = 'book' elif database == 'សមាជិក': vdict['search'] = self.userdb.search(fquery) vdict['type'] = 'user' return render_template('dashboard/search.html', data=vdict) elif 'logged-in' in session: return render_template('dashboard/search.html', data=vdict) else: return redirect('/login/')
<!--templates/dasboard/searching.html--> {% extends 'dashboard/dashboard.html' %} {% block head %} {{ super() }} <link href="/static/styles/search.css" rel="stylesheet" > {% endblock %} {% block content %} <div id='search-result' > {% if 'search' in data %} {% for v in range(data['search']|length) %} {% if data['type'] != 'category' %} <h3 class='post-title'><a href="/{{ data['type'] }}/{{ data['search'][v][0] }}">{{ data['search'][v][1] }}</a></h3> {% elif data['type'] == 'category' %} <h3 class='post-title'><a href="/{{ data['type'] }}/{{ data['search'][v][1] }}">{{ data['search'][v][1] }}</a></h3> {% endif %} {% endfor %} {% endif %} </div> <div id="message">{{ data['message'] }}</div> {% endblock %} {% block item_listing %} {% endblock %}
GitHub: "https://github.com/Sokhavuth/E-Learning
Heroku: https://khmerweb-elearning.herokuapp.com/
Comments
Post a Comment