From 6c98c9d7ca90ded691c5fbf7ff828a12704c7c75 Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Wed, 18 Jul 2018 08:23:50 +0200 Subject: [PATCH] Add caching functionality via Flask-Caching --- Pipfile | 1 + Pipfile.lock | 55 ++++++++++++++++++++++++++++++++++------- calsocial/__init__.py | 3 +++ calsocial/cache.py | 22 +++++++++++++++++ calsocial/config_dev.py | 1 + 5 files changed, 73 insertions(+), 9 deletions(-) create mode 100644 calsocial/cache.py diff --git a/Pipfile b/Pipfile index 8191b37..f19f3e6 100644 --- a/Pipfile +++ b/Pipfile @@ -13,6 +13,7 @@ sqlalchemy-utils = "*" bcrypt = "*" flask-babelex = "*" python-dateutil = "*" +flask-caching = "*" [dev-packages] pylint = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 1b17f2b..8f78a9e 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "3620d7a03e2f49bbf1b812fee29e163e2e0120cd1a3924f6895d3194583e7ac7" + "sha256": "e4313bc9baef5cb187176951d45094fe1de4ccba0d15ab58efbac21b6434f255" }, "pipfile-spec": 6, "requires": { @@ -128,6 +128,14 @@ "index": "pypi", "version": "==0.9.3" }, + "flask-caching": { + "hashes": [ + "sha256:44fe827c6cc519d48fb0945fa05ae3d128af9a98f2a6e71d4702fd512534f227", + "sha256:e34f24631ba240e09fe6241e1bf652863e0cff06a1a94598e23be526bc2e4985" + ], + "index": "pypi", + "version": "==1.4.0" + }, "flask-login": { "hashes": [ "sha256:c815c1ac7b3e35e2081685e389a665f2c74d7e077cb93cecabaea352da4752ec" @@ -247,9 +255,9 @@ }, "sqlalchemy": { "hashes": [ - "sha256:e21e5561a85dcdf16b8520ae4daec7401c5c24558e0ce004f9b60be75c4b6957" + "sha256:72325e67fb85f6e9ad304c603d83626d1df684fdf0c7ab1f0352e71feeab69d8" ], - "version": "==1.2.9" + "version": "==1.2.10" }, "sqlalchemy-utils": { "hashes": [ @@ -276,10 +284,10 @@ "develop": { "astroid": { "hashes": [ - "sha256:0ef2bf9f07c3150929b25e8e61b5198c27b0dca195e156f0e4d5bdd89185ca1a", - "sha256:fc9b582dba0366e63540982c3944a9230cbc6f303641c51483fa547dcc22393a" + "sha256:8704779744963d56a2625ec2949eb150bd499fc099510161ddbb2b64e2d98138", + "sha256:add3fd690e7c1fe92436d17be461feeaa173e6f33e0789734310334da0f30027" ], - "version": "==1.6.5" + "version": "==2.0" }, "atomicwrites": { "hashes": [ @@ -369,11 +377,11 @@ }, "pylint": { "hashes": [ - "sha256:a48070545c12430cfc4e865bf62f5ad367784765681b3db442d8230f0960aa3c", - "sha256:fff220bcb996b4f7e2b0f6812fd81507b72ca4d8c4d05daf2655c333800cb9b3" + "sha256:248a7b19138b22e6390cba71adc0cb03ac6dd75a25d3544f03ea1728fa20e8f4", + "sha256:9cd70527ef3b099543eeabeb5c80ff325d86b477aa2b3d49e264e12d12153bc8" ], "index": "pypi", - "version": "==1.9.2" + "version": "==2.0.0" }, "pytest": { "hashes": [ @@ -390,6 +398,35 @@ ], "version": "==1.11.0" }, + "typed-ast": { + "hashes": [ + "sha256:0948004fa228ae071054f5208840a1e88747a357ec1101c17217bfe99b299d58", + "sha256:10703d3cec8dcd9eef5a630a04056bbc898abc19bac5691612acba7d1325b66d", + "sha256:1f6c4bd0bdc0f14246fd41262df7dfc018d65bb05f6e16390b7ea26ca454a291", + "sha256:25d8feefe27eb0303b73545416b13d108c6067b846b543738a25ff304824ed9a", + "sha256:29464a177d56e4e055b5f7b629935af7f49c196be47528cc94e0a7bf83fbc2b9", + "sha256:2e214b72168ea0275efd6c884b114ab42e316de3ffa125b267e732ed2abda892", + "sha256:3e0d5e48e3a23e9a4d1a9f698e32a542a4a288c871d33ed8df1b092a40f3a0f9", + "sha256:519425deca5c2b2bdac49f77b2c5625781abbaf9a809d727d3a5596b30bb4ded", + "sha256:57fe287f0cdd9ceaf69e7b71a2e94a24b5d268b35df251a88fef5cc241bf73aa", + "sha256:668d0cec391d9aed1c6a388b0d5b97cd22e6073eaa5fbaa6d2946603b4871efe", + "sha256:68ba70684990f59497680ff90d18e756a47bf4863c604098f10de9716b2c0bdd", + "sha256:6de012d2b166fe7a4cdf505eee3aaa12192f7ba365beeefaca4ec10e31241a85", + "sha256:79b91ebe5a28d349b6d0d323023350133e927b4de5b651a8aa2db69c761420c6", + "sha256:8550177fa5d4c1f09b5e5f524411c44633c80ec69b24e0e98906dd761941ca46", + "sha256:898f818399cafcdb93cbbe15fc83a33d05f18e29fb498ddc09b0214cdfc7cd51", + "sha256:94b091dc0f19291adcb279a108f5d38de2430411068b219f41b343c03b28fb1f", + "sha256:a26863198902cda15ab4503991e8cf1ca874219e0118cbf07c126bce7c4db129", + "sha256:a8034021801bc0440f2e027c354b4eafd95891b573e12ff0418dec385c76785c", + "sha256:bc978ac17468fe868ee589c795d06777f75496b1ed576d308002c8a5756fb9ea", + "sha256:c05b41bc1deade9f90ddc5d988fe506208019ebba9f2578c622516fd201f5863", + "sha256:c9b060bd1e5a26ab6e8267fd46fc9e02b54eb15fffb16d112d4c7b1c12987559", + "sha256:edb04bdd45bfd76c8292c4d9654568efaedf76fe78eb246dde69bdb13b2dad87", + "sha256:f19f2a4f547505fe9072e15f6f4ae714af51b5a681a97f187971f50c283193b6" + ], + "markers": "python_version < '3.7' and implementation_name == 'cpython'", + "version": "==1.1.0" + }, "wrapt": { "hashes": [ "sha256:d4d560d479f2c21e1b5443bbd15fe7ec4b37fe7e53d335d3b9b0a7b1226fe3c6" diff --git a/calsocial/__init__.py b/calsocial/__init__.py index 217dce1..59480ac 100644 --- a/calsocial/__init__.py +++ b/calsocial/__init__.py @@ -26,6 +26,7 @@ from flask_security import SQLAlchemyUserDatastore, current_user, login_required from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound from calsocial.account import AccountBlueprint +from calsocial.cache import cache from calsocial.utils import RoutedMixin @@ -79,6 +80,8 @@ class CalendarSocialApp(Flask, RoutedMixin): db.init_app(self) + cache.init_app(self) + babel = Babel(app=self) babel.localeselector(get_locale) diff --git a/calsocial/cache.py b/calsocial/cache.py new file mode 100644 index 0000000..e4e923c --- /dev/null +++ b/calsocial/cache.py @@ -0,0 +1,22 @@ +# Calendar.social +# Copyright (C) 2018 Gergely Polonkai +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +"""Caching functionality for Calendar.social +""" + +from flask_caching import Cache + +cache = Cache() # pylint: disable=invalid-name diff --git a/calsocial/config_dev.py b/calsocial/config_dev.py index 65dd49e..1a35414 100644 --- a/calsocial/config_dev.py +++ b/calsocial/config_dev.py @@ -14,3 +14,4 @@ SECRET_KEY = 'ThisIsNotSoSecret' SECURITY_PASSWORD_HASH = 'bcrypt' SECURITY_PASSWORD_SALT = SECRET_KEY SECURITY_REGISTERABLE = False +CACHE_TYPE = 'simple'