alerts.py 1.8 KB

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