diff --git a/.beaker/data/.noremove b/.beaker/data/.noremove new file mode 100644 index 0000000..e69de29 diff --git a/.gitignore b/.gitignore index eeb8a6e..8529b52 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,7 @@ **/__pycache__ +*.pyc +venv/ +env/ +.beaker/data/* +!.beaker/data/.noremove +nohup.out diff --git a/README.md b/README.md index 2448499..0a68588 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,26 @@ along with this program. If not, see https://www.gnu.org/licenses/. ## Requirement & Installation +### Clone the repository + +Clone the repository with `--recursive` when cloning the repo. + + git clone https://gitea.ditaajipratama.net/aji/costapy.git --recursive + +Note that if you forgot the `--recursive` flag you can do: + + git submodule update --init + +Note that when submodules have other submodules you need recursive option. + + git submodule update --init --recursive + +### Dependencies + You need this libraries to use CostaPy: - bottle - gunicorn +- beaker - mako You can install it with run this command @@ -37,6 +54,7 @@ Here is the completed command pip install --upgrade pip pip install bottle pip install gunicorn + pip install beaker pip install mako ## Usage diff --git a/config/database.py b/config/database.py index 4291974..49597cd 100644 --- a/config/database.py +++ b/config/database.py @@ -3,5 +3,6 @@ db_main = { 'user' : 'root', 'password' : '', 'database' : 'your_db', + 'port' : 3306, 'autocommit' : True, } diff --git a/config/server.py b/config/server.py index 5830cfc..98cb6b0 100644 --- a/config/server.py +++ b/config/server.py @@ -4,8 +4,14 @@ reloader = False debug = False server = 'gunicorn' # default = 'wsgiref' +session_opts = { + 'session.type': 'file', + 'session.cookie_expires': 5*60, # Session expiration in seconds: minutes*seconds + 'session.data_dir': './.beaker/data', + 'session.auto': True +} + # cors -# session # error page 403 # error page 404 diff --git a/core/staticdir.py b/core/staticdir.py index 487dffd..02df303 100644 --- a/core/staticdir.py +++ b/core/staticdir.py @@ -1,9 +1,7 @@ -from bottle import Bottle, get, static_file +from bottle import Bottle, static_file from config import directory app = Bottle() -for items in directory.static: - @app.get(items['route']) - def static_items(filepath): - return static_file(filepath, root=items['root']) +for item in directory.static: + app.route(item['route'], "GET", lambda filepath, root=item['root']: static_file(filepath, root=root) ) diff --git a/costa.py b/costa.py index 997b56a..8bc8677 100644 --- a/costa.py +++ b/costa.py @@ -6,7 +6,8 @@ # You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/. import sys -from bottle import Bottle, run +from bottle import Bottle, run +from beaker.middleware import SessionMiddleware import handler @@ -18,6 +19,8 @@ app = Bottle() app.merge(handler.app) app.merge(staticdir.app) +app = SessionMiddleware(app, server.session_opts) + run(app, host = server.host, port = server.port, diff --git a/install.sh b/install.sh index 6604a9d..150b2d2 100644 --- a/install.sh +++ b/install.sh @@ -1,5 +1,6 @@ sudo apt-get install -y python3-pip pip install --upgrade pip -pip install bottle -pip install gunicorn -pip install mako +pip install bottle # Micro Framework +pip install gunicorn # WSGI Server Backend +pip install beaker # Session & caching library +pip install mako # Template library