summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.net>2013-04-14 21:00:24 +0200
committerRené 'Necoro' Neumann <necoro@necoro.net>2013-04-14 21:00:24 +0200
commit18f0c3c367a4dd53aff163f717bb62fb661e8600 (patch)
treea9f28ed969d7332efe9ca281cde99a25d263bef6 /app
parenta98445a75c3ac2a46540eee146129f7c77e005d5 (diff)
downloadkosten-18f0c3c367a4dd53aff163f717bb62fb661e8600.tar.gz
kosten-18f0c3c367a4dd53aff163f717bb62fb661e8600.tar.bz2
kosten-18f0c3c367a4dd53aff163f717bb62fb661e8600.zip
Backport @app.template_test; make the functions in expenses filters/tests
Diffstat (limited to 'app')
-rw-r--r--app/__init__.py2
-rw-r--r--app/flask_extend.py32
-rw-r--r--app/forms.py3
-rw-r--r--app/views/categories.py2
-rw-r--r--app/views/consts.py2
-rw-r--r--app/views/expenses.py34
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):