diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/__init__.py | 2 | ||||
-rw-r--r-- | app/flask_extend.py | 32 | ||||
-rw-r--r-- | app/forms.py | 3 | ||||
-rw-r--r-- | app/views/categories.py | 2 | ||||
-rw-r--r-- | app/views/consts.py | 2 | ||||
-rw-r--r-- | app/views/expenses.py | 34 |
6 files changed, 52 insertions, 23 deletions
diff --git a/app/__init__.py b/app/__init__.py index 6ba7025..0f84d3f 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -1,4 +1,4 @@ -from flask import Flask +from .flask_extend import Flask # create app app = Flask("kosten") diff --git a/app/flask_extend.py b/app/flask_extend.py new file mode 100644 index 0000000..5096d17 --- /dev/null +++ b/app/flask_extend.py @@ -0,0 +1,32 @@ +from flask import Flask as _Flask +from flask import Blueprint as _Blueprint + +if not hasattr(_Flask, 'template_test'): +# model `template_test` -- introduced with flask-0.10 + class Flask(_Flask): + def template_test(self, name=None): + def decorator(f): + self.add_template_test(f, name=name) + return f + return decorator + + def add_template_test(self, f, name=None): + self.jinja_env.tests[name or f.__name__] = f + + class Blueprint(_Blueprint): + def app_template_test(self, name=None): + def decorator(f): + self.add_app_template_test(f, name=name) + return f + return decorator + + def add_app_template_test(self, f, name=None): + def register_template(state): + state.app.jinja_env.tests[name or f.__name__] = f + self.record_once(register_template) + +else: + Flask = _Flask + Blueprint = _Blueprint + +del _Flask, _Blueprint diff --git a/app/forms.py b/app/forms.py index 9490839..a7b9fcd 100644 --- a/app/forms.py +++ b/app/forms.py @@ -13,11 +13,10 @@ from . import app today = datetime.date.today +@app.template_test("hidden") def is_hidden_field(f): return isinstance(f, HiddenField) -app.jinja_env.tests["hidden"] = is_hidden_field - class DecimalField(fields.DecimalField): def process_formdata(self, valuelist): if valuelist: diff --git a/app/views/categories.py b/app/views/categories.py index c351746..902959b 100644 --- a/app/views/categories.py +++ b/app/views/categories.py @@ -1,4 +1,4 @@ -from flask import Blueprint +from ..flask_extend import Blueprint from flask import render_template, request, url_for from ..model import Category diff --git a/app/views/consts.py b/app/views/consts.py index 6358ed1..bda6067 100644 --- a/app/views/consts.py +++ b/app/views/consts.py @@ -1,4 +1,4 @@ -from flask import Blueprint +from ..flask_extend import Blueprint from flask import render_template, request, url_for mod = Blueprint('consts', __name__) diff --git a/app/views/expenses.py b/app/views/expenses.py index 400876c..269d9bb 100644 --- a/app/views/expenses.py +++ b/app/views/expenses.py @@ -1,4 +1,4 @@ -from flask import Blueprint +from ..flask_extend import Blueprint from flask import render_template, request, url_for, redirect import datetime, decimal @@ -26,25 +26,23 @@ def calc_month_exp(year, month): return MonthExpense(datetime.date(year, month, 1), exps) -@mod.context_processor -def inject_funs(): - def prev_date(exp): - if exp.date.month == 1: - return { "year": exp.date.year - 1, "month": 12 } - else: - return { "year": exp.date.year, "month": exp.date.month - 1 } - - def next_date(exp): - if exp.date.month == 12: - return { "year": exp.date.year + 1, "month": 1 } - else: - return { "year": exp.date.year, "month": exp.date.month + 1} - - def is_last(exp): - return exp.date >= datetime.date.today().replace(day = 1) +@mod.app_template_filter() +def prev_date(exp): + if exp.date.month == 1: + return { "year": exp.date.year - 1, "month": 12 } + else: + return { "year": exp.date.year, "month": exp.date.month - 1 } +@mod.app_template_filter() +def next_date(exp): + if exp.date.month == 12: + return { "year": exp.date.year + 1, "month": 1 } + else: + return { "year": exp.date.year, "month": exp.date.month + 1} - return { 'prev_date' : prev_date, 'next_date' : next_date, 'is_last': is_last } +@mod.app_template_test("last_date") +def is_last(exp): + return exp.date >= datetime.date.today().replace(day = 1) @mod.app_template_filter("date") def format_date(s): |