initial commit
This commit is contained in:
110
.gitignore
vendored
Normal file
110
.gitignore
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
# Created by .ignore support plugin (hsz.mobi)
|
||||
### Python template
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# pyenv
|
||||
.python-version
|
||||
|
||||
# celery beat schedule file
|
||||
celerybeat-schedule
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
|
||||
# custom
|
||||
.idea/
|
||||
*.db
|
||||
33
app.py
Normal file
33
app.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import os
|
||||
from flask import Flask, render_template, redirect, url_for, request
|
||||
|
||||
from peewee import fn
|
||||
|
||||
from model import Rides, connect
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
db_path = os.getenv("WIE_RIJD_DB", 'wie_rijd.db')
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def root():
|
||||
nrides = fn.COUNT(Rides.date).alias('amount')
|
||||
amounts = Rides.select(Rides.name, nrides).group_by(Rides.name).order_by(nrides.desc())
|
||||
|
||||
return render_template('list.html', title="hello", persons=amounts)
|
||||
|
||||
|
||||
@app.route('/add', methods=["POST"])
|
||||
def add_entry():
|
||||
Rides.create(name=request.form.get('name'))
|
||||
return redirect(url_for('root'))
|
||||
|
||||
|
||||
@app.before_first_request
|
||||
def init():
|
||||
connect(db_path)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
||||
28
model.py
Normal file
28
model.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from datetime import datetime
|
||||
from typing import Union
|
||||
|
||||
from peewee import Proxy, Database, Model, CharField, DateTimeField, SqliteDatabase, CompositeKey
|
||||
|
||||
db: Union[Database, Proxy] = Proxy()
|
||||
|
||||
|
||||
class BaseModel(Model):
|
||||
class Meta:
|
||||
database = db
|
||||
|
||||
|
||||
class Rides(BaseModel):
|
||||
class Meta:
|
||||
primary_key = CompositeKey('name', 'date')
|
||||
name: str = CharField()
|
||||
date: datetime = DateTimeField(default=datetime.now)
|
||||
|
||||
|
||||
models = [Rides]
|
||||
|
||||
|
||||
def connect(db_name: str):
|
||||
sqlite = SqliteDatabase(db_name)
|
||||
sqlite.connect()
|
||||
db.initialize(sqlite)
|
||||
db.create_tables(models)
|
||||
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
flask >= 1.1.1
|
||||
peewee >= 3.9.6
|
||||
10038
static/bootstrap-4.3.1-dist/css/bootstrap.css
vendored
Normal file
10038
static/bootstrap-4.3.1-dist/css/bootstrap.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
static/bootstrap-4.3.1-dist/css/bootstrap.css.map
Normal file
1
static/bootstrap-4.3.1-dist/css/bootstrap.css.map
Normal file
File diff suppressed because one or more lines are too long
7
static/bootstrap-4.3.1-dist/css/bootstrap.min.css
vendored
Normal file
7
static/bootstrap-4.3.1-dist/css/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/bootstrap-4.3.1-dist/css/bootstrap.min.css.map
Normal file
1
static/bootstrap-4.3.1-dist/css/bootstrap.min.css.map
Normal file
File diff suppressed because one or more lines are too long
7013
static/bootstrap-4.3.1-dist/js/bootstrap.bundle.js
vendored
Normal file
7013
static/bootstrap-4.3.1-dist/js/bootstrap.bundle.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
static/bootstrap-4.3.1-dist/js/bootstrap.bundle.js.map
Normal file
1
static/bootstrap-4.3.1-dist/js/bootstrap.bundle.js.map
Normal file
File diff suppressed because one or more lines are too long
7
static/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js
vendored
Normal file
7
static/bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
10598
static/jquery-3.4.1/js/jquery-3.4.1.js
vendored
Normal file
10598
static/jquery-3.4.1/js/jquery-3.4.1.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2
static/jquery-3.4.1/js/jquery-3.4.1.min.js
vendored
Normal file
2
static/jquery-3.4.1/js/jquery-3.4.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/jquery-3.4.1/js/jquery-3.4.1.min.js.map
Normal file
1
static/jquery-3.4.1/js/jquery-3.4.1.min.js.map
Normal file
File diff suppressed because one or more lines are too long
63
templates/list.html
Normal file
63
templates/list.html
Normal file
@@ -0,0 +1,63 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>{{ title }}</title>
|
||||
<link rel="stylesheet" href="/static/bootstrap-4.3.1-dist/css/bootstrap.min.css">
|
||||
<script src="/static/jquery-3.4.1/js/jquery-3.4.1.min.js"></script>
|
||||
<script src="/static/bootstrap-4.3.1-dist/js/bootstrap.bundle.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar navbar-dark bg-dark">
|
||||
<span class="navbar-brand mb-0 h1">Ritten</span>
|
||||
</nav>
|
||||
<div class="h-100"></div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<h1>Gereden ritten</h1>
|
||||
<div class="col-md-12">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<th scope="col">Naam</th>
|
||||
<th scope="col">Aantal</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for person in persons %}
|
||||
<tr>
|
||||
<td>{{ person.name }}</td>
|
||||
<td>{{ person.amount }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<h2>Nieuwe rit toevoegen</h2>
|
||||
<div class="col-md-12">
|
||||
|
||||
<form action="add" method="post">
|
||||
<div class="form-group">
|
||||
<label for="selectName">Naam</label>
|
||||
<div class="input-group">
|
||||
<select name="name" id="selectName" class="custom-select">
|
||||
{% for person in persons %}
|
||||
<option value="{{ person.name }}">{{ person.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<div class="input-group-append">
|
||||
|
||||
<input type="submit" value="submit" class="btn btn-primary">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user