routes.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from flask import Blueprint, request, jsonify,render_template_string
  2. from models import db, Activity
  3. from campus_activity_system.utils.nlp_utils import classify_activity_type
  4. from flask import Blueprint, request, jsonify
  5. from models import db, User
  6. from campus_activity_system.utils.ocr_utils import extract_text_from_image
  7. from campus_activity_system.utils.nlp_utils import extract_information
  8. import os
  9. activity_bp = Blueprint('activity', __name__)
  10. user_bp = Blueprint('user', __name__)
  11. @activity_bp.route('/activities', methods=['POST'])
  12. def create_activity():
  13. data = request.json
  14. title = data.get('title')
  15. description = data.get('description')
  16. date = data.get('date')
  17. location = data.get('location')
  18. # 使用NLP工具进行活动类型分类
  19. activity_type = classify_activity_type(description)
  20. new_activity = Activity(title=title, description=description, type=activity_type, date=date, location=location)
  21. db.session.add(new_activity)
  22. db.session.commit()
  23. return jsonify({'message': 'Activity created successfully', 'type': activity_type}), 201
  24. @activity_bp.route('/activities', methods=['GET'])
  25. def get_activities():
  26. activities = Activity.query.all()
  27. result = []
  28. for activity in activities:
  29. result.append({
  30. 'id': activity.id,
  31. 'title': activity.title,
  32. 'description': activity.description,
  33. 'type': activity.type,
  34. 'date': activity.date.strftime('%Y-%m-%d %H:%M:%S'),
  35. 'location': activity.location
  36. })
  37. return jsonify(result), 200
  38. @user_bp.route('/register', methods = ['GET'])
  39. def index():
  40. return render_template_string(open('static/register.html').read())
  41. @user_bp.route('/register', methods=['POST'])
  42. def register_user():
  43. data = request.form
  44. image_file = request.files.get('id_card_image')
  45. if not image_file:
  46. return jsonify({'error': '请上传身份证图片'}), 400
  47. # 保存上传的图片到临时目录
  48. image_path = os.path.join('/tmp', image_file.filename)
  49. image_file.save(image_path)
  50. try:
  51. # 提取文本
  52. extracted_text = extract_text_from_image(image_path)
  53. # 抽取姓名和身份证号
  54. user_info = extract_information(extracted_text)
  55. # 创建新用户
  56. new_user = User(
  57. username=data.get('username'),
  58. email=data.get('email'),
  59. name=user_info.get('name'),
  60. id_number=user_info.get('id_number')
  61. )
  62. db.session.add(new_user)
  63. db.session.commit()
  64. return jsonify({'message': '注册成功', 'name': user_info.get('name'), 'id_number': user_info.get('id_number')}), 201
  65. except Exception as e:
  66. return jsonify({'error': str(e)}), 500
  67. finally:
  68. # 清理临时文件
  69. if os.path.exists(image_path):
  70. os.remove(image_path)