From e0e3a9970b319fc60ff8cbc7a137f175c43a539e Mon Sep 17 00:00:00 2001 From: Kai Chen Date: Thu, 6 Dec 2018 02:38:37 -0800 Subject: [PATCH] Add environment variables to context Add environment variables to context so they may be used in views. Closes https://github.com/thanethomson/statik/issues/72 --- requirements.txt | 1 + statik/context.py | 3 +++ tests/modular/test_context.py | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/requirements.txt b/requirements.txt index 56a3655..f5964e5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,6 +8,7 @@ lipsum==0.1.2 Markdown==3.0.1 MarkupSafe==1.0 mlalchemy==0.2.2 +mock pathtools==0.1.2 pystache==0.5.4 python-dateutil==2.7.3 diff --git a/statik/context.py b/statik/context.py index a9be54c..fa6dd3c 100644 --- a/statik/context.py +++ b/statik/context.py @@ -1,6 +1,8 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals + +import os from copy import deepcopy, copy from future.utils import iteritems @@ -67,6 +69,7 @@ def build(self, db=None, safe_mode=False, for_each_inst=None, extra=None): """Builds a dictionary that can be used as context for template rendering.""" result = copy(self.initial) result.update(self.static) + result.update(os.environ) if self.dynamic: result.update(self.build_dynamic(db, extra=extra, safe_mode=safe_mode)) if self.for_each and for_each_inst: diff --git a/tests/modular/test_context.py b/tests/modular/test_context.py index ff3a0b4..8385fcd 100644 --- a/tests/modular/test_context.py +++ b/tests/modular/test_context.py @@ -1,6 +1,8 @@ # -*- coding:utf-8 -*- import unittest +import mock + from statik.context import StatikContext from statik.database import StatikDatabase @@ -14,3 +16,11 @@ def test_build_context(self): result = context.build(db=StatikDatabase(models={}, data_path=''), extra={'my_var': 5}) assert result.get('render_elm') is False + + def test_env_var_in_context(self): + with mock.patch.dict('statik.context.os.environ', + {'HOME': 'HOME!!'}): + context = StatikContext() + + result = context.build(db=StatikDatabase(models={}, data_path='')) + self.assertEqual(result.get('HOME'), 'HOME!!')