Package pytils :: Package templatetags :: Module pytils_translit
[hide private]

Source Code for Module pytils.templatetags.pytils_translit

 1  # -*- coding: utf-8 -*- 
 2  # -*- test-case-name: pytils.test.templatetags.test_translit -*- 
 3  # pytils - simple processing for russian strings 
 4  # Copyright (C) 2006-2007  Yury Yurevich 
 5  # 
 6  # http://www.pyobject.ru/projects/pytils/ 
 7  # 
 8  # This program is free software; you can redistribute it and/or 
 9  # modify it under the terms of the GNU General Public License 
10  # as published by the Free Software Foundation, version 2 
11  # of the License. 
12  # 
13  # This program is distributed in the hope that it will be useful, 
14  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
15  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
16  # GNU General Public License for more details. 
17  """ 
18  pytils.translit templatetags for Django web-framework 
19  """ 
20   
21  __id__ = __revision__ = "$Id: pytils_translit.py 102 2007-07-12 12:33:36Z the.pythy $" 
22  __url__ = "$URL: https://pythy.googlecode.com/svn/tags/pytils/0_2_2/pytils/templatetags/pytils_translit.py $" 
23   
24  from django import template, conf 
25  from pytils import translit, utils 
26   
27  register = template.Library()  #: Django template tag/filter registrator 
28  encoding = conf.settings.DEFAULT_CHARSET  #: Current charset (sets in Django project's settings) 
29  debug = conf.settings.DEBUG  #: Debug mode (sets in Django project's settings) 
30  show_value = getattr(conf.settings, 'PYTILS_SHOW_VALUES_ON_ERROR', False)  #: Show values on errors (sets in Django project's settings) 
31   
32  # Если отладка, то показываем 'unknown+сообщение об ошибке'. 
33  # Если отладка выключена, то можно чтобы при ошибках показывалось 
34  # значение, переданное фильтру (PYTILS_SHOW_VALUES_ON_ERROR=True) 
35  # либо пустая строка. 
36   
37  if debug: 
38      default_value = "unknown: %(error)s" 
39      default_uvalue = u"unknown: %(error)s" 
40  elif show_value: 
41      default_value = "%(value)s" 
42      default_uvalue = u"%(value)s" 
43  else: 
44      default_value = "" 
45      default_uvalue = u"" 
46   
47   
48  # -- filters -- 
49   
50 -def translify(stext):
51 """Translify russian text""" 52 try: 53 res = translit.translify( 54 utils.provide_unicode( 55 stext, 56 encoding, 57 default=default_value 58 )) 59 except Exception, err: 60 # because filter must die silently 61 res = default_value % {'error': err, 'value': stext} 62 return res
63
64 -def detranslify(stext):
65 """Detranslify russian text""" 66 try: 67 res = utils.provide_str( 68 translit.detranslify(stext), 69 encoding, 70 default=default_uvalue) 71 except Exception, err: 72 # because filter must die silently 73 res = default_value % {'error': err, 'value': stext} 74 return res
75
76 -def slugify(stext):
77 """Make slug from (russian) text""" 78 try: 79 res = translit.slugify( 80 utils.provide_unicode( 81 stext, 82 encoding, 83 default=default_value 84 )) 85 except Exception, err: 86 # because filter must die silently 87 res = default_value % {'error': err, 'value': stext} 88 return res
89 90 # -- register filters 91 register.filter('translify', translify) 92 register.filter('detranslify', detranslify) 93 register.filter('slugify', slugify) 94