All checks were successful
Build And Test / build-and-push (push) Successful in 4m23s
63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
from django.shortcuts import render, redirect, get_object_or_404
|
|
from django.contrib.auth.decorators import login_required
|
|
from .models import BoardNotice
|
|
from .forms import BoardNoticeForm
|
|
|
|
# 게시글 목록
|
|
def notice_list(request):
|
|
notices = BoardNotice.objects.all().order_by('-created_at')
|
|
return render(request, 'board_notice/notice_list.html', {'notices': notices})
|
|
|
|
# 게시글 상세 보기
|
|
def notice_detail(request, pk):
|
|
notice = get_object_or_404(BoardNotice, pk=pk)
|
|
return render(request, 'board_notice/notice_detail.html', {'notice': notice})
|
|
|
|
# 공지사항 게시글 등록
|
|
@login_required
|
|
def create_notice(request):
|
|
if request.method == 'POST':
|
|
form = BoardNoticeForm(request.POST)
|
|
if form.is_valid():
|
|
notice = form.save(commit=False)
|
|
notice.author = request.user # 작성자 정보 추가
|
|
notice.save()
|
|
return redirect('board_notice:notice_list')
|
|
else:
|
|
form = BoardNoticeForm()
|
|
return render(request, 'board_notice/create_notice.html', {'form': form})
|
|
|
|
# 공지사항 게시글 수정
|
|
@login_required
|
|
def update_notice(request, pk):
|
|
notice = get_object_or_404(BoardNotice, pk=pk)
|
|
|
|
# 작성자만 수정 가능하도록 권한 검사
|
|
if notice.author != request.user:
|
|
return redirect('board_notice:notice_list')
|
|
|
|
if request.method == 'POST':
|
|
form = BoardNoticeForm(request.POST, instance=notice)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('board_notice:notice_detail', pk=notice.pk)
|
|
else:
|
|
form = BoardNoticeForm(instance=notice)
|
|
|
|
return render(request, 'board_notice/update_notice.html', {'form': form, 'notice': notice})
|
|
|
|
# 공지사항 게시글 삭제
|
|
@login_required
|
|
def delete_notice(request, pk):
|
|
notice = get_object_or_404(BoardNotice, pk=pk)
|
|
|
|
# 작성자만 삭제 가능하도록 권한 검사
|
|
if notice.author != request.user:
|
|
return redirect('board_notice:notice_list')
|
|
|
|
if request.method == 'POST':
|
|
notice.delete()
|
|
return redirect('board_notice:notice_list')
|
|
|
|
return render(request, 'board_notice/confirm_delete.html', {'notice': notice})
|