コード例 #1
0
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)
コード例 #2
0
ファイル: user.py プロジェクト: arck1/picloud
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=
            "Пожалуйста, авторизуйтесь, чтобы посещать страницы других пользователей."
        )
コード例 #3
0
ファイル: universities.py プロジェクト: arck1/picloud
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="Пожалуйста, авторизуйтесь, чтобы видеть список студентов.")
コード例 #4
0
ファイル: comment.py プロジェクト: arck1/picloud
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)
コード例 #5
0
ファイル: user.py プロジェクト: arck1/picloud
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=
            "Пожалуйста, авторизуйтесь, чтобы просматривать записи конкретных пользователей."
        )
コード例 #6
0
ファイル: comment.py プロジェクト: arck1/picloud
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)
コード例 #7
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="Пожалуйста, авторизуйтесь для доступа к редактору постов.")