added live urls for in and out
Browse files- .gitignore +2 -2
- core/utils.py +33 -2
- main.py +10 -2
- models.py +2 -0
- routers/profile.py +9 -1
- test.db +0 -0
.gitignore
CHANGED
|
@@ -2,7 +2,7 @@ __pycache__
|
|
| 2 |
log.txt
|
| 3 |
env3.*
|
| 4 |
env
|
|
|
|
| 5 |
docs_build
|
| 6 |
site_build
|
| 7 |
-
venv
|
| 8 |
-
test.db
|
|
|
|
| 2 |
log.txt
|
| 3 |
env3.*
|
| 4 |
env
|
| 5 |
+
.env
|
| 6 |
docs_build
|
| 7 |
site_build
|
| 8 |
+
venv
|
|
|
core/utils.py
CHANGED
|
@@ -3,7 +3,7 @@ from sqlmodel import Session, SQLModel, create_engine
|
|
| 3 |
from passlib.context import CryptContext
|
| 4 |
from jose import jwt
|
| 5 |
from config import settings
|
| 6 |
-
|
| 7 |
|
| 8 |
db_url = settings.DB_SQLITE
|
| 9 |
|
|
@@ -44,5 +44,36 @@ def create_access_token(data: dict, expires_delta: timedelta | None = None):
|
|
| 44 |
encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=settings.ALGORITHM)
|
| 45 |
return encoded_jwt
|
| 46 |
|
|
|
|
|
|
|
| 47 |
def diff_time_stamp(mins: int):
|
| 48 |
-
return datetime.now()+timedelta(minutes=mins)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
from passlib.context import CryptContext
|
| 4 |
from jose import jwt
|
| 5 |
from config import settings
|
| 6 |
+
import requests
|
| 7 |
|
| 8 |
db_url = settings.DB_SQLITE
|
| 9 |
|
|
|
|
| 44 |
encoded_jwt = jwt.encode(to_encode, settings.SECRET_KEY, algorithm=settings.ALGORITHM)
|
| 45 |
return encoded_jwt
|
| 46 |
|
| 47 |
+
|
| 48 |
+
|
| 49 |
def diff_time_stamp(mins: int):
|
| 50 |
+
return datetime.now()+timedelta(minutes=mins)
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
def get_key():
|
| 55 |
+
response = requests.post('https://open.ezvizlife.com/api/lapp/token/get',
|
| 56 |
+
headers={"Content-Type": "application/x-www-form-urlencoded"},
|
| 57 |
+
data={"appKey": settings.EZV_KEY,
|
| 58 |
+
"appSecret": settings.EZV_SECRET}
|
| 59 |
+
)
|
| 60 |
+
if response.status_code == 200:
|
| 61 |
+
return response.json()["data"]["accessToken"]
|
| 62 |
+
else:
|
| 63 |
+
return ""
|
| 64 |
+
|
| 65 |
+
def get_feed_url(accessToken, deviceSerial, code=654321, expireTime=90000, channelNo=1, protocol=2):
|
| 66 |
+
response = requests.post('https://isgpopen.ezvizlife.com/api/lapp/live/address/get',
|
| 67 |
+
headers={"Content-Type": "application/x-www-form-urlencoded"},
|
| 68 |
+
data={"accessToken": accessToken,
|
| 69 |
+
"deviceSerial": deviceSerial,
|
| 70 |
+
"code": code,
|
| 71 |
+
"expireTime": expireTime,
|
| 72 |
+
"channelNo": channelNo,
|
| 73 |
+
"protocol": protocol,
|
| 74 |
+
}
|
| 75 |
+
)
|
| 76 |
+
if response.status_code == 200:
|
| 77 |
+
return response.json()["data"]["url"]
|
| 78 |
+
else:
|
| 79 |
+
return ""
|
main.py
CHANGED
|
@@ -75,7 +75,7 @@ def seed_db(*,
|
|
| 75 |
u3 = User(username="cs_is_admin", password=utils.get_password_hash("csisa"), disabled=False)
|
| 76 |
u4 = User(username="ee_admin", password=utils.get_password_hash("eea"), disabled=False)
|
| 77 |
s1 = Site(name="CS Dept", location="MCS", in_camera="2a")
|
| 78 |
-
s2 = Site(name="IS Dept", location="NRB", in_camera="
|
| 79 |
s3 = Site(name="EE Dept", location="MCS", in_camera="1a")
|
| 80 |
u1.sites.append(s1)
|
| 81 |
u2.sites.append(s2)
|
|
@@ -132,4 +132,12 @@ def seed_db(*,
|
|
| 132 |
session.add(Visit(time_in=utils.diff_time_stamp(65).time(), time_out=utils.diff_time_stamp(10).time(), is_group=True, is_female=False, is_new=True, site_id=2))
|
| 133 |
session.add(Visit(time_in=utils.diff_time_stamp(68).time(), time_out=utils.diff_time_stamp(9).time(), is_group=False, is_female=False, is_new=True, site_id=2))
|
| 134 |
session.add(Visit(time_in=utils.diff_time_stamp(70).time(), time_out=utils.diff_time_stamp(7).time(), is_group=False, is_female=True, is_new=True, site_id=2))
|
| 135 |
-
session.commit()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
u3 = User(username="cs_is_admin", password=utils.get_password_hash("csisa"), disabled=False)
|
| 76 |
u4 = User(username="ee_admin", password=utils.get_password_hash("eea"), disabled=False)
|
| 77 |
s1 = Site(name="CS Dept", location="MCS", in_camera="2a")
|
| 78 |
+
s2 = Site(name="IS Dept", location="NRB", in_camera="AA4823505", out_camera="AB9438217")
|
| 79 |
s3 = Site(name="EE Dept", location="MCS", in_camera="1a")
|
| 80 |
u1.sites.append(s1)
|
| 81 |
u2.sites.append(s2)
|
|
|
|
| 132 |
session.add(Visit(time_in=utils.diff_time_stamp(65).time(), time_out=utils.diff_time_stamp(10).time(), is_group=True, is_female=False, is_new=True, site_id=2))
|
| 133 |
session.add(Visit(time_in=utils.diff_time_stamp(68).time(), time_out=utils.diff_time_stamp(9).time(), is_group=False, is_female=False, is_new=True, site_id=2))
|
| 134 |
session.add(Visit(time_in=utils.diff_time_stamp(70).time(), time_out=utils.diff_time_stamp(7).time(), is_group=False, is_female=True, is_new=True, site_id=2))
|
| 135 |
+
session.commit()
|
| 136 |
+
|
| 137 |
+
|
| 138 |
+
|
| 139 |
+
# @app.get("/feed_url/")
|
| 140 |
+
# def get_feed(*,
|
| 141 |
+
# session: Session = Depends(utils.get_session),
|
| 142 |
+
# user: Annotated[User, Depends(crud.get_current_super_user)],
|
| 143 |
+
# ):
|
models.py
CHANGED
|
@@ -85,6 +85,8 @@ class SiteBase(SQLModel):
|
|
| 85 |
contact: str | None = None
|
| 86 |
in_camera: str | None = Field(default=None, unique=True)
|
| 87 |
out_camera: str | None = Field(default=None, unique=True)
|
|
|
|
|
|
|
| 88 |
|
| 89 |
class Site(SiteBase, table=True):
|
| 90 |
id: int | None = Field(default=None, primary_key=True)
|
|
|
|
| 85 |
contact: str | None = None
|
| 86 |
in_camera: str | None = Field(default=None, unique=True)
|
| 87 |
out_camera: str | None = Field(default=None, unique=True)
|
| 88 |
+
in_url: str | None
|
| 89 |
+
out_url: str | None
|
| 90 |
|
| 91 |
class Site(SiteBase, table=True):
|
| 92 |
id: int | None = Field(default=None, primary_key=True)
|
routers/profile.py
CHANGED
|
@@ -75,7 +75,15 @@ def read_site(*,
|
|
| 75 |
current_user: Annotated[User, Depends(crud.get_current_active_user)],
|
| 76 |
site_id: int
|
| 77 |
):
|
| 78 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
|
| 80 |
|
| 81 |
|
|
|
|
| 75 |
current_user: Annotated[User, Depends(crud.get_current_active_user)],
|
| 76 |
site_id: int
|
| 77 |
):
|
| 78 |
+
current_site = crud.get_current_site(session, current_user, site_id)
|
| 79 |
+
access_token = utils.get_key()
|
| 80 |
+
in_url= utils.get_feed_url(access_token, current_site.in_camera)
|
| 81 |
+
out_url= utils.get_feed_url(access_token, current_site.out_camera)
|
| 82 |
+
current_site.in_url = in_url
|
| 83 |
+
current_site.out_url = out_url
|
| 84 |
+
session.add(current_site)
|
| 85 |
+
session.commit()
|
| 86 |
+
return current_site
|
| 87 |
|
| 88 |
|
| 89 |
|
test.db
CHANGED
|
Binary files a/test.db and b/test.db differ
|
|
|