views.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from django.utils.translation import ugettext as _
  2. from misago.admin import site
  3. from misago.apps.admin.widgets import ListWidget
  4. from misago.apps.admin.online.forms import SearchSessionsForm
  5. class List(ListWidget):
  6. admin = site.get_action('online')
  7. id = 'list'
  8. columns = (
  9. ('owner', _("Session Owner")),
  10. ('start', _("Session Start"), 25),
  11. ('last', _("Last Click"), 25),
  12. )
  13. default_sorting = 'start'
  14. sortables = {
  15. 'start': 0,
  16. 'last': 0,
  17. }
  18. hide_actions = True
  19. pagination = 50
  20. search_form = SearchSessionsForm
  21. empty_message = _('Looks like nobody is currently online on forums.')
  22. def set_filters(self, model, filters):
  23. if 'username' in filters:
  24. model = model.filter(user__username__istartswith=filters['username'])
  25. if 'ip_address' in filters:
  26. model = model.filter(ip__startswith=filters['ip_address'])
  27. if 'useragent' in filters:
  28. model = model.filter(agent__icontains=filters['useragent'])
  29. if filters['type'] == 'registered':
  30. model = model.filter(user__isnull=False)
  31. if filters['type'] == 'guest':
  32. model = model.filter(user__isnull=True)
  33. if filters['type'] == 'crawler':
  34. model = model.filter(crawler__isnull=False)
  35. return model
  36. def prefetch_related(self, items):
  37. return items.prefetch_related('user')
  38. def select_items(self, items):
  39. return items.filter(matched=1).filter(admin=0)