def get_notification(nid, user):
""" if notification exists, and belongs to the current user, return it.
else return None.
"""
user_notifications = user.notification_sent_to.filter(is_deleted=False).order_by('sent_date')
current_notifications = user_notifications.filter(uniq_key=nid)
if user_notifications:
current_notification = current_notifications[0]
try:
newer_notification = current_notification.get_next_by_sent_date(sent_to=user, is_deleted=False)
newest_notification = user_notifications.reverse()[0]
if newest_notification == newer_notification:
newest_notification = None
except Notification.DoesNotExist:
newest_notification, newer_notification = None, None
try:
older_notification = current_notification.get_previous_by_sent_date(sent_to=user, is_deleted=False)
oldest_notification = user_notifications[0]
if oldest_notification == older_notification:
oldest_notification = None
except:
oldest_notification, older_notification = None, None
return newest_notification, newer_notification, current_notification, older_notification, oldest_notification
else:
return None, None, None, None, None