Пример #1
0
def post_list(request, category):
    category1 = Notice_category.objects.all()  # gnb카티고리을 불러오는 쿼리셋
    searchForm = PostSearchForm()
    category_id = Notice_category.objects.filter(id=category)
    for list_auth in category_id:
        try:
            if request.user.is_level <= list_auth.list_auth or request.user.is_superuser == True:
                posts = Post.objects.filter(
                    category_id=category,
                    created_date__lte=timezone.now()).order_by('-created_date')
            else:
                return render(request, 'about.html', {
                    'category': category1,
                    'searchForm': searchForm
                })
        except:
            posts = Post.objects.filter(
                category_id=category,
                created_date__lte=timezone.now()).order_by('-created_date')
    page = request.GET.get('page', 1)
    paginator = Paginator(posts, 10)
    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)
    return render(
        request, 'notice/post_list.html', {
            'posts': posts,
            'category_id': category_id,
            'category': category1,
            'searchForm': searchForm
        })
Пример #2
0
 def get_context_data(self, **kwargs):
     # Call the base implementation first to get a context
     context = super().get_context_data(**kwargs)
     # Add in a QuerySet of all the books
     context['category'] = Notice_category.objects.all()  #gnb카티고리을 불러오는 쿼리셋
     context['searchForm'] = PostSearchForm()
     return context
Пример #3
0
def post_search(request):
    if 'search_word' in request.POST and request.POST.get('search_word'):
        sWord = request.POST.get('search_word', '')
        post = Post.objects.all()
        results = post.filter(title__icontains=sWord).distinct()
        searchForm = PostSearchForm()
        category1 = Notice_category.objects.all()  # gnb카티고리을 불러오는 쿼리셋
    return render(
        request, 'notice/post_search_list.html', {
            'results': results,
            'query': sWord,
            'searchForm': searchForm,
            'category': category1
        })
Пример #4
0
def post_detail(request, pk, category):
    category1 = Notice_category.objects.all()  # gnb카티고리을 불러오는 쿼리셋
    category_id = Notice_category.objects.filter(id=category)
    searchForm = PostSearchForm()
    for detail_auth in category_id:
        try:
            if request.user.is_level <= detail_auth.detail_auth or request.user.is_superuser == True or request.user.is_level.exists(
            ) == False:
                post_detail = Post.objects.get(pk=pk, category=category)
                post = get_object_or_404(Post, pk=pk)
                # 파일,이미지
                files = post.file_set.all()
                imges = post.imges_set.all()
            else:
                return render(request, 'about.html', {
                    'category': category1,
                    'searchForm': searchForm
                })
        except:
            post_detail = Post.objects.get(pk=pk, category=category)
            post = get_object_or_404(Post, pk=pk)
            # 파일,이미지
            files = post.file_set.all()
            imges = post.imges_set.all()
    # 댓글 페이지
    comment_post = Comment.objects.filter(
        post_id=pk, created_date__lte=timezone.now()).order_by('-created_date')
    paginator_comment = Paginator(comment_post, 5)
    page = request.GET.get('page')
    try:
        contacts_comment = paginator_comment.page(page)
    except PageNotAnInteger:
        contacts_comment = paginator_comment.page(1)
    except EmptyPage:
        contacts_comment = paginator_comment.page(paginator_comment.num_pages)
    if request.method == "POST":
        form = CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            word_content = Word_filtering.objects.filter(
                id=1, text__contains=comment.text).exists()
            if word_content == True:
                comment.author = request.user
                comment.post = post
            else:
                if request.user.is_authenticated:
                    comment.author = request.user
                    comment.post = post
                    comment.save()
                    return redirect('notice_detail:post_detail',
                                    pk=post.pk,
                                    category=category)
                else:
                    return redirect('login')
    else:
        form = CommentForm()
    return render(
        request, 'notice/post_detail.html', {
            'post_detail': post_detail,
            'category': category1,
            'form': form,
            'comment_post': contacts_comment,
            'files': files,
            'imges': imges,
            'searchForm': searchForm
        })
Пример #5
0
def post_edit(request, pk, category):
    post_author = Post.objects.filter(id=pk)
    category1 = Notice_category.objects.all()  # gnb카티고리을 불러오는 쿼리셋
    for username in post_author:
        if request.method == 'POST' or request.user.id == username.author_id or request.user.is_manager == True or request.user.is_superuser == True:
            category_id = Notice_category.objects.filter(id=category)
            post_edit = get_object_or_404(Post, pk=pk, category=category)
            form = PostForm(request.POST, instance=post_edit)
            searchForm = PostSearchForm()
            imges = ImgesForm()
            file = FlieForm()
        else:
            return redirect('notice_detail:post_detail',
                            pk=username.id,
                            category=category)
        if form.is_valid():
            # 66,67행 글 제목과 내용  중에 비방글 내용이 존재 시 Ture을 반환한다.
            cleanr = re.compile('<.*?>')  # 문자타입안에html태그제거
            cleanc_html = re.sub(cleanr, '',
                                 post_edit.content)  # 문자타입안에html태그제거
            cleanr_content = cleanc_html.replace(" ", "")  # 문자안에공백제거
            # 글제목과 내용중에 비방글을 필터링해준다.
            word_content = Word_filtering.objects.filter(
                id=1, text__contains=cleanr_content).exists()
            word_subject = Word_filtering.objects.filter(
                id=1, text__contains=post_edit.title).exists()
            if word_content or word_subject:
                post = form.save(commit=False)
                post.author = request.user
                post.title = post_edit.title
                post.content = post_edit.content
            else:
                post = form.save(commit=False)
                post.author = request.user
                post.title = post_edit.title
                post.content = post_edit.content
                post.save()
                upflis = request.FILES.getlist('file')
                for upfl in upflis:
                    file = File()
                    file.file = upfl
                    file.post = post
                    file.save()
                if Imges.objects.filter(post_id=pk).exists():
                    imges_edit = Imges.objects.get(post_id=pk)
                else:
                    imges_edit = Imges()
                upimges = request.FILES.getlist('imges')
                for upim in upimges:
                    imges = imges_edit
                    imges.imges = upim
                    imges.post = post
                    post.imges_check = True
                    post.save()
                    imges.save()
                return redirect('notice_detail:post_detail',
                                pk=post.pk,
                                category=category)
        else:
            form = PostForm(instance=post_edit)
    return render(
        request, 'notice/post_edit.html', {
            'form': form,
            'category': category1,
            'category_id': category_id,
            'file': file,
            'imges': imges,
            'searchForm': searchForm
        })
Пример #6
0
def post_new(request, category):
    if request.user.is_authenticated:
        ctgry = category
        searchForm = PostSearchForm()
        category_id = Notice_category.objects.filter(id=ctgry)
        category1 = Notice_category.objects.all()  #gnb카티고리을 불러오는 쿼리셋
        for writer_auth in category_id:
            if request.method == "POST" or request.user.is_level <= writer_auth.writer_auth or request.user.is_superuser == True:
                form = PostForm(request.POST)
                imges = ImgesForm()
                file = FlieForm()
            else:
                return render(request, 'about.html', {
                    'category': category1,
                    'searchForm': searchForm
                })
        if form.is_valid():
            post = form.save(commit=False)
            #66,67행 글 제목과 내용  중에 비방글 내용이 존재 시 Ture을 반환한다.
            cleanr = re.compile('<.*?>')  #문자타입안에html태그제거
            cleanc_html = re.sub(cleanr, '', post.content)  #문자타입안에html태그제거
            cleanr_content = cleanc_html.replace(" ", "")  #문자안에공백제거
            word_content = Word_filtering.objects.filter(
                id=1, text__contains=cleanr_content).exists()
            word_subject = Word_filtering.objects.filter(
                id=1, text__contains=post.title).exists()
            if word_content or word_subject:
                post.author = request.user
                post.category = writer_auth
            else:
                post.author = request.user
                post.category = writer_auth
                post.save()
                # 이미지,파일
                upflis = request.FILES.getlist('file')
                for upfl in upflis:
                    file = File()
                    file.file = upfl
                    file.post = post
                    file.save()
                upimges = request.FILES.getlist('imges')
                for upim in upimges:
                    imges = Imges()
                    imges.imges = upim
                    imges.post = post
                    post.imges_check = True
                    post.save()
                    imges.save()
                return redirect('notice_detail:post_detail',
                                pk=post.pk,
                                category=ctgry)
        else:
            form = PostForm()
            imges = ImgesForm()
            file = FlieForm()
    return render(
        request, 'notice/post_edit.html', {
            'form': form,
            'category': category1,
            'category_id': category_id,
            'file': file,
            'imges': imges,
            'searchForm': searchForm
        })
Пример #7
0
def home(request):
    category = Notice_category.objects.all()  # gnb카티고리을 불러오는 쿼리셋
    category_title = [
        '공지사항', '자유게시판', '겔러리게시판', 'Django', 'less', 'HTML', 'javascript',
        'NORMAL-회원게시판'
    ]
    for category_title in category_title:
        if category_title == '공지사항':
            category_id1 = Notice_category.objects.filter(title=category_title)
        if category_title == '자유게시판':
            category_id2 = Notice_category.objects.filter(title=category_title)
        if category_title == '겔러리게시판':
            category_id3 = Notice_category.objects.filter(title=category_title)
        if category_title == 'Django':
            category_id4 = Notice_category.objects.filter(title=category_title)
        if category_title == 'less':
            category_id5 = Notice_category.objects.filter(title=category_title)
        if category_title == 'HTML':
            category_id6 = Notice_category.objects.filter(title=category_title)
        if category_title == 'javascript':
            category_id7 = Notice_category.objects.filter(title=category_title)
        if category_title == 'NORMAL-회원게시판':
            category_id8 = Notice_category.objects.filter(title=category_title)
    posts1 = Post.objects.filter(
        category=category_id1,
        created_date__lte=timezone.now()).order_by('-created_date')[:5]  #공지사항
    posts2 = Post.objects.filter(
        category=category_id2,
        created_date__lte=timezone.now()).order_by('-created_date')[:5]  #자유게시판
    posts3 = Post.objects.filter(category=category_id3,
                                 created_date__lte=timezone.now()).order_by(
                                     '-created_date')[:5]  #겔러리게시판
    posts4 = Post.objects.filter(category=category_id4,
                                 created_date__lte=timezone.now()).order_by(
                                     '-created_date')[:5]  #Django
    posts5 = Post.objects.filter(
        category=category_id5,
        created_date__lte=timezone.now()).order_by('-created_date')[:5]  #less
    posts6 = Post.objects.filter(
        category=category_id6,
        created_date__lte=timezone.now()).order_by('-created_date')[:5]  #HTML
    posts7 = Post.objects.filter(category=category_id7,
                                 created_date__lte=timezone.now()).order_by(
                                     '-created_date')[:5]  #javascript
    posts8 = Post.objects.filter(category=category_id8,
                                 created_date__lte=timezone.now()).order_by(
                                     '-created_date')[:5]  #NORMAL-회원게시판
    imges = Imges.objects.filter(
        created_date__lte=timezone.now()).order_by('-created_date')
    searchForm = PostSearchForm()
    return render(
        request, 'home.html', {
            'posts1': posts1,
            'posts2': posts2,
            'posts3': posts3,
            'posts4': posts4,
            'posts5': posts5,
            'posts6': posts6,
            'posts7': posts7,
            'posts8': posts8,
            'category': category,
            'imges': imges,
            'searchForm': searchForm
        })
Пример #8
0
        r'^notice/',
        include(('notice.urls', 'files_remove'),
                namespace='notice_files_remove')),
    url(r'^notice/post_search$', post_search, name='post_search'),
    url(r'^$', home, name='home'),
    url(r'^accounts/logout/$',
        auth_views.logout, {'next_page': '/'},
        name='logout'),

    # 로그인 페이지에서 각카테고리(gnb)나오기 위해서는 extra_context 을사용하여 카테고리퀘리셋 을적용한다
    url(r'^accounts/login/$',
        auth_views.login, {
            'template_name': 'registration/login.html',
            'extra_context': {
                'category': Notice_category.objects.all(),
                'searchForm': PostSearchForm()
            }
        },
        name='login'),
    url(r'^auth/', include('social_django.urls', namespace='social')),
    url(r'^register/', UserRegisterView.as_view(), name='register'),
    url(r'^accounts/password_change/$',
        UserPasswordChangeView.as_view(),
        name='password_change'),
    url(r'^accounts/password_change_done/$',
        UserPasswordDoneView.as_view(),
        name='password_change_done'),

    #ajax게시글 내용단어필터링
    url(r'^ajax/validate_content/$',
        ajax_word_filtering,