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")
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")
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")
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)
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)
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="Пожалуйста, авторизуйтесь для доступа к редактору постов.")
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)