|
@@ -1,10 +1,10 @@
|
|
|
from datetime import timedelta
|
|
|
-from typing import Any
|
|
|
+from typing import Any, Optional
|
|
|
|
|
|
from fastapi import APIRouter, Body, Depends, HTTPException
|
|
|
from fastapi.security import OAuth2PasswordRequestForm
|
|
|
from sqlalchemy.orm import Session
|
|
|
-
|
|
|
+from datetime import datetime
|
|
|
from app import crud, models, schemas
|
|
|
from app.api import deps
|
|
|
from app.core import security
|
|
@@ -22,9 +22,9 @@ from google.auth.transport import requests
|
|
|
router = APIRouter()
|
|
|
|
|
|
|
|
|
-@router.post("/login/access-token", response_model=schemas.Token)
|
|
|
+@router.post("/login/access-token")#, response_model=schemas.Token)
|
|
|
def login_access_token(
|
|
|
- db: Session = Depends(deps.get_db), form_data: OAuth2PasswordRequestForm = Depends()
|
|
|
+ db: Session = Depends(deps.get_db), form_data: OAuth2PasswordRequestForm = Depends(), add_time_code: Optional[str] = None
|
|
|
) -> Any:
|
|
|
"""
|
|
|
OAuth2 compatible token login, get an access token for future requests
|
|
@@ -37,16 +37,30 @@ def login_access_token(
|
|
|
elif not crud.user.is_active(user):
|
|
|
raise HTTPException(status_code=400, detail="Inactive user")
|
|
|
access_token_expires = timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES)
|
|
|
- return {
|
|
|
+ return_msg = {
|
|
|
"access_token": security.create_access_token(
|
|
|
user.id, expires_delta=access_token_expires
|
|
|
),
|
|
|
"token_type": "bearer",
|
|
|
}
|
|
|
+ if add_time_code:
|
|
|
+ available_ser_no = crud.serial_number.available(db, ser_no=add_time_code)
|
|
|
+ print(available_ser_no)
|
|
|
+ if available_ser_no:
|
|
|
+ user_in = schemas.UserUpdate(available_time=user.available_time+available_ser_no.time)
|
|
|
+ crud.user.update(db, db_obj=user, obj_in=user_in)
|
|
|
+
|
|
|
+ ser_no_in = schemas.SerialNumberUpdate(code=available_ser_no.code, is_used=True, used_datetime=str(datetime.now()), owner_id=user.id)
|
|
|
+ crud.serial_number.update(db, db_obj=available_ser_no, obj_in=ser_no_in)
|
|
|
+ print(available_ser_no.time, type(available_ser_no.time))
|
|
|
+ return_msg['time_added'] = available_ser_no.time
|
|
|
+ else:
|
|
|
+ return_msg['time_added'] = -1
|
|
|
+ return return_msg
|
|
|
|
|
|
-@router.post("/login/google/access-token", response_model=schemas.Token)
|
|
|
+@router.post("/login/google/access-token")#, response_model=schemas.Token)
|
|
|
def login_access_token(
|
|
|
- db: Session = Depends(deps.get_db), form_data: OAuth2PasswordRequestForm = Depends()
|
|
|
+ db: Session = Depends(deps.get_db), form_data: OAuth2PasswordRequestForm = Depends(), add_time_code: Optional[str] = None
|
|
|
) -> Any:
|
|
|
"""
|
|
|
OAuth2 compatible token login, get an access token for future requests
|
|
@@ -60,12 +74,26 @@ def login_access_token(
|
|
|
elif not crud.user.is_active(user):
|
|
|
raise HTTPException(status_code=400, detail="Inactive user")
|
|
|
access_token_expires = timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES)
|
|
|
- return {
|
|
|
+ return_msg = {
|
|
|
"access_token": security.create_access_token(
|
|
|
user.id, expires_delta=access_token_expires
|
|
|
),
|
|
|
"token_type": "bearer",
|
|
|
}
|
|
|
+ if add_time_code:
|
|
|
+ available_ser_no = crud.serial_number.available(db, ser_no=add_time_code)
|
|
|
+ print(available_ser_no)
|
|
|
+ if available_ser_no:
|
|
|
+ user_in = schemas.UserUpdate(available_time=user.available_time+available_ser_no.time)
|
|
|
+ crud.user.update(db, db_obj=user, obj_in=user_in)
|
|
|
+
|
|
|
+ ser_no_in = schemas.SerialNumberUpdate(code=available_ser_no.code, is_used=True, used_datetime=str(datetime.now()), owner_id=user.id)
|
|
|
+ crud.serial_number.update(db, db_obj=available_ser_no, obj_in=ser_no_in)
|
|
|
+ print(available_ser_no.time, type(available_ser_no.time))
|
|
|
+ return_msg['time_added'] = available_ser_no.time
|
|
|
+ else:
|
|
|
+ return_msg['time_added'] = -1
|
|
|
+ return return_msg
|
|
|
|
|
|
|
|
|
|