Opened 9 years ago

Closed 9 years ago

#25640 closed Bug (duplicate)

language error [IMPORTANT: cannot render templates]-- fixed -- please patch Django 1.8

Reported by: literati Owned by: Dan
Component: Packaging Version: 1.8
Severity: Release blocker Keywords: get_language_bidi, render_to_string, check_for_language
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

#UPDATE: October 30, 2015 Django 1.8, Ubuntu Server 14.04, Apache 2.4
#1 note that by the time automatic notifications were implemented,
#I used crontab to schedule some recurrent events
#files with the name like 'task8am.sh' load a module through Django shell
#iTo render templates I used a Django shortcut - render_to_string
#while testing I found that this does not work and return an error.
#This can be easily replicated by just doing something like that:
#python3 manage.py shell
#some boilerplatecode
#a = render_to_string('template', {'context': 222 })
#After a little bit of peeking into the issue, I was able to troubleshoot it and edited some code in
#/usr/local/lib/python3.4/dist-packages/django/utils/translation/trans_real.py
#It seems that check_for_language and get_language_bidi methods are not willing
#to accept None values. I hope it will be resolved in the following versions of
#Django, but for now, here is my patch:
#256 def get_language_bidi():
#257 """
#258 Returns selected language's BiDi layout.
#259
#260 * False = left-to-right layout
#261 * True = right-to-left layout
#262 """
#263 base_lang = get_language()
#264 if base_lang is None:
#265 return False
#266 base_lang = get_language().split('-')[0]
#267 return base_lang in settings.LANGUAGES_BIDI
########
########
#400 @lru_cache.lru_cache(maxsize=1000)
#401 def check_for_language(lang_code):
#402 """
#403 Checks whether there is a global language file for the given language
#404 code. This is used to decide whether a user-provided language is
#405 available.
#406
#407 lru_cache should have a maxsize to prevent from memory exhaustion attacks,
#408 as the provided language codes are taken from the HTTP request. See also
#409 <https://www.djangoproject.com/weblog/2007/oct/26/security-fix/>.
#410 """
#411 # First, a quick check to make sure lang_code is well-formed (#21458)
#412 if lang_code is None or not language_code_re.search(lang_code):
#413 return False
#414 for path in all_locale_paths():
#415 if gettext_module.find('django', path, [to_locale(lang_code)]) is not None:
#416 return True
#417 return False

Change History (1)

comment:1 by Claude Paroz, 9 years ago

Resolution: duplicate
Status: newclosed

That was fixed in Django 1.8.1 (#24569). Please always use the latest minor version before reporting a bug.

Note: See TracTickets for help on using tickets.
Back to Top