목적
신고 기능을 통한 문제 유저/게시물 블락
모델
여러 모델을 1개의 신고 모델에서 관리할 수 있도록 설계한다.
class 신고
object key: str # object 구분 키
object id: int # object id
title: str
content: str
author: fk, user
동작
Create
특정인이 신고 게시물 수가 아닌 신고인 수를 카운트 한다.
신고인 수가 일정 수를 넘어서면 서버에서 자동으로 해당 object를 block 처리한다.
class CreateView
model_data: dict[str, Model]
if not 로그인 => 403 perm err
{{ validated }}
# 신고인 수 카운트
qs = {{ 신고 모델 }}.objects.filter(key={{ object_key }}, id={{ object_id }})
count = qs.values_list(author).disticnt()
if {{ block count }} <= count
model = model_data[{{ object key }}]
{{ object block }}
Read
조회 페이지는 일반 게시물과 동일하게 하지만, 경우에 따라 관리자와 작성자만 볼 수 있도록 하던가, 또는 모두가 조회할 수 있도록 하던가 선택한다.
Update, Delete
신고 기능은 수정과 삭제를 불가능하게 한다.