<div dir="ltr">Sorry for late catching this,<div>have you been able to have it working with those changes or still need me to have a look?</div><div><br></div><div>I'll be at EuroPython this week, so if anyone is around feel free to get in touch! So we can work out any TG related issue.</div><div><br></div><div>Bests,</div><div>Alessandro</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 18, 2016 at 12:52 AM, Mads Kiilerich <span dir="ltr"><<a href="mailto:mads@kiilerich.com" target="_blank">mads@kiilerich.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 07/15/2016 09:32 PM, Thomas De Schampheleire wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
On Tue, Jul 12, 2016 at 12:55 PM, Mads Kiilerich <<a href="mailto:mads@kiilerich.com" target="_blank">mads@kiilerich.com</a>> wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
On 06/30/2016 08:11 PM, Thomas De Schampheleire wrote:<br>
<br></span><div><div class="h5">
I'm now looking at the other tests. One specific failure is easy to<br>
reproduce, either:<br>
<br>
$ py.test kallithea/tests/functional/test_changelog.py<br>
<br>
or interactively by launching kallithea with the test.ini:<br>
<br>
$ paster serve kallithea/tests/test.ini<br>
then browsing to one of either repos vce_test_hg/git and then to<br>
'Changelog'.<br>
<br>
This renders a 500 Server Error without traceback or further information.<br>
I was able to zoom in on the problem with manual traces, and found it<br>
is related to pagination. If I remove the pagination block from the<br>
template (see patch below) then the Changelog page works fine (except<br>
for pagination, of course).<br>
<br>
diff --git a/kallithea/templates/changelog/changelog.html<br>
b/kallithea/templates/changelog/changelog.html<br>
--- a/kallithea/templates/changelog/changelog.html<br>
+++ b/kallithea/templates/changelog/changelog.html<br>
@@ -160,7 +160,6 @@<br>
                   </div><br>
<br>
                   <div class="pagination-wh pagination-left"><br>
-                    ${c.pagination.pager('$link_previous ~2~ $link_next')}<br>
                   </div><br>
               </div><br>
           </div><br>
<br>
<br>
However, it is unclear to me how to proceed. What is the problem with<br>
this pagination, why is it a problem under Turbogears2 and not under<br>
Pylons? How to see more details about the failures?<br>
<br>
<br>
</div></div></blockquote></blockquote><span class="">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I think that I am missing some debugging skills in python - Kallithea<br>
- mako - Turbogears2. I would be grateful if others with more<br>
experience could help me on that. In this problem, it looks like there<br>
is some kind of template rendering problem, but without any hint in<br>
the logs.<br>
<br>
Thanks,<br>
Thomas<br>
</blockquote></blockquote>
<br>
<br></span>
I tried to test it but encountered some problems trying to follow <a href="https://bitbucket.org/conservancy/kallithea/wiki/Turbogears2Migration.md" rel="noreferrer" target="_blank">https://bitbucket.org/conservancy/kallithea/wiki/Turbogears2Migration.md</a> .<br>
<br>
It seems like it really wants "setup.py develop"? "pip install -e ." doesn't work? Do you know ... what is the story around that?<br>
<br>
Also, it took me a while to figure out that even though the config file and database must be created with another installation, the ini file must be changed to use sqlalchemy.url without db1 . Any other changes to watch out for?<br>
<br>
Please consider clarifying the wiki page.<br>
<br>
<br>
Anyway, I do get a nice traceback on stdout when encountering the 500 from the pager:<br>
<br>
  File "/home/mk/kallithea-tg/kallithea/controllers/changelog.py", line 176, in index<br>
    return render('changelog/changelog.html')<br>
  File "/home/mk/kallithea-tg/kallithea/lib/base.py", line 65, in render<br>
    return render_template({'url': url}, 'mako', template_path)<br>
  File "/home/mk/kallithea-venv/lib/python2.7/site-packages/tg/render.py", line 212, in render<br>
    kwargs['result'] = render_function(template_name, tg_vars, **kwargs)<br>
  File "/home/mk/kallithea-venv/lib/python2.7/site-packages/tg/renderers/mako.py", line 126, in __call__<br>
    cache_type=cache_type, cache_expire=cache_expire)<br>
  File "/home/mk/kallithea-venv/lib/python2.7/site-packages/tg/render.py", line 278, in cached_template<br>
    return render_func()<br>
  File "/home/mk/kallithea-venv/lib/python2.7/site-packages/tg/renderers/mako.py", line 123, in render_template<br>
    return Markup(template.render_unicode(**template_vars))<br>
  File "/home/mk/kallithea-venv/lib/python2.7/site-packages/Mako-1.0.0-py2.7.egg/mako/template.py", line 452, in render_unicode<br>
    as_unicode=True)<br>
  File "/home/mk/kallithea-venv/lib/python2.7/site-packages/Mako-1.0.0-py2.7.egg/mako/runtime.py", line 803, in _render<br>
    **_kwargs_for_callable(callable_, data))<br>
  File "/home/mk/kallithea-venv/lib/python2.7/site-packages/Mako-1.0.0-py2.7.egg/mako/runtime.py", line 835, in _render_context<br>
    _exec_template(inherit, lclcontext, args=args, kwargs=kwargs)<br>
  File "/home/mk/kallithea-venv/lib/python2.7/site-packages/Mako-1.0.0-py2.7.egg/mako/runtime.py", line 860, in _exec_template<br>
    callable_(context, *args, **kwargs)<br>
  File "_base_root_html", line 203, in render_body<br>
<br>
  File "_base_base_html", line 41, in render_body<br>
<br>
  File "changelog_changelog_html", line 218, in render_main<br>
<br>
  File "/home/mk/kallithea-tg/kallithea/lib/helpers.py", line 1020, in pager<br>
    result = re.sub(r'~(\d+)~', self._range, format)<br>
  File "/usr/lib64/python2.7/re.py", line 155, in sub<br>
    return _compile(pattern, flags).sub(repl, string, count)<br>
  File "/home/mk/kallithea-tg/kallithea/lib/helpers.py", line 977, in _range<br>
    nav_items.append(self._pagerlink(thispage, text_))<br>
  File "/home/mk/kallithea-venv/lib/python2.7/site-packages/WebHelpers-1.3-py2.7.egg/webhelpers/paginate.py", line 841, in _pagerlink<br>
    link_url = url_generator(**link_params)<br>
  File "/home/mk/kallithea-venv/lib/python2.7/site-packages/Routes-1.13-py2.7.egg/routes/util.py", line 269, in url_for<br>
    (args, kargs))<br>
GenerationException: url_for could not generate URL. Called with args: () {'page': 2}<br>
<br>
One reason I get a nice traceback might be that I use pip for installing as much as possible and thus don't get the annoying eggs but readable python.<br>
<br>
It seems like the problem is that this helpers.py pager function ends up in webhelpers/paginate.py which has some pylons specific code and uses url_generator = pylons.url.current when using Pylons.<br>
<br>
It can apparently be worked around with<br>
<br>
--- a/kallithea/lib/helpers.py<br>
+++ b/kallithea/lib/helpers.py<br>
@@ -911,6 +911,10 @@ class Page(_Page):<br>
     Custom pager to match rendering style with YUI paginator<br>
     """<br>
<br>
+    def __init__(self, *args, **kwargs):<br>
+        kwargs.setdefault('url', url.current)<br>
+        _Page.__init__(self, *args, **kwargs)<br>
+<br>
     def _get_pos(self, cur_page, max_page, items):<br>
         edge = (items / 2) + 1<br>
         if (cur_page <= edge):<br>
@@ -1050,11 +1054,12 @@ class Page(_Page):<br>
 class RepoPage(Page):<br>
<br>
     def __init__(self, collection, page=1, items_per_page=20,<br>
-                 item_count=None, url=None, **kwargs):<br>
+                 item_count=None, url=url.current, **kwargs):<br>
<br>
         """Create a "RepoPage" instance. special pager for paging<br>
         repository<br>
         """<br>
+        # FIXME: Why not calling baseclass __init__?<br>
         self._url_generator = url<br>
<br>
         # Safe the kwargs class-wide so they can be used in the pager() method<br>
<br>
This could probably just be upstreamed now, already while still using Pylons.<br>
<br>
Closing comment: This made me look at the Page code. Now I feel sad. But the TG stuff generally seems to work. That makes me happy.<span class="HOEnZb"><font color="#888888"><br>
<br>
/Mads<br>
</font></span></blockquote></div><br></div>