pulse-be / main.py
khawir's picture
initial commit
8ed8485
raw
history blame
3.39 kB
from datetime import datetime, timedelta
from typing import Annotated
from fastapi import Depends, FastAPI, HTTPException, status
from fastapi.security import OAuth2PasswordRequestForm
from sqlmodel import Session, select
from config import settings
from models import Token, Site, Guest, Visit, User, UserPublicMe, UserCreate
from routers import users, sites, visits, guests, profile
from core import utils, crud
app = FastAPI()
app.include_router(profile.router)
app.include_router(users.router)
app.include_router(sites.router)
app.include_router(visits.router)
app.include_router(guests.router)
@app.on_event("startup")
def on_startup():
utils.create_db_and_tables()
crud.create_su()
@app.post("/login")
def login_for_access_token(
form_data: Annotated[OAuth2PasswordRequestForm, Depends()],
) -> Token:
user = crud.authenticate_user(form_data.username, form_data.password)
if not user:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)
access_token_expires = timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES)
access_token = utils.create_access_token(
data={"sub": user.username}, expires_delta=access_token_expires
)
return Token(access_token=access_token, token_type="bearer")
@app.post("/register", response_model=UserPublicMe)
def register_user(*, session: Session = Depends(utils.get_session), user: UserCreate):
return crud.add_user(session, user)
@app.get("/seed")
def seed_db(*,
session: Session = Depends(utils.get_session),
user: Annotated[User, Depends(crud.get_current_super_user)],
):
u1 = User(username="cs_admin", password=utils.get_password_hash("csa"))
u2 = User(username="is_admin", password=utils.get_password_hash("isa"))
u3 = User(username="cs_is_admin", password=utils.get_password_hash("csisa"))
u4 = User(username="ee_admin", password=utils.get_password_hash("eea"))
s1 = Site(name="CS Dept", location="MCS", in_camera="2a")
s2 = Site(name="IS Dept", location="NRB", in_camera="3a")
s3 = Site(name="EE Dept", location="MCS", in_camera="1a")
u1.sites.append(s1)
u2.sites.append(s2)
u3.sites.extend([s1, s2])
u4.sites.append(s3)
session.add(u1)
session.add(u2)
session.add(u3)
session.add(u4)
session.add(s1)
session.add(s2)
session.add(s3)
session.add(Guest(name="Arsalan", vector="9874676132", is_female=False,site_id=1))
session.add(Guest(name="Zubeela", vector="8564245686", is_female=True, site_id=1))
session.add(Guest(name="Zarnaab", vector="5458615856", is_female=False,site_id=2))
session.add(Guest(name="Sarmaad", vector="1265645865", is_female=False,site_id=3))
session.add(Visit(is_group=False, is_female=False, is_new=False, site_id=1, guest_id=1))
session.add(Visit(is_group=False, is_female=True, is_new=True, site_id=1, guest_id=2))
session.add(Visit(is_group=True, is_female=False, is_new=False, site_id=2, guest_id=1))
session.add(Visit(is_group=True, is_female=False, is_new=False, site_id=2, guest_id=3))
session.add(Visit(is_group=False, is_female=False, is_new=False, site_id=2, guest_id=4))
session.add(Visit(is_group=False, is_female=False, is_new=False, site_id=3, guest_id=4))
session.commit()