Turbogears2 migration: import of helpers/app_globals into kallithea.lib

Alessandro Molina alessandro.molina at gmail.com
Sun Sep 18 10:28:34 UTC 2016


If I remember correctly kallithea explicitly handles commits, so probably
it has no need for the transaction manager.
Try to add base_config['tm.enabled'] = False in app_cfg.py and see it
everything still works as expected and the error disappeared.

Alessandro

On Wed, Aug 31, 2016 at 2:15 PM, Thomas De Schampheleire <
patrickdepinguin at gmail.com> wrote:

> Hi Alessandro,
>
> In kallithea/lib/__init__.py you added following statements:
>
> from . import helpers
> from . import app_globals
>
> following an expectation of Turbogears2.
> This poses problems with statements like 'from kallithea.lib import vcs'.
>
> I have now dug deeper to the real requirement of this change, and
> found that it is due to method _setup_helpers_and_globals in
> tg/configuration/app_config.py:
>
>     def _setup_helpers_and_globals(self, conf):
>         """Add helpers and globals objects to the ``conf``.
>
>         Override this method to customize the way that ``app_globals``
> and ``helpers``
>         are setup. TurboGears expects them to be available in ``conf``
> dictionary
>         as ``tg.app_globals`` and ``helpers``.
>         """
>         gclass = conf.pop('app_globals', None)
>         if gclass is None:
>             try:
>                 g = conf['package'].lib.app_globals.Globals()
>             except AttributeError:
>                 log.warn('app_globals not provided and
> lib.app_globals.Globals is not available.')
>                 g = Bunch()
>         else:
>             g = gclass()
>
>         g.dotted_filename_finder = DottedFileNameFinder()
>         conf['tg.app_globals'] = g
>
>         if conf.get('tg.pylons_compatible', True):
>             conf['pylons.app_globals'] = g
>
>         h = conf.get('helpers', None)
>         if h is None:
>             try:
>                 h = conf['package'].lib.helpers
>             except AttributeError:
>                 log.warn('helpers not provided and lib.helpers is not
> available.')
>                 h = Bunch()
>         conf['helpers'] = h
>
>
> Encouraged by the docstring, I tried overriding this method as follows
> from Kallithea:
>
> diff --git a/kallithea/config/app_cfg.py b/kallithea/config/app_cfg.py
> --- a/kallithea/config/app_cfg.py
> +++ b/kallithea/config/app_cfg.py
> @@ -33,6 +33,14 @@ class KallitheaAppConfig(AppConfig):
>      def after_init_config(self, conf):
>          conf['tg.strict_tmpl_context'] = True
>
> +    def _setup_helpers_and_globals(self, conf):
> +        from kallithea.lib import app_globals, helpers
> +        from tg.util import DottedFileNameFinder
> +        g = app_globals.Globals()
> +        conf['tg.app_globals'] = g
> +        conf['pylons.app_globals'] = g
> +        conf['helpers'] = helpers
> +        g.dotted_filename_finder = DottedFileNameFinder()
>
>  base_config = KallitheaAppConfig()
>  base_config.renderers = []
> diff --git a/kallithea/lib/__init__.py b/kallithea/lib/__init__.py
> --- a/kallithea/lib/__init__.py
> +++ b/kallithea/lib/__init__.py
> @@ -24,9 +24,6 @@ Original author and date, and relevant c
>  :copyright: (c) 2013 RhodeCode GmbH, and others.
>  :license: GPLv3, see LICENSE.md for more details.
>  """
> -from . import helpers
> -from . import app_globals
> -
>  import os
>
>  def get_current_revision(quiet=False):
>
>
> This seems to work functionally, also in the test suite, but for a
> reason unclear to me the above patch triggers debug logs of tg to
> appear on the console when running 'paster serve development.ini',
> while it is not the case without this patch.
> What worries me most, is that inside these extra logs, there is an
> error log as follows:
>
> 2016-08-31 12:55:09.422 ERROR [tg.appwrappers.transaction_manager]
> Unable to Enable Transaction Manager
> Traceback (most recent call last):
>   File "/home/tdescham/repo/contrib/kallithea/venv/kallithea-tg-
> clean/lib/python2.7/site-packages/tg/appwrappers/transaction_manager.py",
> line 51, in __init__
>     import transaction
> ImportError: No module named transaction
> 2016-08-31 12:55:09.423 DEBUG [tg.appwrappers.transaction_manager]
> TransactionManager enabled: False -> {'attempts': 1, 'enabled': True,
> 'commit_veto': None}
>
>
> It is unclear to me whether this is a new problem due to my patch, or
> that it always existed but never showed due to the logs not visible.
>
> Any feedback is welcome...
>
> Thanks a lot,
> Thomas
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sfconservancy.org/pipermail/kallithea-general/attachments/20160918/118b8690/attachment-0001.html>


More information about the kallithea-general mailing list