def subreddit_view(request, title, sort_by): subreddit = Subreddit.objects.get(title=title) posts = list() if sort_by == 'trending': current_subreddit = Subreddit.objects.filter(title=title).first() post_list = list(Post.objects.filter(subreddit=current_subreddit)) post_list = sorted( post_list, key=lambda i: 0 if i.getPopularity() == 0 else -1 / i.getPopularity()) posts = post_list else: posts = Post.objects.filter( subreddit=subreddit).order_by('created_at').reverse() members_query = subreddit.members members = members_query.all() subreddits = random_subreddits() subreddit_filter = subreddit_search(request) is_member = request.user in subreddit.members.all() context = { 'subreddit': subreddit, 'subreddits': subreddits, 'members': members, 'posts': posts, 'sort_by': sort_by, 'is_member': is_member, 'subreddit_filter': subreddit_filter, 'search_subreddits': search_subreddits } return render(request, 'subreddit/subreddit.html', context)
def user_profile_view(request, username): user = RedditUser.objects.get(username=username) form = UpdateUserForm() user_posts = Post.objects.filter( user=user).order_by("created_at").reverse() sort_by = 'recent' joined = Subreddit.objects.filter(members=user) subreddit_filter = subreddit_search(request) if request.method == 'POST': form = UpdateUserForm(request.POST, request.FILES) if form.is_valid(): data = form.cleaned_data if data['bio']: user.bio = data['bio'] if data['image']: user.image = data['image'] user.save() return redirect(f'/user/{username}') context = { 'user': user, 'form': form, 'user_posts': user_posts, 'sort_by': sort_by, 'joined': joined, 'subreddit_filter': subreddit_filter, 'search_subreddits': search_subreddits } return render(request, 'reddituser/user_profile.html', context)
def get(self, request): subreddits = Subreddit.objects.all() subreddit_filter = subreddit_search(request) subreddits = random_subreddits() search_subreddits = Subreddit.objects.all() is_home = True posts = [] if request.user.is_authenticated: user_subreddits = Subreddit.objects.filter(members=request.user) for sub in user_subreddits: posts.extend( list( Post.objects.filter( subreddit=sub).order_by('created_at').reverse())) else: post_list = list(Post.objects.all()) post_list = sorted( post_list, key=lambda i: 0 if i.getPopularity() == 0 else -1 / i.getPopularity()) posts = post_list context = { 'subreddits': subreddits, 'search_subreddits': search_subreddits, 'subreddit_filter': subreddit_filter, 'posts': posts, 'is_home': is_home } return render(request, 'main.html', context)
def get(self, request): form = SignUpForm() subreddit_filter = subreddit_search(request) context = { 'form': form, 'subreddit_filter': subreddit_filter, 'search_subreddits': search_subreddits } return render(request, 'authentication/signupform.html', context)
def get(self, request): form = LoginForm() title = 'Login' subreddit_filter = subreddit_search(request) context = { 'form': form, 'title': title, 'subreddit_filter': subreddit_filter, 'search_subreddits': search_subreddits } return render(request, 'authentication/generic_form.html', context)
def subreddit_search_view(request): subreddits = Subreddit.objects.all() subreddit_filter = subreddit_search(request) subreddits = subreddit_filter.qs[:6] posts = [] for subreddit in subreddits: query_set = Post.objects.filter(subreddit=subreddit) for post in query_set: posts.append(post) random.shuffle(posts) context = { 'subreddits': subreddits, 'subreddit_filter': subreddit_filter, 'posts': posts, 'search_subreddits': search_subreddits } return render(request, 'subreddit/search.html', context)
def subreddit_creation_view(request): form = SubredditCreationForm() title = 'Create Subreddit' subreddit_filter = subreddit_search(request) if request.method == "POST": form = SubredditCreationForm(request.POST) if form.is_valid(): data = form.cleaned_data Subreddit.objects.create(title=data['title'], about=data['about']) return redirect(f"/subreddit/page/{data['title']}/recent") context = { 'form': form, 'title': title, 'subreddit_filter': subreddit_filter, 'search_subreddits': search_subreddits } return render(request, 'subreddit/createsubreddit.html', context)