예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
    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)
예제 #4
0
 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)
예제 #5
0
 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)
예제 #6
0
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)
예제 #7
0
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)