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

Popular posts from this blog