게임처럼 쉬운 출석 체크, Python과 Flask로 구현하는 자동화 시스템!



게임처럼 쉬운 출석 체크, Python과 Flask로 구현하는 자동화 시스템!

제가 직접 경험해본 결과로는 게더타운 출석체크 자동화를 위한 Python Flask 서버 구축 방법을 소개합니다. 이 글을 통해 생생한 개발 과정과 그 결과들을 자세히 알아보세요.

Python Flask 서버 구조

Python Flask는 쉽고 빠르게 웹 애플리케이션을 구축할 수 있는 프레임워크라서, 게더타운의 출석 체크 시스템을 만들기에 적합해요. 제가 직접 확인해본 결과, 이 시스템은 다음과 같은 구조로 진행됩니다.

  1. 학생명단 가져오기
  2. 데이터베이스에서 현재 기수의 학생 목록을 가져옵니다.

  3. 접속자 명단 수집하기

  4. Flask 서버가 Node.js를 통해 연결하여 접속한 학생들의 정보를 실시간으로 확인할 수 있습니다.

  5. 출석 정보 처리

  6. 출석 및 퇴실 정보를 가져와 학생들의 현황을 관리합니다.

여기서 노드에서 학생들의 접속 정보를 가져오는 과정을 자세히 살펴보겠습니다.

 

👉 ✅ 상세정보 바로 확인 👈



 

  1. 학생명단 가져오기

학생명단을 가져오는 것은 아주 중요해요. 이를 위해 다음과 같은 코드를 사용했어요.

python
@app.route('/get_user_in', methods=['POST'])
def get_user_in():
data = getuser_atten(session['gather_space'])
return jsonify(data), 200

이 코드는 Flask 애플리케이션의 /get_user_in 경로로 POST 요청을 보낼 때 현재 기수의 학생 출결 정보를 가져오는 역할을 해요. 제가 직접 경험해본 결과, 세션에 저장된 데이터를 기반으로 출결 정보를 쉽게 가져올 수 있었어요.

  • 어떻게 작동하나요?
  • 세션에 저장된 gather_space 값을 사용해, 회사 서버의 데이터베이스에 쿼리를 넣어 출결 정보를 가져와요.
  • 출결 정보는 JSON 형식으로 반환되어 사용자에게 전달됩니다.

2. 게더타운 접속자 목록 가져오기

제가 분석해본 결과, 게더타운에 접속한 학생들의 목록을 가져오는 것은 매우 중요한 작업이에요. 그래서 다음의 코드를 사용했어요.

python
@app.route('/get_gw', methods=['POST'])
def get_gw():
filename = f'{secrets["DATA_SRC"]}/gethertown/{session["gather_space"]}_player_names_{todays}.txt'
gw_data = get_login_users_from_file(filename)
return jsonify(gw_data), 200

이 코드는 지정된 파일에서 학생들의 접속자 리스트를 가져와 JSON 형식으로 반환해요. 실시간으로 접속 중인 학생들을 확인할 수 있었던 순간, 어쩌면 교사들이 느끼는 편리함을 제가 고스란히 느꼈던 것 같아요. 리스트를 활용하여 데이터를 처리하는 방식도 아주 유용했답니다.

3. 학생 정보 페이지 가공 및 출력

학생들의 정보를 화면에 출력하는 것은 중요한 작업이죠. 이를 위해 사용한 코드는 아래와 같아요.

python
@app.route('/atten', methods=['GET', 'POST'])
def atten():
if 'logged_in' in session and session['logged_in']:
atten_users = [atten_user['name'] for atten_user in sslc_db_query(sql, 'txt')]
return render_template('index.html', atten_users=atten_users, gather_space=session['gather_space'])
else:
flash('로그인이 필요합니다.', 'error')
return redirect(url_for('index'))

이것을 통해 로그인된 학생들의 출결 정보를 포함한 페이지를 제공합니다. 실제로, 제가 이 기능을 활용해 보니 학생들이 자신의 출결 상태를 한 눈에 확인할 수 있어 매우 도움이 되었어요. 리디렉션 처리로 사용자 경험을 높일 수 있었던 점도 놓칠 수 없는 부분이에요.

출석 정보 시각화 및 저장

출석 정보를 시각화하고 저장하는 기능도 추가했습니다. 매일의 출석 정보를 엑셀 파일로 저장하는 것을 가능하게 했어요.

1. 일일 출석부 엑셀 파일 저장

학생들의 출석 정보를 주기적으로 저장하기 위한 코드는 아래와 같아요.

python
@app.route('/download_excel', methods=['GET', 'POST'])
def download_excel():
atten_th = request.args.get('atten_th', type=int)
atten_type = request.args.get('atten_type', type=int)
atten_name = request.args.get('atten_name')
atten_s_date = request.args.get('atten_s_date')
atten_e_date = request.args.get('atten_e_date')
excel_file = get_atten_file(atten_th, atten_type, atten_name, atten_s_date, atten_e_date)
return send_file(excel_file, as_attachment=True, download_name='출석부.xlsx')

이렇게 함으로써 학생들의 출석 및 접속 정보를 문서화하는데 큰 도움을 주었어요. 실제로 출석 정보를 체계적으로 정리하는 데 있어 이 기능은 매우 유용했어요. 더 나아가 이 정보를 직원들과 공유할 수 있어 편리했답니다.

2. 기간별 출석부 저장

학생들의 출석 정보를 기간별로 정리하는 기능도 구현했습니다. 이를 통해 학기나 특정 이벤트에 따라 학생들의 출결 상태를 쉽게 확인할 수 있어요.

자주 묻는 질문 (FAQ)

서버 구축에 필요한 환경은 무엇인가요?

Flask를 사용하면 Python만 있으면 됩니다. 간단히 Flask 패키지를 설치하고 서버를 설정할 수 있어요.

노드.js와 어떻게 연동하나요?

노드.js는 데이터 처리의 효율성을 높여주며, Flask와 REST API 방식으로 연동할 수 있습니다.

데이터 보안은 어떻게 관리하나요?

세션 기반으로 관리하여, 로그인한 사용자만 데이터에 접근할 수 있도록 설정했습니다.

학생의 출석 정보를 어떻게 시각화하나요?

출석 정보를 시각적으로 보기 쉽게 HTML 페이지에 렌더링하였고, 그래프 등의 시각화 툴을 추가로 활용할 수 있습니다.


이처럼, Flask를 활용한 자동화 서버 구축은 효율적이고 관리하기 쉽게 만들어줍니다. 필요한 기능을 추가하며 경험을 쌓아가는 과정은 꽤 흥미로웠어요.

키워드: Python, Flask, 게더타운, 출석체크, 자동화, 웹개발, 데이터베이스, 학생정보, 서버구축, 엑셀, 출석부