rapid_filters.py 1001 B

12345678910111213141516171819202122232425262728293031
  1. __author__ = 'marcos.medeiros'
  2. from django import template
  3. from django.utils.safestring import mark_safe
  4. from django.template import loader, Context
  5. from rapid import filters
  6. register = template.Library()
  7. _base = 'rapid/filters/'
  8. @register.inclusion_tag(_base+'model_filters.html', takes_context=True)
  9. def model_filters(context, model):
  10. ff = filters.FilterSet.from_request(model, context.request)
  11. return {
  12. 'filters': mark_safe(ff.render_filters(context.request)),
  13. 'has_filters': ff.has_filters(),
  14. 'selectors': mark_safe(ff.render_selectors(context.request)),
  15. }
  16. @register.inclusion_tag(_base+'register.html', takes_context=True)
  17. def register_filters(context):
  18. return {}
  19. @register.simple_tag(takes_context=True)
  20. def filter_icon(context, field):
  21. if filters.FilterSet.can_filter(field):
  22. c = Context({'f': field})
  23. t = loader.get_template(_base+'icon.html')
  24. return mark_safe(t.render(c))
  25. return ''