def erase_duplicate_sessions(username, session_key, cache_key): user = User.get_user_obj(username=username) previous_session = user.session_key Session.objects.get(session_key=previous_session).delete() cache.delete(f"django.contrib.sessions.cached_{cache_key}") user.session_key = session_key return "complete :)"
def send_notifications(username, reaction, send_to_username=None, post_id=None): if reaction == 'Liked' or reaction == 'Commented': try: post = PostModel.objects.get_post(post_id=post_id) except ObjectDoesNotExist: return "Task aborted, post not found(del?)" send_to = post.user if send_to.username == username: return "User liked/commented_on his/her own post :|" if UserNotification.create_notify_obj(to_notify=send_to, by=username, reaction=reaction, post_obj=post): if reaction == 'Liked': return "like_notif sent successfully :)" else: return "comment_notif sent successfully :)" elif reaction == 'Sent Follow Request' or reaction == 'Replied': send_to = User.get_user_obj(username=send_to_username) if send_to_username == username and reaction == 'Replied': #return f"({username}, {send_to_username})" return "User replied to his/her own comment :|" if UserNotification.create_notify_obj(to_notify=send_to, by=username, reaction=reaction): if reaction == 'Sent Follow Request': return "follow_notif sent successfully :)" else: return "reply_notif sent successfully :)"
def update_user_activity_on_logout(username): user = User.get_user_obj(username=username) user.active = False user.session_key = '' tz = pytz.timezone('Asia/Kolkata') user.last_login = datetime.now().astimezone(tz=tz) user.save() return "complete :)"
def manage_relation(request, username, option=None): current_user = request.user follow_unfollow_user = User.get_user_obj(username=username) if option == 'follow': Friends.follow(current_user, follow_unfollow_user) # Notify the user to whom this follow request is being sent send_notifications.delay( username=current_user.username, reaction="Sent Follow Request", send_to_username=follow_unfollow_user.username) else: Friends.unfollow(current_user, follow_unfollow_user) del_notifications.delay(username=current_user.username, reaction="Sent Follow Request", send_to_username=follow_unfollow_user.username) return redirect(reverse('view_profile', kwargs={'username': username}))
def share_posts(username, post_id): try: post = PostModel.objects.get_post(post_id=post_id) except ObjectDoesNotExist: return "Task aborted, post not found(del?)" request_user = User.get_user_obj(username=username) following_list, created = Friends.objects.get_or_create( current_user=request_user) if not created: users = following_list.followers.all() if len(users) > 0: for user in users: post.send_to.add(user) return "complete :)" else: return "user is lonely :(" else: return "user is lonely :("
def update_user_activity_on_login(username, session_key=None): user = User.get_user_obj(username=username) user.active = True user.session_key = session_key user.save() return "complete :)"
def create_notify_obj(cls, to_notify, by, reaction, post_obj=None): poked_user = User.get_user_obj(username=by) obj = cls.objects.create(user_to_notify=to_notify, poked_by=poked_user, post=post_obj, reaction=reaction) return obj