Guest User

Untitled

a guest
Jan 23rd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. from django.utils.safestring import SafeData, mark_safe
  2. from django.template import TemplateSyntaxError
  3.  
  4. @register.filter
  5. def truncate(value, arg):
  6. """
  7. Truncates a string after a given number of chars
  8. Argument: Number of chars to truncate after
  9. """
  10. mark_safe_if_safe = lambda v: mark_safe(v) if isinstance(value, SafeData) else v
  11. try:
  12. length = int(arg)
  13. except ValueError: # invalid literal for int()
  14. raise TemplateSyntaxError, "truncate tag's arg needs to be an integer"
  15. if not isinstance(value, basestring):
  16. value = unicode(value)
  17. if (len(value) > length):
  18. while value[length] != u' ' and length > 0:
  19. length -= 1
  20. return mark_safe_if_safe(value[:length] + u"...")
  21. return value
Add Comment
Please, Sign In to add comment