alerts.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from copy import deepcopy
  2. from datetime import timedelta
  3. from django.template import RequestContext
  4. from django.utils import timezone
  5. from django.utils.timezone import localtime
  6. from django.utils.translation import ugettext as _
  7. from misago.decorators import block_guest
  8. @block_guest
  9. def alerts(request):
  10. now = localtime(timezone.now())
  11. yesterday = now - timedelta(days=1)
  12. alerts = {}
  13. if not request.user.alerts_date:
  14. request.user.alerts_date = request.user.join_date
  15. for alert in request.user.alert_set.order_by('-id'):
  16. alert.new = alert.date > request.user.alerts_date
  17. alert_date = localtime(deepcopy(alert.date))
  18. diff = now - alert_date
  19. if now.date() == alert_date.date():
  20. try:
  21. alerts['today'].append(alert)
  22. except KeyError:
  23. alerts['today'] = [alert]
  24. elif yesterday.date() == alert_date.date():
  25. try:
  26. alerts['yesterday'].append(alert)
  27. except KeyError:
  28. alerts['yesterday'] = [alert]
  29. elif diff.days <= 7:
  30. try:
  31. alerts['week'].append(alert)
  32. except KeyError:
  33. alerts['week'] = [alert]
  34. elif diff.days <= 30:
  35. try:
  36. alerts['month'].append(alert)
  37. except KeyError:
  38. alerts['month'] = [alert]
  39. else:
  40. try:
  41. alerts['older'].append(alert)
  42. except KeyError:
  43. alerts['older'] = [alert]
  44. new_alerts = request.user.alerts
  45. request.user.alerts = 0
  46. request.user.alerts_date = now
  47. request.user.save(force_update=True)
  48. return request.theme.render_to_response('alerts.html',
  49. {
  50. 'new_alerts': new_alerts,
  51. 'alerts': alerts,
  52. },
  53. context_instance=RequestContext(request))