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})