core: dropped deprecated PartialRenderer that depends on pylons.

This commit is contained in:
Marcin Kuzminski 2017-11-07 14:27:23 +01:00
parent 116099638b
commit 211a846906
3 changed files with 28 additions and 81 deletions

View file

@ -859,78 +859,6 @@ class BasePasterCommand(Command):
initialize_database(config)
class PartialRenderer(object):
"""
Partial renderer used to render chunks of html used in datagrids
use like::
_render = PartialRenderer('data_table/_dt_elements.mako')
_render('quick_menu', args, kwargs)
PartialRenderer.h,
c,
_,
ungettext
are the template stuff initialized inside and can be re-used later
:param tmpl_name: template path relate to /templates/ dir
"""
def __init__(self, tmpl_name):
import rhodecode
from pylons import request, tmpl_context as c
from pylons.i18n.translation import _, ungettext
from rhodecode.lib import helpers as h
self.tmpl_name = tmpl_name
self.rhodecode = rhodecode
self.c = c
self._ = _
self.ungettext = ungettext
self.h = h
self.request = request
def _mako_lookup(self):
_tmpl_lookup = self.rhodecode.CONFIG['pylons.app_globals'].mako_lookup
return _tmpl_lookup.get_template(self.tmpl_name)
def _update_kwargs_for_render(self, kwargs):
"""
Inject params required for Mako rendering
"""
_kwargs = {
'_': self._,
'h': self.h,
'c': self.c,
'request': self.request,
'_ungettext': self.ungettext,
}
_kwargs.update(kwargs)
return _kwargs
def _render_with_exc(self, render_func, args, kwargs):
try:
return render_func.render(*args, **kwargs)
except:
log.error(exceptions.text_error_template().render())
raise
def _get_template(self, template_obj, def_name):
if def_name:
tmpl = template_obj.get_def(def_name)
else:
tmpl = template_obj
return tmpl
def render(self, def_name, *args, **kwargs):
lookup_obj = self._mako_lookup()
tmpl = self._get_template(lookup_obj, def_name=def_name)
kwargs = self._update_kwargs_for_render(kwargs)
return self._render_with_exc(tmpl, args, kwargs)
def __call__(self, tmpl, *args, **kwargs):
return self.render(tmpl, *args, **kwargs)
def password_changed(auth_user, session):
# Never report password change in case of default user or anonymous user.
if auth_user.username == User.DEFAULT_USER or auth_user.user_id is None:

View file

@ -26,11 +26,11 @@ Model for notifications
import logging
import traceback
from pyramid.threadlocal import get_current_request
from sqlalchemy.sql.expression import false, true
import rhodecode
from rhodecode.lib import helpers as h
from rhodecode.lib.utils import PartialRenderer
from rhodecode.model import BaseModel
from rhodecode.model.db import Notification, User, UserNotification
from rhodecode.model.meta import Session
@ -343,9 +343,9 @@ class EmailNotificationModel(BaseModel):
def whitespace_filter(self, text):
return text.replace('\n', '').replace('\t', '')
def get_renderer(self, type_):
def get_renderer(self, type_, request):
template_name = self.email_types[type_]
return PartialRenderer(template_name)
return request.get_partial_renderer(template_name)
def render_email(self, type_, **kwargs):
"""
@ -354,8 +354,8 @@ class EmailNotificationModel(BaseModel):
"""
# translator and helpers inject
_kwargs = self._update_kwargs_for_render(kwargs)
email_template = self.get_renderer(type_)
request = get_current_request()
email_template = self.get_renderer(type_, request=request)
subject = email_template.render('subject', **_kwargs)

View file

@ -1,16 +1,35 @@
import collections
# -*- coding: utf-8 -*-
# Copyright (C) 2010-2017 RhodeCode GmbH
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
import pytest
from rhodecode.lib.utils import PartialRenderer
from rhodecode.lib.partial_renderer import PyramidPartialRenderer
from rhodecode.lib.utils2 import AttributeDict
from rhodecode.model.notification import EmailNotificationModel
def test_get_template_obj(app):
def test_get_template_obj(app, request_stub):
template = EmailNotificationModel().get_renderer(
EmailNotificationModel.TYPE_TEST)
assert isinstance(template, PartialRenderer)
EmailNotificationModel.TYPE_TEST, request_stub)
assert isinstance(template, PyramidPartialRenderer)
def test_render_email(app, http_host_only_stub):