파일 업로드 시 mattermost로 알리는 부분에서 이미지 파일과 url을 함께 전송하도록 수정.

This commit is contained in:
2025-12-19 10:39:43 +09:00
parent bfd7d06e5b
commit cda9cd6543
2 changed files with 26 additions and 10 deletions

View File

@ -2,8 +2,10 @@
# 필수 설정 항목 (반드시 작성해야 함) # 필수 설정 항목 (반드시 작성해야 함)
# ===================================== # =====================================
# 사이트 기본 URL
URL=https://example.com
# 게시판 설정 # 게시판 설정
BOARD_ID=news BOARD_ID=게시판이름
BOARD_CA_NAME=카테고리명 BOARD_CA_NAME=카테고리명
BOARD_CONTENT=글 내용 BOARD_CONTENT=글 내용
BOARD_MB_ID=user_id BOARD_MB_ID=user_id

View File

@ -178,7 +178,7 @@ def file_upload(filename, bf_file, msg_sender=None):
# --------------------------- # ---------------------------
# 게시글 작성 함수 # 게시글 작성 함수
# --------------------------- # ---------------------------
def write_board(board, subject, content, mb_id, nickname, ca_name=None, file_list=None, msg_sender=None): def write_board(board, subject, content, mb_id, nickname, ca_name=None, file_list=None, msg_sender=None, url=None):
""" """
그누보드 게시글 및 첨부파일 등록 그누보드 게시글 및 첨부파일 등록
@ -191,9 +191,10 @@ def write_board(board, subject, content, mb_id, nickname, ca_name=None, file_lis
ca_name: 카테고리 이름 (선택사항) ca_name: 카테고리 이름 (선택사항)
file_list: 첨부파일 경로 리스트 (선택사항) file_list: 첨부파일 경로 리스트 (선택사항)
msg_sender: MessageSender 인스턴스 msg_sender: MessageSender 인스턴스
url: 게시판 URL (선택사항)
Returns: Returns:
tuple: (성공여부, 에러메시지) tuple: (성공여부, 에러메시지, wr_id)
""" """
conn = None conn = None
try: try:
@ -289,10 +290,21 @@ def write_board(board, subject, content, mb_id, nickname, ca_name=None, file_lis
f"📝 제목: {subject}\n"\ f"📝 제목: {subject}\n"\
f"📎 첨부파일: {file_count}" f"📎 첨부파일: {file_count}"
# 캡처파일 정보 추가 (file_list에 2개 이상의 파일이 있을 경우)
if file_list and len(file_list) > 1 and os.path.isfile(file_list[1]):
capture_filename = os.path.basename(file_list[1])
capture_size = os.path.getsize(file_list[1]) / 1024 # KB 단위
success_msg += f"\n🖼️ 캡처파일: `{capture_filename}` ({capture_size:.1f}KB)"
# 게시글 링크 추가
if url and board:
post_url = f"{url.rstrip('/')}/{board}/{wr_id}"
success_msg += f"\n🔗 게시글 링크: {post_url}"
if msg_sender: if msg_sender:
msg_sender.send(success_msg, platforms=['mattermost']) msg_sender.send(success_msg, platforms=['mattermost'])
return True, None return True, None, wr_id
except Exception as e: except Exception as e:
if conn: if conn:
@ -314,7 +326,7 @@ def write_board(board, subject, content, mb_id, nickname, ca_name=None, file_lis
if msg_sender: if msg_sender:
msg_sender.send(error_msg, platforms=['mattermost']) msg_sender.send(error_msg, platforms=['mattermost'])
return False, error_msg return False, error_msg, None
finally: finally:
if conn: if conn:
@ -335,10 +347,11 @@ def main():
logger.warning("Mattermost 알림이 비활성화됩니다") logger.warning("Mattermost 알림이 비활성화됩니다")
try: try:
# 무료입장 조건에 대해서만 안내함. # .env의 BOARD_CONTENT 사용 (또는 기본값 설정)
MAIN["content"] = """ if not MAIN.get("content"):
MAIN["content"] = """
<p>Rainy Day 이벤트 적용안내</p> <p>Rainy Day 이벤트 적용안내</p>
<p><b>10:00 ~ 22:00까지의 예보를 합산하며, ~1mm인 경우 0.5mm로 계산합니다.</b></p> <p><b>10:00 ~ 21:00까지의 예보를 합산하며, ~1mm인 경우 0.5mm로 계산합니다.</b></p>
<p>레이니데이 이벤트 정보 확인</p> <p>레이니데이 이벤트 정보 확인</p>
<p><a href="https://firstgarden.co.kr/news/60">이벤트 정보 보기</a></p> <p><a href="https://firstgarden.co.kr/news/60">이벤트 정보 보기</a></p>
""" """
@ -365,8 +378,7 @@ def main():
file_list = [MAIN['file1'], MAIN['file2']] file_list = [MAIN['file1'], MAIN['file2']]
# 게시글 작성 # 게시글 작성, wr_id = write_board(
success, error = write_board(
board=MAIN['board'], board=MAIN['board'],
subject=MAIN['subject'], subject=MAIN['subject'],
content=MAIN['content'], content=MAIN['content'],
@ -374,6 +386,8 @@ def main():
nickname=MAIN['nickname'], nickname=MAIN['nickname'],
ca_name=MAIN['ca_name'], ca_name=MAIN['ca_name'],
file_list=file_list, file_list=file_list,
msg_sender=msg_sender,
url=MAIN.get('url')
msg_sender=msg_sender msg_sender=msg_sender
) )