forked from radekstepan/FlaskBudget
/
budget.py
117 lines (92 loc) · 3.12 KB
/
budget.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/usr/bin/python
# -*- coding: utf -*-
# framework
from __future__ import with_statement
from flask import Flask, session
# models
from db.database import db_session, init_engine
DEBUG = True
app = None
def create_app(db):
global app
# create our little application :)
app = Flask(__name__)
app.config.from_object(__name__)
app.secret_key = '98320C8A14B7D50623A8AC1D78D7E9D8F8DF1D390ABEFE3D3263B135493DF250'
# presenters
from presenters.dashboard import dashboard
from presenters.auth import auth
from presenters.accounts import accounts
from presenters.income import income
from presenters.expenses import expenses
from presenters.loans import loans
from presenters.users import users
# register blueprints (presenters)
app.register_blueprint(dashboard)
app.register_blueprint(auth)
app.register_blueprint(accounts)
app.register_blueprint(income)
app.register_blueprint(expenses)
app.register_blueprint(loans)
app.register_blueprint(users)
# 'unpresented' models :)
from models.slugs import SlugsTable
# initialize the database
init_engine(db)
# testing module
if DEBUG:
from presenters.tests import tests
app.register_blueprint(tests)
@app.after_request
def shutdown_session(response):
db_session.remove()
return response
# template filters
@app.template_filter('datetimeformat')
def date_time_format(value):
from datetime import date, timedelta
if date.today() == value:
return 'Today'
elif date.today() - timedelta(1) == value:
return 'Yesterday'
else:
return value
@app.template_filter('timestampformat')
def timestamp_format(value):
from datetime import date
try:
return date.fromtimestamp(value)
except ValueError:
return value
@app.template_filter('currencyformat')
def currency_format(value):
import locale
locale.setlocale(locale.LC_ALL, '')
return locale.format("%.2f", value, grouping=True)
@app.template_filter('csvcurrencyfilter')
def csv_currency_filter(value):
return value.replace(',', "")
@app.template_filter('numberformat')
def number_format(value):
return str(value).rstrip('0').rstrip('.')
@app.template_filter('trimzeroes')
def trimzeroes(value):
return value[:len(value)-3]
@app.template_filter('isloggeduserid')
def is_logged_user_id(value):
return value == session.get('logged_in_user')
@app.template_filter('slugify')
def slugify(value):
import unicodedata, re
value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')
value = unicode(re.sub('[^\w\s-]', '', value).strip().lower())
return re.sub('[-\s]+', '-', value)
@app.template_filter('csvfilter')
def csv_filter(value):
# double quotes
value = value.replace('"', '""')
return value
return app
if __name__ == '__main__':
app = create_app(db='sqlite:////Volumes/Data/git/budget/db/database.sqlite3')
app.run()