Example #1
0
def post_delete(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if (request.user.is_authenticated
            and request.user.is_staff) or request.user.pk == post.author.pk:
        update_carma(post.author)
        post.delete()
    return redirect("cloud")
Example #2
0
def post_edit(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if (request.user.is_authenticated
            and request.user.is_staff) or request.user.pk == post.author.pk:
        if request.method == "POST":
            form = PostForm(request.POST, request.FILES, instance=post)
            user_can_publish = can_user_publish_instantly(request.user)
            if form.is_valid():
                post = form.save(commit=False)
                post.last_editor = request.user
                post.published_date = timezone.now()
                post.is_approved = user_can_publish
                post.save()
                if user_can_publish:
                    update_carma(request.user)
                    return redirect('post_detail', pk=post.pk)
                else:
                    msg = "Благодарим за правки! В ближайшее время мы проверим и опубликуем их."
                    return post_detail(request, pk=post.pk, msg=msg)
            else:
                form = PostForm(instance=post)
                user_info = get_object_or_404(UserInfo, user=request.user)
                return render(request, 'cloud/post_edit.html', {
                    'form': form,
                    'post': post
                })
        else:
            form = PostForm(instance=post)
            user_info = get_object_or_404(UserInfo, user=request.user)
            return render(request, 'cloud/post_edit.html', {
                'form': form,
                'post': post,
            })
    else:
        return redirect("cloud")
Example #3
0
def post_checked(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if request.user.is_authenticated and (request.user.is_staff
                                          or request.user.is_superuser):
        Post.objects.filter(pk=pk).update(is_approved=True)
        update_carma(post.author)
        return redirect("moderation")
    else:
        return redirect("cloud")
Example #4
0
def change_avatar(request):
    if request.method == 'POST':
        form = AvatarChangeForm(
            request.POST,
            request.FILES,
            instance=UserInfo.objects.get(user=request.user))
        if form.is_valid():
            form.save()
            update_carma(request.user)
            request.session['user_avatar_url'] = UserInfo.objects.get(
                user=request.user).avatar.url
            return settings_page(request, msg="Аватар успешно изменен.")
        else:
            return settings_page(
                request, error="При изменении аватара произошла ошибка.")
    else:
        # не достижимый участок кода, только если на прямую обратиться по адресу
        return settings_page(request)
Example #5
0
def change_user_name(request):
    if request.method == 'POST':
        user_form = UserNameChangeForm(
            request.POST, instance=User.objects.get(pk=request.user.pk))
        if user_form.is_valid() and validate_name(request.POST['first_name'],
                                                  request.POST['last_name']):
            user_form.save()
            update_carma(request.user)
        else:
            return settings_page(
                request,
                error="Ошибка при изменении данных. " +
                "Убедитесь, что длина полей «Имя» и «Фамилия» не превышает 20 символов"
            )
        return settings_page(request, msg="Данные успешно сохранены.")
    else:
        # недостижимый участок кода, только если на прямую обратиться по адресу
        return settings_page(request)
Example #6
0
def post_new(request):
    if request.user.is_authenticated:
        if request.method == "POST":
            form = PostForm(request.POST, request.FILES)
            user_can_publish = can_user_publish_instantly(request.user)
            parent_post_id = request.GET.get("parent_post_id", None)
            if form.is_valid():
                post = form.save(commit=False)
                post.last_editor = request.user
                post.author = request.user
                post.created_date = timezone.now()
                post.is_approved = user_can_publish
                if parent_post_id is not None:
                    post.parent_post = Post.objects.get(pk=parent_post_id)
                post.save()
                request.session['last_post_subject'] = request.POST["subject"]
                if user_can_publish:
                    update_carma(request.user)
                    return redirect('post_detail', pk=post.pk)
                else:
                    msg = "Спасибо за ваш вклад! Мы уже уведомлены о вашем посте, он будет проверен в ближайшее время."
                    return post_detail(request, pk=post.pk, msg=msg)
            else:
                form = PostForm()
                user_info = get_object_or_404(UserInfo, user=request.user)
                return render(request, 'cloud/post_edit.html', {
                    'form': form,
                    'user_info': user_info
                })
        else:
            form = PostForm()
            user_info = get_object_or_404(UserInfo, user=request.user)
            return render(request, 'cloud/post_edit.html', {
                'form': form,
                'user_info': user_info
            })
    else:
        return sign_in(
            request,
            msg="Пожалуйста, авторизуйтесь для доступа к редактору постов.")
Example #7
0
def change_user(request):
    if request.method == 'POST':
        user_info_form = UserInfoChangeForm(
            request.POST, instance=UserInfo.objects.get(user=request.user))
        if user_info_form.is_valid() and validate_course(
                request.POST['course']):
            user_info_form.save()
            update_carma(request.user)

            program = UserInfo.objects.get(user=request.user).program
            if program is not None:
                request.session['program_id'] = program.pk
            else:
                request.session['program_id'] = ""
        else:
            return settings_page(
                request,
                error="Ошибка при изменении данных. " +
                "Убедитесь, что поля «Программа обучения» и «Курс обучения» заполнены"
            )
        return settings_page(request, msg="Данные успешно сохранены.")
    else:
        # недостижимый участок кода, только если на прямую обратиться по адресу
        return settings_page(request)