aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/tools
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/tools')
-rw-r--r--mediagoblin/tools/pagination.py8
-rw-r--r--mediagoblin/tools/pluginapi.py2
-rw-r--r--mediagoblin/tools/response.py22
-rw-r--r--mediagoblin/tools/template.py5
-rw-r--r--mediagoblin/tools/translate.py6
5 files changed, 37 insertions, 6 deletions
diff --git a/mediagoblin/tools/pagination.py b/mediagoblin/tools/pagination.py
index d0f08c94..855878e0 100644
--- a/mediagoblin/tools/pagination.py
+++ b/mediagoblin/tools/pagination.py
@@ -18,7 +18,7 @@ import urllib
import copy
from math import ceil, floor
from itertools import izip, count
-
+from werkzeug.datastructures import MultiDict
PAGINATION_DEFAULT_PER_PAGE = 30
@@ -98,7 +98,11 @@ class Pagination(object):
"""
Get a page url by adding a page= parameter to the base url
"""
- new_get_params = dict(get_params) or {}
+ if isinstance(get_params, MultiDict):
+ new_get_params = get_params.to_dict()
+ else:
+ new_get_params = dict(get_params) or {}
+
new_get_params['page'] = page_no
return "%s?%s" % (
base_url, urllib.urlencode(new_get_params))
diff --git a/mediagoblin/tools/pluginapi.py b/mediagoblin/tools/pluginapi.py
index 3f98aa8a..1eabe9f1 100644
--- a/mediagoblin/tools/pluginapi.py
+++ b/mediagoblin/tools/pluginapi.py
@@ -252,7 +252,7 @@ def get_hook_templates(hook_name):
.. code-block:: html+jinja
- {% template_hook "media_sidebar" %}
+ {% template_hook("media_sidebar") %}
... which will include all templates for you, partly using this
method.
diff --git a/mediagoblin/tools/response.py b/mediagoblin/tools/response.py
index b0401e08..cd99a230 100644
--- a/mediagoblin/tools/response.py
+++ b/mediagoblin/tools/response.py
@@ -21,6 +21,8 @@ from werkzeug.wrappers import Response as wz_Response
from mediagoblin.tools.template import render_template
from mediagoblin.tools.translate import (lazy_pass_to_ugettext as _,
pass_to_ugettext)
+from mediagoblin.db.models import UserBan, User
+from datetime import date
class Response(wz_Response):
"""Set default response mimetype to HTML, otherwise we get text/plain"""
@@ -50,7 +52,8 @@ def render_400(request, err_msg=None):
_ = pass_to_ugettext
title = _("Bad Request")
if err_msg is None:
- err_msg = _("The request sent to the server is invalid, please double check it")
+ err_msg = _("The request sent to the server is invalid, \
+please double check it")
return render_error(request, 400, title, err_msg)
@@ -71,6 +74,21 @@ def render_404(request):
"you're looking for has been moved or deleted.")
return render_error(request, 404, err_msg=err_msg)
+def render_user_banned(request):
+ """Renders the page which tells a user they have been banned, for how long
+ and the reason why they have been banned"
+ """
+ user_ban = UserBan.query.get(request.user.id)
+ if (user_ban.expiration_date is not None and
+ date.today()>user_ban.expiration_date):
+
+ user_ban.delete()
+ return redirect(request,
+ 'index')
+ return render_to_response(request,
+ 'mediagoblin/banned.html',
+ {'reason':user_ban.reason,
+ 'expiration_date':user_ban.expiration_date})
def render_http_exception(request, exc, description):
"""Return Response() given a werkzeug.HTTPException
@@ -126,7 +144,7 @@ def json_response(serializable, _disable_cors=False, *args, **kw):
Any extra arguments and keyword arguments are passed to the
Response.__init__ method.
'''
-
+
response = wz_Response(json.dumps(serializable), *args, content_type='application/json', **kw)
if not _disable_cors:
diff --git a/mediagoblin/tools/template.py b/mediagoblin/tools/template.py
index fa290611..e5acdf45 100644
--- a/mediagoblin/tools/template.py
+++ b/mediagoblin/tools/template.py
@@ -26,7 +26,9 @@ from mediagoblin import mg_globals
from mediagoblin import messages
from mediagoblin import _version
from mediagoblin.tools import common
+from mediagoblin.tools.translate import is_rtl
from mediagoblin.tools.translate import set_thread_locale
+from mediagoblin.tools.translate import get_locale_from_request
from mediagoblin.tools.pluginapi import get_hook_templates, hook_transform
from mediagoblin.tools.timesince import timesince
from mediagoblin.meddleware.csrf import render_csrf_form_token
@@ -72,12 +74,13 @@ def get_jinja_env(template_loader, locale):
# ... fetch all waiting messages and remove them from the queue
# ... construct a grid of thumbnails or other media
# ... have access to the global and app config
+ # ... determine if the language is rtl or ltr
template_env.globals['fetch_messages'] = messages.fetch_messages
template_env.globals['app_config'] = mg_globals.app_config
template_env.globals['global_config'] = mg_globals.global_config
template_env.globals['version'] = _version.__version__
template_env.globals['auth'] = mg_globals.app.auth
-
+ template_env.globals['is_rtl'] = is_rtl(locale)
template_env.filters['urlencode'] = url_quote_plus
# add human readable fuzzy date time
diff --git a/mediagoblin/tools/translate.py b/mediagoblin/tools/translate.py
index b20e57d1..f55ce349 100644
--- a/mediagoblin/tools/translate.py
+++ b/mediagoblin/tools/translate.py
@@ -31,6 +31,12 @@ AVAILABLE_LOCALES = None
TRANSLATIONS_PATH = pkg_resources.resource_filename(
'mediagoblin', 'i18n')
+# Known RTL languages
+KNOWN_RTL = set(["ar", "fa", "zh","he","iw","ja","ur","yi","ji"])
+
+def is_rtl(lang):
+ """Returns true when the local language is right to left"""
+ return lang in KNOWN_RTL
def set_available_locales():
"""Set available locales for which we have translations"""