diff options
author | Christian Heimes <cheimes@redhat.com> | 2017-03-02 16:09:53 +0100 |
---|---|---|
committer | David Kupka <dkupka@redhat.com> | 2017-03-08 15:59:26 +0100 |
commit | 80be18162921268be9c8981495c9e8a4de0c85cd (patch) | |
tree | 3bd5245a257df520167976a3a83be89c5ea6bb54 /ipaclient/csrgen.py | |
parent | f8d7e37a091c1df4c989b80b8d19e12ab35533c8 (diff) | |
download | freeipa-80be18162921268be9c8981495c9e8a4de0c85cd.tar.gz freeipa-80be18162921268be9c8981495c9e8a4de0c85cd.tar.xz freeipa-80be18162921268be9c8981495c9e8a4de0c85cd.zip |
Move csrgen templates into ipaclient package
csrgen broke packaging of ipaclient for PyPI. All csrgen related
resources are now package data of ipaclient package. Package data is
accessed with Jinja's PackageLoader() or through pkg_resources.
https://pagure.io/freeipa/issue/6714
Signed-off-by: Christian Heimes <cheimes@redhat.com>
Reviewed-By: Ben Lipton <blipton@redhat.com>
Reviewed-By: Martin Basti <mbasti@redhat.com>
Diffstat (limited to 'ipaclient/csrgen.py')
-rw-r--r-- | ipaclient/csrgen.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/ipaclient/csrgen.py b/ipaclient/csrgen.py index 96100ae82..8c41e3985 100644 --- a/ipaclient/csrgen.py +++ b/ipaclient/csrgen.py @@ -8,6 +8,8 @@ import os.path import pipes import traceback +import pkg_resources + import jinja2 import jinja2.ext import jinja2.sandbox @@ -15,7 +17,6 @@ import six from ipalib import errors from ipalib.text import _ -from ipaplatform.paths import paths from ipapython.ipa_log_manager import log_mgr if six.PY3: @@ -72,10 +73,14 @@ class Formatter(object): """ base_template_name = None - def __init__(self, csr_data_dir=paths.CSR_DATA_DIR): + def __init__(self, csr_data_dir=None): + if csr_data_dir is not None: + loader = jinja2.FileSystemLoader( + os.path.join(csr_data_dir, 'templates')) + else: + loader = jinja2.PackageLoader('ipaclient', 'csrgen/templates') self.jinja2 = jinja2.sandbox.SandboxedEnvironment( - loader=jinja2.FileSystemLoader( - os.path.join(csr_data_dir, 'templates')), + loader=loader, extensions=[jinja2.ext.ExprStmtExtension, IPAExtension], keep_trailing_newline=True, undefined=IndexableUndefined) @@ -277,9 +282,13 @@ class RuleProvider(object): class FileRuleProvider(RuleProvider): - def __init__(self, csr_data_dir=paths.CSR_DATA_DIR): + def __init__(self, csr_data_dir=None): self.rules = {} - self.csr_data_dir = csr_data_dir + if csr_data_dir is None: + self.csr_data_dir = pkg_resources.resource_filename( + 'ipaclient', 'csrgen') + else: + self.csr_data_dir = csr_data_dir def _rule(self, rule_name, helper): if (rule_name, helper) not in self.rules: |