1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- from fastapi import APIRouter, Request, Depends, HTTPException, Query, Header
- from sqlalchemy.exc import IntegrityError
- from fastapi.responses import HTMLResponse, FileResponse, StreamingResponse, RedirectResponse
- from fastapi.responses import JSONResponse
- from starlette.requests import HTTPConnection
- from database import get_db
- from sqlalchemy import text, exists, and_, or_, not_
- from sqlalchemy.orm import Session
- from sqlalchemy.sql import func
- from models import *
- import json
- import random
- from sqlalchemy import create_engine, select
- from typing import Optional
- from utils.StripTagsHTMLParser import *
- from common.db import db_event_management, db_user, db_area, db_emergency_plan
- from common.security import valid_access_token
- import traceback
- from utils import *
- from datetime import datetime, timedelta
- import qrcode
- from PIL import Image
- from io import BytesIO
- from config import settings
- from common import YzyApi
- from extensions import logger
- router = APIRouter()
- @router.get('/event/checkin', response_class=StreamingResponse)
- async def get_qrcode(
- request: Request,
- event_id: str,
- db: Session = Depends(get_db)
- ):
- url = str(request.url)
- print('url:', url)
- url = settings.YZY_WEB_ROOT + f"/api/event_management/checkin/qrcode2?event_id={event_id}&r="+rnd()
- # url = url.replace("http://" + request.url.hostname, settings.YZY_WEB_ROOT)
- logger.info('替换到互联网ip: {}', url)
- qr = qrcode.QRCode(
- version=1,
- error_correction=qrcode.constants.ERROR_CORRECT_M,
- box_size=10,
- border=0,
- )
- qr.add_data(url)
- qr.make(fit=True)
- image = qr.make_image()
- buf = BytesIO()
- image.save(buf, 'png')
- img_data = buf.getvalue()
- return StreamingResponse(BytesIO(img_data), media_type="image/png")
|