refresh.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # coding=utf-8
  2. from django.template import loader
  3. from xadmin.plugins.utils import get_context_dict
  4. from xadmin.sites import site
  5. from xadmin.views import BaseAdminPlugin, ListAdminView
  6. REFRESH_VAR = '_refresh'
  7. class RefreshPlugin(BaseAdminPlugin):
  8. refresh_times = []
  9. # Media
  10. def get_media(self, media):
  11. if self.refresh_times and self.request.GET.get(REFRESH_VAR):
  12. media = media + self.vendor('xadmin.plugin.refresh.js')
  13. return media
  14. # Block Views
  15. def block_top_toolbar(self, context, nodes):
  16. if self.refresh_times:
  17. current_refresh = self.request.GET.get(REFRESH_VAR)
  18. context.update({
  19. 'has_refresh': bool(current_refresh),
  20. 'clean_refresh_url': self.admin_view.get_query_string(remove=(REFRESH_VAR,)),
  21. 'current_refresh': current_refresh,
  22. 'refresh_times': [{
  23. 'time': r,
  24. 'url': self.admin_view.get_query_string({REFRESH_VAR: r}),
  25. 'selected': str(r) == current_refresh,
  26. } for r in self.refresh_times],
  27. })
  28. nodes.append(loader.render_to_string('xadmin/blocks/model_list.top_toolbar.refresh.html',
  29. get_context_dict(context)))
  30. site.register_plugin(RefreshPlugin, ListAdminView)