split templates into base and add url's
This commit is contained in:
parent
6afd48aa6e
commit
2112dfd8d9
6 changed files with 152 additions and 78 deletions
|
|
@ -17,6 +17,20 @@ def get_uploads_path() -> str:
|
||||||
break
|
break
|
||||||
return path
|
return path
|
||||||
|
|
||||||
|
@app.route('/budget_categories')
|
||||||
|
def budget_categories():
|
||||||
|
budget_categories = db.session.execute(select(BudgetCategory)).all()
|
||||||
|
return render_template('budget_categories.html',
|
||||||
|
budget_categories=budget_categories)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/vendors')
|
||||||
|
def vendors():
|
||||||
|
vendors = db.session.execute(select(Vendor)).all()
|
||||||
|
return render_template('vendors.html',
|
||||||
|
vendors=vendors)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/')
|
@app.route('/')
|
||||||
def home():
|
def home():
|
||||||
# Get the current date
|
# Get the current date
|
||||||
|
|
@ -38,13 +52,9 @@ def home():
|
||||||
dt_object = datetime.datetime.fromtimestamp(li[0].date)
|
dt_object = datetime.datetime.fromtimestamp(li[0].date)
|
||||||
date_string = dt_object.strftime('%Y-%m-%d')
|
date_string = dt_object.strftime('%Y-%m-%d')
|
||||||
li[0].date = date_string
|
li[0].date = date_string
|
||||||
vendors = db.session.execute(select(Vendor)).all()
|
|
||||||
budget_categories = db.session.execute(select(BudgetCategory)).all()
|
|
||||||
files = os.listdir(get_uploads_path())
|
files = os.listdir(get_uploads_path())
|
||||||
return render_template('index.html',
|
return render_template('index.html',
|
||||||
files=files,
|
files=files,
|
||||||
vendors=vendors,
|
|
||||||
budget_categories=budget_categories,
|
|
||||||
all_line_items=all_line_items)
|
all_line_items=all_line_items)
|
||||||
|
|
||||||
@app.route('/upload_file/<filename>')
|
@app.route('/upload_file/<filename>')
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ function startEditMode(id){
|
||||||
inputElem.value = placeholderText;
|
inputElem.value = placeholderText;
|
||||||
inputElem.id = `vendor-input-${id}`
|
inputElem.id = `vendor-input-${id}`
|
||||||
vendor.appendChild(inputElem);
|
vendor.appendChild(inputElem);
|
||||||
|
inputElem.focus()
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", (event) => {
|
document.addEventListener("DOMContentLoaded", (event) => {
|
||||||
|
|
|
||||||
50
app/templates/base.html
Normal file
50
app/templates/base.html
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>{% block title %}{% endblock title %}</title>
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||||
|
{% block stylesheet %}{% endblock stylesheet %}
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||||
|
<div class="collapse navbar-collapse justify-content-center" id="navbarNav">
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item active">
|
||||||
|
<a class="nav-link" href="{{url_for('home')}}">Home <span class="sr-only">(current)</span></a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="{{url_for('vendors')}}">Vendors</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="{{url_for('budget_categories')}}">Budget Categories</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="#">Contact</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
|
More
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
|
<a class="dropdown-item" href="#">Action</a>
|
||||||
|
<a class="dropdown-item" href="#">Another action</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="#">Something else here</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
{% block content %}{% endblock content %}
|
||||||
|
<!-- Bootstrap JS and dependencies (jQuery and Popper.js) -->
|
||||||
|
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
|
||||||
|
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
|
<script src="{{url_for('.static', filename='index.js')}}"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
44
app/templates/budget_categories.html
Normal file
44
app/templates/budget_categories.html
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
{% block title %}Budget Categories{% endblock title %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<main>
|
||||||
|
<div class="container mt-5">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header bg-primary text-white">
|
||||||
|
Budget Categories
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
|
||||||
|
<form action="{{ url_for('add_budget_category') }}" method="POST">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="categoryName" class="form-label">Add Budget Category</label>
|
||||||
|
<input type="text" class="form-control" id="categoryName" name="category_name" placeholder="Enter category name" required>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn-primary">Submit</button>
|
||||||
|
</form>
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-bordered">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">ID</th>
|
||||||
|
<th scope="col">Name</th>
|
||||||
|
<th scope="col">Delete</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for bc in budget_categories %}
|
||||||
|
<tr id="{{bc[0].id}}-row">
|
||||||
|
<th scope="row">{{bc[0].id}}</th>
|
||||||
|
<th scope="row">{{bc[0].name}}</th>
|
||||||
|
<th scope="row"><button class="btn btn-danger del-button" id="{{bc[0].id}}">Delete</button></th>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
{% endblock content %}
|
||||||
|
|
@ -1,12 +1,8 @@
|
||||||
<!DOCTYPE html>
|
{% extends 'base.html' %}
|
||||||
<html lang="en">
|
{% block title %}Homepage{% endblock title %}
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
{% block content %}
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<main>
|
||||||
<title>Budgeting</title>
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container mt-5">
|
<div class="container mt-5">
|
||||||
{% if files %}
|
{% if files %}
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|
@ -80,69 +76,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
|
||||||
<div class="card-header bg-primary text-white">
|
|
||||||
Budget Categories
|
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
</main>
|
||||||
|
{% endblock content %}
|
||||||
<form action="{{ url_for('add_budget_category') }}" method="POST">
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="categoryName" class="form-label">Add Budget Category</label>
|
|
||||||
<input type="text" class="form-control" id="categoryName" name="category_name" placeholder="Enter category name" required>
|
|
||||||
</div>
|
|
||||||
<button type="submit" class="btn btn-primary">Submit</button>
|
|
||||||
</form>
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-bordered">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th scope="col">ID</th>
|
|
||||||
<th scope="col">Name</th>
|
|
||||||
<th scope="col">Delete</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for bc in budget_categories %}
|
|
||||||
<tr id="{{bc[0].id}}-row">
|
|
||||||
<th scope="row">{{bc[0].id}}</th>
|
|
||||||
<th scope="row">{{bc[0].name}}</th>
|
|
||||||
<th scope="row"><button class="btn btn-danger del-button" id="{{bc[0].id}}">Delete</button></th>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-header bg-primary text-white">
|
|
||||||
Vendors
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-bordered">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th scope="col">ID</th>
|
|
||||||
<th scope="col">Name</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for vendor in vendors %}
|
|
||||||
<tr>
|
|
||||||
<th scope="row">{{vendor[0].id}}</th>
|
|
||||||
<th scope="row">{{vendor[0].name}}</th>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js"></script>
|
|
||||||
<script src="{{url_for('.static', filename='index.js')}}"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
|
||||||
36
app/templates/vendors.html
Normal file
36
app/templates/vendors.html
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
{% block title %}Budget Categories{% endblock title %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<main>
|
||||||
|
<div class="container mt-5">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header bg-primary text-white">
|
||||||
|
Vendors
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-bordered">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">ID</th>
|
||||||
|
<th scope="col">Name</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for vendor in vendors %}
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{{vendor[0].id}}</th>
|
||||||
|
<th scope="row">{{vendor[0].name}}</th>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
{% endblock content %}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue