def links(request, username): session_account = None notify_count = None profile = get_object_or_404(User, username=username) profile_account = Account.get_by_user(user=profile) profile.user_avatar = profile_account.user_avatar if request.user.is_authenticated: session_account = Account.get_by_user(request.user) request.user.is_following = session_account.is_following(profile_account) notify_count = Notification.objects.filter(owner=session_account, viewed=False).count() posts = Post.links_by_user(username, session_account) return render(request, 'link/link.html', {'profile': profile, 'posts': posts, 'links': True, 'notify_count': notify_count})
def login(request): form = None if request.method == 'POST': form = LoginForm(request.POST) if form.is_valid(): data = form.data if '@' in data['identity']: kwargs = {'email': data['identity'].lower()} else: kwargs = {'username': data['identity'].lower()} try: user = User.objects.get(**kwargs) if user is not None and user.check_password( data['password']): login(request, user) if 'keep_connected' in data: request.session.set_expiry(0) next_page = request.GET.get('next', None) redirect_path = reverse('home') if next_page is not None and next_page != '': redirect_path = next_page user_account = Account.get_by_user(user=user) request.session[ 'user_avatar'] = user_account.user_avatar request.session.save() return redirect(redirect_path) except User.DoesNotExist: pass return render(request, 'index.html', {'form': form})
def add(request, post_id): if request.method == 'POST': post = Post.objects.get(id=post_id) account = Account.get_by_user(request.user) post.add_link(account) Notification.add(post.publisher, account, NotificationType.ADD, post) redirect_path = request.GET['next'] return redirect(redirect_path)
def follow(request, username): if request.method == 'POST': relationship = Relationship() relationship.owner = Account.get_by_user(request.user) relationship.follow = Account.get_by_username(username) if not relationship.owner.is_following(relationship.follow): relationship.save() Notification.add(relationship.follow, relationship.owner, NotificationType.FOLLOW) return redirect('profile', username)
def react(request, post_id): if request.method == 'POST': reaction = Reaction() reaction.post = Post.objects.get(id=post_id) reaction.owner = Account.get_by_user(request.user) reaction.save() Notification.add(reaction.post.owner, reaction.owner, NotificationType.REACT, reaction.post) redirect_path = request.GET['next'] return redirect(redirect_path)
def following(request, username): notify_count = None profile = get_object_or_404(User, username=username) accounts = Account.objects.filter( followers__owner__user__username=username) profile_account = Account.get_by_user(user=profile) profile.user_avatar = profile_account.user_avatar if request.user.is_authenticated: session_account = Account.get_by_user(request.user) request.user.is_following = session_account.is_following( profile_account) notify_count = Notification.objects.filter(owner=session_account, viewed=False).count() return render( request, 'account/user.html', { 'profile': profile, 'accounts': accounts, 'following': True, 'notify_count': notify_count })
def comment(request, post_id): if request.method == 'POST': form = CommentForm(request.POST) if form.is_valid(): comment = form.save(commit=False) comment.post = Post.objects.get(id=post_id) comment.owner = Account.get_by_user(request.user) comment.save() Notification.add(comment.post.owner, comment.owner, NotificationType.COMMENT, comment.post) redirect_path = request.GET['next'] return redirect(redirect_path)
def upload_avatar(request): user = request.user user_avatar = request.FILES.get('user_avatar', None) if request.method == 'POST' and user_avatar: ext = os.path.splitext(user_avatar.name)[1] if ext.lower() in ['.jpg', '.jpeg', '.png']: filename = user.username + '.jpg' fs = FileSystemStorage() if fs.exists(filename): fs.delete(filename) fs.save(filename, user_avatar) user_account = Account.get_by_user(user=user) request.session['user_avatar'] = user_account.user_avatar request.session.save() return redirect('account_settings')
def list(request): query = request.GET.get('q', None) anonymous = request.GET.get('anonymous', False) owner = None if not anonymous: owner = Account.get_by_user(request.user) try: search = Search(query, owner) search.process() except SearchException: pass notify_count = Notification.objects.filter(owner__user=request.user, viewed=False).count() return render(request, 'search/list.html', {'search': search, 'notify_count': notify_count})
def new(request): form = None if request.method == 'POST': form = URLForm(request.POST) if form.is_valid(): post = form.save(commit=False) user_account = Account.get_by_user(request.user) post.owner = user_account post.publisher = user_account try: post.set_metadata() post.save() return redirect('home') except LinkException as e: form.add_error(None, e) return render(request, 'home.html', {'form': form})
def unfollow(request, username): if request.method == 'POST': owner = Account.get_by_user(request.user) follow = Account.get_by_username(username) owner.unfollow(follow) return redirect('profile', username)