rapid_filters.py 1009 B

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