Beispiel #1
0
def get_movie_profile(request, movie_id):
    if request.user.is_authenticated():
        member = Member.objects.get(user=request.user)

        movie = models.Movie.objects.get(id=movie_id)
        form = SendPostModelForm()
        roles = []
        available_roles = models.Role.objects.filter(movie=movie)
        for role in available_roles:
            roles += [role]

        layout = get_layout(member)

        return render(
            request, 'view-movie-profile.html', {
                'movie': movie,
                'roles': roles,
                'form': form,
                'member': member,
                'like_notifs': layout['like_notifs'],
                'comment_notifs': layout['comment_notifs'],
                'follow_notifs': layout['follow_notifs'],
                'mozakhraf_notifs': layout['mozakhraf_notifs'],
                'notif_num': layout['notif_num'],
                'recmovies': layout['recmovies'],
                'recusers': layout['recusers']
            })
    else:
        login_form = MemberLoginForm()
        reg_form = MemberRegModelForm()
        return render(request, 'new-visit.html', {
            'login_form': login_form,
            'reg_form': reg_form
        })
Beispiel #2
0
def like_unlike(request, post_id):
    if request.user.is_authenticated():
        member = Member.objects.get(user=request.user)

        if len(models.Like.objects.filter(member=member,
                                          post__id=post_id)) == 0:
            like = models.Like()
            like.member = member
            like.post = models.Post.objects.get(id=post_id)
            like.save()

            like_notif = models.PostRelatedNotif()
            like_notif.notif_subject = member
            like_notif.notif_object = like.post.member
            like_notif.notif_type = 'like'
            like_notif.post = like.post
            like_notif.save()

            return HttpResponse('Liked', status=200)
        else:
            models.Like.objects.filter(member=member,
                                       post__id=post_id).delete()
            models.PostRelatedNotif.objects.filter(notif_subject=member,
                                                   notif_type='like',
                                                   post__id=post_id).delete()

            return HttpResponse('Unliked', status=200)
    else:
        login_form = MemberLoginForm()
        reg_form = MemberRegModelForm()
        return render(request, 'new-visit.html', {
            'login_form': login_form,
            'reg_form': reg_form
        })
Beispiel #3
0
def get_single_post(request, post_id):
    if request.user.is_authenticated():
        member = Member.objects.get(user=request.user)

        if request.GET:
            notif_id = request.GET['notifID']
            notif = models.Notification.objects.get(id=notif_id)
            notif.seen = True
            notif.save()

        post = models.Post.objects.get(id=post_id)

        template_post = TemplatePost(post, member)

        layout = get_layout(member)

        return render(
            request, 'view-single-post.html', {
                'template_post': template_post,
                'member': member,
                'like_notifs': layout['like_notifs'],
                'comment_notifs': layout['comment_notifs'],
                'follow_notifs': layout['follow_notifs'],
                'mozakhraf_notifs': layout['mozakhraf_notifs'],
                'notif_num': layout['notif_num'],
                'recmovies': layout['recmovies'],
                'recusers': layout['recusers']
            })
    else:
        login_form = MemberLoginForm()
        reg_form = MemberRegModelForm()
        return render(request, 'new-visit.html', {
            'login_form': login_form,
            'reg_form': reg_form
        })
Beispiel #4
0
def get_followers(request, username):
    if request.user.is_authenticated():
        member = Member.objects.get(user=request.user)

        followers = Member.objects.filter(
            user__username=username)[0].member_set.all()
        following = Member.objects.filter(
            user__username=username)[0].followees.all()

        layout = get_layout(member)

        return render(
            request, 'view-followers-list.html', {
                'followers': followers,
                'following': following,
                'member': member,
                'like_notifs': layout['like_notifs'],
                'comment_notifs': layout['comment_notifs'],
                'follow_notifs': layout['follow_notifs'],
                'mozakhraf_notifs': layout['mozakhraf_notifs'],
                'notif_num': layout['notif_num'],
                'recmovies': layout['recmovies'],
                'recusers': layout['recusers']
            })
    else:
        login_form = MemberLoginForm()
        reg_form = MemberRegModelForm()
        return render(request, 'new-visit.html', {
            'login_form': login_form,
            'reg_form': reg_form
        })
Beispiel #5
0
def follow_unfollow(request, username):
    if request.user.is_authenticated():
        member = Member.objects.get(user=request.user)
        member_to_follow = Member.objects.get(user__username=username)
        if len(list(member.followees.filter(user__username=username))) == 0:
            # so: member follows member_to_follow
            member.followees.add(member_to_follow)

            new_notif = models.Notification()
            new_notif.notif_subject = member
            new_notif.notif_object = member_to_follow
            new_notif.notif_type = 'follow'
            new_notif.save()

            return HttpResponse('follow', status=200)
        else:
            # so: member un-follows member_to_follow
            member.followees.remove(member_to_follow)
            models.Notification.objects.filter(notif_subject=member,
                                               notif_object=member_to_follow,
                                               notif_type='follow').delete()
            return HttpResponse('unfollow', status=200)
    else:
        login_form = MemberLoginForm()
        reg_form = MemberRegModelForm()
        return render(request, 'new-visit.html', {
            'login_form': login_form,
            'reg_form': reg_form
        })
Beispiel #6
0
def login(request):
    redirect_to = get_next_page(request)
    if request.user.is_authenticated():
        return HttpResponseRedirect(redirect_to)
    if request.method == "POST" and 'login_button' in request.POST:
        login_form = MemberLoginForm(request.POST, prefix="login")

        if login_form.is_valid():
            auth.login(request, login_form.get_user())
            messages.success(request, _("You have successfully logged in"))
            return HttpResponseRedirect(redirect_to)
    else:
        login_form = MemberLoginForm(prefix="login")

    if request.method == "POST" and 'resend_verification_mail_button' in request.POST:
        resend_form = MemberResendVerificationMailForm(request.POST,
                                                       prefix="resend")
        if resend_form.is_valid():
            resend_form.get_user().send_verification_mail()
            messages.success(
                request,
                _("A new verification mail has been sent to your email address"
                  ))
            return HttpResponseRedirect(reverse("users:login"))
    else:
        resend_form = MemberResendVerificationMailForm(prefix="resend")

    return render(request, "users/login.html", {
        "login_form": login_form,
        "resend_verification_mail_form": resend_form
    })
Beispiel #7
0
def comment(request, post_id):
    if request.user.is_authenticated():
        member = Member.objects.get(user=request.user)
        if request.method == "GET":
            comment_text = request.GET.get('comment_text')
            post_id = request.GET.get('post-id')

            if not (comment_text and post_id):
                return HttpResponse("Not enough information.", status=400)

            postcomment = models.Comment()
            postcomment.member = member
            postcomment.post = models.Post.objects.filter(id=post_id)[0]
            postcomment.comment_text = comment_text
            postcomment.datetime = datetime.datetime.now()
            postcomment.save()

            new_notif = models.PostRelatedNotif()
            new_notif.notif_subject = postcomment.member
            post_author_id = postcomment.post.member.id
            new_notif.notif_object = Member.objects.filter(
                id=post_author_id)[0]
            new_notif.notif_type = 'comment'
            new_notif.post = models.Post.objects.get(id=post_id)
            new_notif.save()

            other_comments = models.Comment.objects.filter(
                post__id=post_id).exclude(member=member)
            for comment in other_comments:
                if comment.member != comment.post.member and len(
                        models.PostRelatedNotif.objects.filter(
                            notif_subject=member,
                            notif_object=comment.member,
                            post__id=post_id,
                            seen=False)) == 0:
                    comment_notif = models.PostRelatedNotif()
                    comment_notif.notif_subject = member
                    comment_notif.notif_object = comment.member
                    comment_notif.notif_type = 'mozakhraf'
                    comment_notif.post = comment.post
                    comment_notif.save()

            return HttpResponse(postcomment.datetime, status=200)
    else:
        login_form = MemberLoginForm()
        reg_form = MemberRegModelForm()
        return render(request, 'new-visit.html', {
            'login_form': login_form,
            'reg_form': reg_form
        })
Beispiel #8
0
def search(request):
    if request.user.is_authenticated():
        member = Member.objects.get(user=request.user)

        layout = get_layout(member)

        if request.method == "GET":
            word = request.GET.get('word', None)

            if word:
                members = list(
                    Member.objects.filter(user__username__icontains=word))
                movies = list(
                    models.Movie.objects.filter(name__icontains=word))
            else:
                members = []
                movies = []

            return render(
                request, 'view-search-results.html', {
                    'member': member,
                    'like_notifs': layout['like_notifs'],
                    'comment_notifs': layout['comment_notifs'],
                    'follow_notifs': layout['follow_notifs'],
                    'mozakhraf_notifs': layout['mozakhraf_notifs'],
                    'notif_num': layout['notif_num'],
                    'recmovies': layout['recmovies'],
                    'recusers': layout['recusers'],
                    'members': members,
                    'movies': movies,
                    'word': word
                })
        else:
            return HttpResponseRedirect('../')
    else:
        login_form = MemberLoginForm()
        reg_form = MemberRegModelForm()
        return render(request, 'new-visit.html', {
            'login_form': login_form,
            'reg_form': reg_form
        })
Beispiel #9
0
def rate_post(request, movie_id):
    if request.user.is_authenticated():
        member = Member.objects.get(user=request.user)
        if request.method == 'POST':
            form = SendPostModelForm(request.POST)
            if form.is_valid():
                if form.cleaned_data['post_text'] != '':
                    post = form.save(commit=False)
                    rate = int(request.POST['rate'])
                    post.rate = rate
                    movie = models.Movie.objects.get(id=int(movie_id))
                    movie.avg_rate = round(
                        (movie.avg_rate * movie.total_raters + rate) /
                        (movie.total_raters + 1), 1)
                    movie.total_raters = movie.total_raters + 1
                    movie.save()
                    post.datetime = datetime.datetime.now()
                    post.member = member
                    post.movie = movie
                    post.save()
                    return HttpResponseRedirect('/movies/' + movie_id + '/')
                else:
                    rate = int(request.POST['rate'])
                    movie = models.Movie.objects.get(id=int(movie_id))
                    movie.avg_rate = round(
                        (movie.avg_rate * movie.total_raters + rate) /
                        (movie.total_raters + 1), 1)
                    movie.total_raters = movie.total_raters + 1
                    movie.save()
                    return HttpResponseRedirect('/movies/' + movie_id + '/')
            return HttpResponseRedirect('/movies/' + movie_id + '/')
    else:
        login_form = MemberLoginForm()
        reg_form = MemberRegModelForm()
        return render(request, 'new-visit.html', {
            'login_form': login_form,
            'reg_form': reg_form
        })
Beispiel #10
0
def home(request):
    if request.user.is_authenticated():
        member = Member.objects.get(user=request.user)
        followees = member.followees.all()

        posts = []
        for followee in followees:
            posts += models.Post.objects.filter(member=followee)

        posts = sorted(posts,
                       key=operator.attrgetter('datetime'),
                       reverse=True)

        template_posts = []
        for post in posts:
            template_posts += [TemplatePost(post, member)]

        layout = get_layout(member)

        return render(
            request, 'view-timeline.html', {
                'template_posts': template_posts,
                'member': member,
                'like_notifs': layout['like_notifs'],
                'comment_notifs': layout['comment_notifs'],
                'follow_notifs': layout['follow_notifs'],
                'mozakhraf_notifs': layout['mozakhraf_notifs'],
                'notif_num': layout['notif_num'],
                'recmovies': layout['recmovies'],
                'recusers': layout['recusers']
            })
    else:
        login_form = MemberLoginForm()
        reg_form = MemberRegModelForm()
        return render(request, 'new-visit.html', {
            'login_form': login_form,
            'reg_form': reg_form
        })
Beispiel #11
0
def get_user_profile(request, username):
    if request.user.is_authenticated():
        # khodesh
        member = Member.objects.get(user=request.user)

        # uni ke mikhad bebine
        member_to_visit = Member.objects.filter(user__username=username)[0]

        if request.GET:
            notif_id = request.GET['notifID']
            notif = models.Notification.objects.get(id=notif_id)
            notif.seen = True
            notif.save()

        if len(list(member.followees.filter(
                user__username=username))) == 0:  # he is not following!
            do_i_follow_her = False
        else:
            do_i_follow_her = True

        if member_to_visit == member:
            this_is_me = True
        else:
            this_is_me = False

        # post haaye member_to_visit
        posts = list(
            models.Post.objects.filter(
                member=member_to_visit).order_by('-datetime'))

        template_posts = []
        for post in posts:
            template_posts += [TemplatePost(post, member)]

        num_of_followers = len(member_to_visit.member_set.all())
        num_of_followees = len(member_to_visit.followees.all())

        layout = get_layout(member)

        return render(
            request, 'view-user-profile.html', {
                'template_posts': template_posts[:20],
                'member_to_visit': member_to_visit,
                'num_of_followers': num_of_followers,
                'num_of_followees': num_of_followees,
                'this_is_me': this_is_me,
                'member': member,
                'like_notifs': layout['like_notifs'],
                'comment_notifs': layout['comment_notifs'],
                'follow_notifs': layout['follow_notifs'],
                'mozakhraf_notifs': layout['mozakhraf_notifs'],
                'notif_num': layout['notif_num'],
                'recmovies': layout['recmovies'],
                'recusers': layout['recusers'],
                'do_i_follow_her': do_i_follow_her
            })
    else:
        login_form = MemberLoginForm()
        reg_form = MemberRegModelForm()
        return render(request, 'new-visit.html', {
            'login_form': login_form,
            'reg_form': reg_form
        })
Beispiel #12
0
def edit_user_profile(request, username):
    if request.user.is_authenticated():
        member = Member.objects.get(user=request.user)

        if request.method == 'POST':
            form = EditProfileForm(member, request.POST, request.FILES)
            if form.is_valid():
                first_name = form.cleaned_data['first_name']
                if first_name != '':
                    member.user.first_name = first_name
                last_name = form.cleaned_data['last_name']
                if last_name != '':
                    member.user.last_name = last_name
                displayed_name = form.cleaned_data['displayed_name']
                if displayed_name != '':
                    member.displayed_name = displayed_name
                bio = form.cleaned_data['bio']
                if bio != '':
                    member.bio = bio
                birthday = form.cleaned_data['birthday']
                if birthday is not None:
                    member.birthday = birthday
                password = form.cleaned_data['password']
                if password != '':
                    member.user.set_password(password)
                    member.user.save()  # in mohemeha! :))
                    user = authenticate(username=member.user.username,
                                        password=password)  # in mohemeha! :))
                    login(request, user)
                if request.FILES:
                    member.prof_image = request.FILES['prof_image']
                member.save()
                return HttpResponseRedirect('/members/' +
                                            member.user.username + '/')

            layout = get_layout(member)
            return render(
                request, 'edit-user-profile.html', {
                    'form': form,
                    'member': member,
                    'like_notifs': layout['like_notifs'],
                    'comment_notifs': layout['comment_notifs'],
                    'follow_notifs': layout['follow_notifs'],
                    'mozakhraf_notifs': layout['mozakhraf_notifs'],
                    'notif_num': layout['notif_num'],
                    'recmovies': layout['recmovies'],
                    'recusers': layout['recusers']
                })
        else:
            if member.user.username != username:
                return HttpResponseRedirect('/members/' +
                                            member.user.username + '/edit/')

            form = EditProfileForm(member=member)
            layout = get_layout(member)
            return render(
                request, 'edit-user-profile.html', {
                    'form': form,
                    'member': member,
                    'like_notifs': layout['like_notifs'],
                    'comment_notifs': layout['comment_notifs'],
                    'follow_notifs': layout['follow_notifs'],
                    'mozakhraf_notifs': layout['mozakhraf_notifs'],
                    'notif_num': layout['notif_num'],
                    'recmovies': layout['recmovies'],
                    'recusers': layout['recusers']
                })
    else:
        login_form = MemberLoginForm()
        reg_form = MemberRegModelForm()
        return render(request, 'new-visit.html', {
            'login_form': login_form,
            'reg_form': reg_form
        })