Creating Dashboard Areas

#routes/dashboard.py
from flask_classful import FlaskView, route
from controllers.dashboard.signup import Signup
from controllers.dashboard.index import Index

class Dashboard(FlaskView):
  def __init__(self):
    super().__init__()
    self.signup = Signup()
    self.index = Index()

  @route('/')
  def dashboard_index(self):
    return self.index.index()

  @route('/logout/')
  def logout(self):
    return self.index.logout()
    
  @route('/signup/', methods={'GET', 'POST'})
  def dashboard_signup(self):
    return self.signup.signup()
#templates/dashboard/index.py
import config, copy, lib
from flask import render_template, request, session, redirect
from models.userdb import Userdb

class Index():
  def __init__(self):
    self.userdb = Userdb()

  def index(self):
    vdict = copy.deepcopy(config.vdict)
    vdict['site_title'] = "ទំព័រ​គ្រប់គ្រង"

    if 'logged-in' in session:
      return render_template('dashboard/index.html', data=vdict)

    return redirect('/login/')

  def logout(self):
    session.pop('logged-in', None)
    return redirect('/')
<!--templates/dashboard/index.html-->
{% extends 'base.html' %}

{% block head %}
{{ super() }}
<link href="/static/styles/dashboard/index.css" rel="stylesheet">
{% endblock %}

{% block header %}
  <nav id='menu'>
    <div class="menu-outer region">
      <div id="logo">
        <a href="/"><img src="/static/images/site_logo.png" /></a>
        <a href="/dashboard/">{{ data['site_title'] }}</a>
      </div>
      <form id="search">
        <select id="search-option">
          <option>ការផ្សាយ</option>
        </select>
        <input type="text" placeholder="Search" required />
        <input type="submit" value="ស្វែងរក" />
      </form>
      <div class="logout">
        <a href="/dashboard/logout/">ចេញ​ក្រៅ</a>
      </div>
    </div>
  </nav>
{% endblock %}

{% block main %}
  <div id="sidebar">
  {% block sidebar %}
      
  {% endblock %}
  </div>
  <div id="content">
  {% block content %}
        
  {% endblock %}
  </div>
{% endblock %}
/*static/styles/dashboard/index.css*/
body{
  background: grey;
}
#menu{
  background: lightgrey;
  border-bottom: 10px solid rgb(56, 56, 56)
}
.menu-outer{
  grid-template-columns: 35% auto 20%;
}
#menu a{
  color: black;
}
#menu #search{
  grid-template-columns: 20% auto 15%;
}
#menu #search #search-option{
  font: 14px/1.5 Vidaloka, OdorMeanChey;
}
#menu .logout{
  text-align: right;
}
#main{
  margin-top: 5px;
  display: grid;
  grid-template-columns: 25% auto;
  grid-gap: 15px;
  min-height: 470px;
}
#main #sidebar, #main #content{
  background: lightgrey;
}

GitHub: "https://github.com/Sokhavuth/ETV
Heroku: https://khmerweb-etv.herokuapp.com/

Comments

Popular posts from this blog