Add a template with static page
This commit is contained in:
parent
1ccd3484dd
commit
c29b1b1861
|
|
@ -24,6 +24,7 @@ var/
|
|||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
.ropeproject/
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
|
|
|
|||
|
|
@ -15,11 +15,8 @@ def create_app(config_name):
|
|||
from app import models
|
||||
|
||||
from .api import api as api_blueprint
|
||||
from .site import site as site_blueprint
|
||||
app.register_blueprint(api_blueprint)
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def hello_world():
|
||||
return 'Hello, World!'
|
||||
app.register_blueprint(site_blueprint)
|
||||
|
||||
return app
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
from flask import Blueprint
|
||||
|
||||
site = Blueprint('site', __name__)
|
||||
from . import views
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
from flask import abort, render_template
|
||||
from flask_login import current_user, login_required
|
||||
|
||||
from . import site
|
||||
|
||||
|
||||
@site.route('/')
|
||||
def homepage():
|
||||
"""
|
||||
Render the homepage template on the / route
|
||||
"""
|
||||
return render_template('site/index.html', title="Welcome")
|
||||
|
||||
|
||||
@site.route('/dashboard')
|
||||
@login_required
|
||||
def dashboard():
|
||||
"""
|
||||
Render the dashboard template on the /dashboard route
|
||||
"""
|
||||
return render_template('home/dashboard.html', title="Dashboard")
|
||||
|
||||
|
||||
@site.route('/admin/dashboard')
|
||||
@login_required
|
||||
def admin_dashboard():
|
||||
# prevent non-admins from accessing the page
|
||||
if not current_user.is_admin:
|
||||
abort(403)
|
||||
|
||||
return render_template('home/admin_dashboard.html', title="Dashboard")
|
||||
|
||||
|
|
@ -0,0 +1,125 @@
|
|||
body, html {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body, h1, h2, h3 {
|
||||
font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
a, .navbar-default .navbar-brand, .navbar-default .navbar-nav>li>a {
|
||||
color: #aec251;
|
||||
}
|
||||
|
||||
a:hover, .navbar-default .navbar-brand:hover, .navbar-default .navbar-nav>li>a:hover {
|
||||
color: #687430;
|
||||
}
|
||||
|
||||
footer {
|
||||
padding: 50px 0;
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
p.copyright {
|
||||
margin: 15px 0 0;
|
||||
}
|
||||
|
||||
.alert-info {
|
||||
width: 50%;
|
||||
margin: auto;
|
||||
color: #687430;
|
||||
background-color: #e6ecca;
|
||||
border-color: #aec251;
|
||||
}
|
||||
|
||||
.btn-default {
|
||||
border-color: #aec251;
|
||||
color: #aec251;
|
||||
}
|
||||
|
||||
.btn-default:hover {
|
||||
background-color: #aec251;
|
||||
}
|
||||
|
||||
.center {
|
||||
margin: auto;
|
||||
width: 50%;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.content-section {
|
||||
padding: 50px 0;
|
||||
border-top: 1px solid #e7e7e7;
|
||||
}
|
||||
|
||||
.footer, .push {
|
||||
clear: both;
|
||||
height: 4em;
|
||||
}
|
||||
|
||||
.intro-divider {
|
||||
width: 400px;
|
||||
border-top: 1px solid #f8f8f8;
|
||||
border-bottom: 1px solid rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.intro-header {
|
||||
padding-top: 50px;
|
||||
padding-bottom: 50px;
|
||||
text-align: center;
|
||||
color: #f8f8f8;
|
||||
background: url(../img/intro-bg.jpg) no-repeat center center;
|
||||
background-size: cover;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.intro-message {
|
||||
position: relative;
|
||||
padding-top: 20%;
|
||||
padding-bottom: 20%;
|
||||
}
|
||||
|
||||
.intro-message > h1 {
|
||||
margin: 0;
|
||||
text-shadow: 2px 2px 3px rgba(0,0,0,0.6);
|
||||
font-size: 5em;
|
||||
}
|
||||
|
||||
.intro-message > h3 {
|
||||
text-shadow: 2px 2px 3px rgba(0,0,0,0.6);
|
||||
}
|
||||
|
||||
.lead {
|
||||
font-size: 18px;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.topnav {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
min-height: 100%;
|
||||
height: auto !important;
|
||||
height: 100%;
|
||||
margin: 0 auto -4em;
|
||||
}
|
||||
|
||||
.outer {
|
||||
display: table;
|
||||
position: absolute;
|
||||
height: 70%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.middle {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.inner {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{{ title }} | Project Dream Team</title>
|
||||
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
|
||||
<link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet">
|
||||
<link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.ico') }}">
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar navbar-default navbar-fixed-top topnav" role="navigation">
|
||||
<div class="container topnav">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand topnav" href="{{ url_for('site.homepage') }}">Project Dream Team</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li><a href="{{ url_for('site.homepage') }}">Home</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="wrapper">
|
||||
{% block body %}
|
||||
{% endblock %}
|
||||
<div class="push"></div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<ul class="list-inline">
|
||||
<li><a href="{{ url_for('site.homepage') }}">Home</a></li>
|
||||
<li class="footer-menu-divider">⋅</li>
|
||||
<li class="footer-menu-divider">⋅</li>
|
||||
</ul>
|
||||
<p class="copyright text-muted small">Copyright © 2016. All Rights Reserved</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}Home{% endblock %}
|
||||
{% block body %}
|
||||
<div class="intro-header">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="intro-message">
|
||||
<h1>Project Dream Team</h1>
|
||||
<h3>Hello world!</h3>
|
||||
<hr class="intro-divider">
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
Loading…
Reference in New Issue