def vk_auth_callback(request): code = request.GET["code"] REDIRECT_URI = request.build_absolute_uri(reverse('vk_auth_callback')) URL = 'https://oauth.vk.com/access_token?' \ 'client_id=' + VK_ID + \ '&client_secret=' + VK_SECRET + \ '&code=' + code + \ '&redirect_uri=' + REDIRECT_URI if request.user.is_authenticated: from cloud.views.user import settings_page if code is not None: data = requests.get(URL).json() if UserInfo.objects.filter(vk_id=data['user_id']): error = "Данный аккаунт уже привязан к пользователю PiCloud" return settings_page(request, error=error) user_info = UserInfo.objects.get(user=request.user) user = user_info.user user.email = data['email'] user_info.vk_id = data['user_id'] user.save() user_info.save() return redirect("settings") else: error = request.GET('error_description') return settings_page(request, error=error) else: if code is not None: data = requests.get(URL).json() user_info = UserInfo.objects.filter(vk_id=data['user_id']) if user_info.count() == 1: user = user_info.first().user user.backend = 'django.contrib.auth.backends.ModelBackend' login(request, user) user_info_to_session(request, user) return redirect("cloud") else: if user_info.count() == 0: error = "Ваша ВК старница не привязана ни к одному пользователю PiCloud. Для начала авторизуйтесь." else: error = "Ваша ВК страница привязана более чем к одному пользователю PiCloud. Разлогиньтесь." return sign_in(request, error=error) else: error = request.GET('error_description') return sign_in(request, error=error)
def user_page(request, user_id): if request.user.is_authenticated: fr_user = get_object_or_404(User, pk=user_id) fr_user_info = UserInfo.objects.get(user=fr_user) return render(request, 'user.html', locals()) else: return sign_in( request, msg= "Пожалуйста, авторизуйтесь, чтобы посещать страницы других пользователей." )
def students_from_university(request, university_id): if request.user.is_authenticated: departments = Department.objects.filter(university_id=university_id) students_info = UserInfo.objects.filter( program__chair__department__in=departments) return render(request, 'structure/students_from_university.html', locals()) else: return sign_in( request, msg="Пожалуйста, авторизуйтесь, чтобы видеть список студентов.")
def delete_comment(request, comment_pk): if not request.user.is_authenticated: return sign_in( request, msg="Пожалуйста, авторизуйтесь для удаления комментариев.") comment = get_object_or_404(Comment, pk=comment_pk) post_pk = comment.post.pk if request.user.is_staff or request.user == comment.author or request.user.is_superuser: comment.delete() return redirect('post_detail', pk=post_pk)
def user_posts(request, user_id): if request.user.is_authenticated: fr_user = get_object_or_404(User, pk=user_id) fr_user_posts = Post.objects \ .filter(author=fr_user) \ .filter(is_approved=True) \ .filter(created_date__lte=timezone.now()) \ .order_by('created_date') \ .reverse() return post_list(request, displayed_posts=fr_user_posts) else: return sign_in( request, msg= "Пожалуйста, авторизуйтесь, чтобы просматривать записи конкретных пользователей." )
def create_comment(request, post_pk): if not request.user.is_authenticated: return sign_in( request, msg="Пожалуйста, авторизуйтесь для добавления комментариев.") if request.method != "POST": return HttpResponse(status=404) text = request.POST.get("comment_text", None) if text is not None: post = Post.objects.get(pk=post_pk) new_comment = Comment(author=request.user, post=post, text=text) new_comment.save() return redirect('post_detail', pk=post_pk)
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="Пожалуйста, авторизуйтесь для доступа к редактору постов.")