alerts.py 2.0 KB

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