views.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from django.utils.translation import ugettext as _
  2. from misago.admin import site
  3. from misago.core.admin.widgets import ListWidget
  4. from misago.core.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'] == 'hidden':
  32. model = model.filter(hidden=True)
  33. if filters['type'] == 'guest':
  34. model = model.filter(user__isnull=True)
  35. if filters['type'] == 'crawler':
  36. model = model.filter(crawler__isnull=False)
  37. return model
  38. def prefetch_related(self, items):
  39. return items.prefetch_related('user')
  40. def select_items(self, items):
  41. return items.filter(matched=1).filter(admin=0)