Skip to content

Commit 703f197

Browse files
authored
Merge pull request #5 from smallintro/python-micro-branch
UserMgr calls AssetMgr API to get assetid and assign to an user
2 parents e997bcd + 671ceaf commit 703f197

File tree

11 files changed

+124
-47
lines changed

11 files changed

+124
-47
lines changed

asset_mgr/app/src/app_assetmgr.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from fastapi import FastAPI, Query
22
from logzero import logger as log
33
from app_services import AssetInfoService
4-
from app_models import AssetInfo, AssetInfoReq
4+
from app_models import AssetMgrRequest, AssetMgrResponse
55

66
app_v1 = FastAPI()
77

@@ -16,22 +16,22 @@ def get_asset_info(assetid: str = "-1"):
1616

1717

1818
@app_v1.post("/v1/assetmgr")
19-
def add_asset_info(asset_info: AssetInfoReq):
20-
log.info(f"add_asset_info {AssetInfoReq}")
19+
def add_asset_info(asset_info: AssetMgrRequest):
20+
log.info(f"add_asset_info {asset_info}")
2121
result = asset_service.add_asset_info(asset_info)
2222
return {"asset_info": result}
2323

2424

25-
@app_v1.put("/v1/assetmgr/assign")
25+
@app_v1.put("/v1/assetmgr/assignuser")
2626
def assign_asset_to_user(asset_category: str = Query(...), userid: str = Query(...)):
2727
log.info(f"assign_asset_to_user {asset_category} {userid}")
2828
result = asset_service.assign_asset_to_user(asset_category, userid)
29-
return {"message": result}
29+
return AssetMgrResponse(status="OK", data={"asset_id": result})
3030

3131

3232
@app_v1.put("/v1/assetmgr/{assetid}")
33-
def update_asset_info(assetid: str, asset_info: AssetInfoReq):
34-
log.info(f"update_asset_info {AssetInfoReq}")
33+
def update_asset_info(assetid: str, asset_info: AssetMgrRequest):
34+
log.info(f"update_asset_info {asset_info}")
3535
result = asset_service.update_asset_info(assetid, asset_info)
3636
return {"asset_info": result}
3737

@@ -40,6 +40,4 @@ def update_asset_info(assetid: str, asset_info: AssetInfoReq):
4040
def del_asset_info(assetid: str):
4141
log.info(f"del_asset_info {assetid}")
4242
result = asset_service.del_asset_info(assetid)
43-
return {"message": result}
44-
45-
43+
return {"asset_info": result}

asset_mgr/app/src/app_config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
db_connect_str = "postgres://postgres:ABC_abc1@localhost:5432/postgres"
2+
default_user_id = "-1"
3+
default_asset_id = "-1"

asset_mgr/app/src/app_models.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,13 @@ def __repr__(self):
3232
return "AssetCategory(%s, %d)" % (self.category_name, self.asset_count,)
3333

3434

35-
class AssetInfoReq(BaseModel):
35+
class AssetMgrRequest(BaseModel):
3636
asset_id: str
3737
asset_name: str
3838
asset_owner: str = None
3939
asset_category: str
4040

41+
42+
class AssetMgrResponse(BaseModel):
43+
status: str
44+
data: dict

asset_mgr/app/src/app_repo.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
class AssetInfoDao(object):
99
@staticmethod
1010
def query_asset_info(asset_id):
11+
log.debug(f"query_asset_info {asset_id}")
1112
session = db_obj.get_db_session()
1213
try:
1314
query_result = session.query(AssetInfo)
@@ -28,6 +29,7 @@ def query_asset_info(asset_id):
2829

2930
@staticmethod
3031
def add_asset_info(asset_info):
32+
log.debug(f"add_asset_info {asset_info}")
3133
session = db_obj.get_db_session()
3234
try:
3335
count_result = (
@@ -43,6 +45,7 @@ def add_asset_info(asset_info):
4345
asset_id=asset_info.asset_id,
4446
asset_name=asset_info.asset_name,
4547
asset_category=asset_info.asset_category,
48+
asset_owner=asset_info.asset_owner,
4649
)
4750
log.debug(f"add_asset_info {new_asset}")
4851
session.add(new_asset)
@@ -59,6 +62,7 @@ def add_asset_info(asset_info):
5962

6063
@staticmethod
6164
def update_asset_info(asset_id, asset_info):
65+
log.debug(f"update_asset_info {asset_info}")
6266
session = db_obj.get_db_session()
6367
try:
6468
query_result = session.query(AssetInfo).filter(
@@ -91,6 +95,7 @@ def update_asset_info(asset_id, asset_info):
9195

9296
@staticmethod
9397
def delete_asset_info(asset_id):
98+
log.debug(f"delete_asset_info {asset_id}")
9499
session = db_obj.get_db_session()
95100
try:
96101
query_result = session.query(AssetInfo).filter(
@@ -146,11 +151,15 @@ def update_asset_category(category, count):
146151
class AssetUserDao:
147152
@staticmethod
148153
def get_available_asset_by_category(asset_category):
154+
log.debug(f"get_available_asset_by_category {asset_category}")
149155
session = db_obj.get_db_session()
150156
try:
151157
asset_id = (
152158
session.query(AssetInfo.asset_id)
153-
.filter(AssetInfo.asset_category == asset_category, AssetInfo.asset_owner is None)
159+
.filter(
160+
AssetInfo.asset_category == asset_category,
161+
AssetInfo.asset_owner.is_(None),
162+
)
154163
.first()
155164
)
156165
except Exception as e:
@@ -163,6 +172,7 @@ def get_available_asset_by_category(asset_category):
163172

164173
@staticmethod
165174
def assign_asset_to_user(asset_id, user_id):
175+
log.debug(f"assign_asset_to_user {asset_id} {user_id}")
166176
session = db_obj.get_db_session()
167177
try:
168178
result = (

asset_mgr/app/src/app_services.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
from logzero import logger
1+
from logzero import logger as log
22
from app_repo import AssetInfoDao, AssetUserDao
3-
from app_models import AssetInfo, AssetInfoReq
4-
3+
from app_config import *
54

65
asset_dao = AssetInfoDao()
76
asset_user_dao = AssetUserDao()
@@ -10,35 +9,38 @@
109
class AssetInfoService(object):
1110
@staticmethod
1211
def get_asset_info(asset_id):
13-
logger.debug(f"get_asset_info")
12+
log.debug(f"get_asset_info")
1413
result = asset_dao.query_asset_info(asset_id)
1514
return result
1615

1716
@staticmethod
1817
def add_asset_info(asset_info):
19-
logger.debug(f"add_asset_info")
18+
log.debug(f"add_asset_info")
2019
asset_dao.add_asset_info(asset_info)
2120
result = asset_dao.query_asset_info(asset_info.asset_id)
2221
return result
2322

2423
@staticmethod
2524
def update_asset_info(asset_id, asset_info):
26-
logger.debug(f"update_asset_info")
25+
log.debug(f"update_asset_info")
2726
result = asset_dao.update_asset_info(asset_id, asset_info)
2827
return result
2928

3029
@staticmethod
3130
def del_asset_info(asset_id):
32-
logger.debug(f"del_asset_info")
31+
log.debug(f"del_asset_info")
3332
result = asset_dao.delete_asset_info(asset_id)
3433
return result
3534

3635
@staticmethod
3736
def assign_asset_to_user(asset_category, user_id):
38-
logger.debug(f"assign_asset_to_user")
37+
log.debug(f"assign_asset_to_user")
38+
result = dict()
3939
asset_id = asset_user_dao.get_available_asset_by_category(asset_category)
4040
if asset_id is not None:
41-
asset_user_dao.assign_asset_to_user(asset_id, user_id)
42-
return asset_id
41+
log.debug(f"asset {asset_id} will be assigned to {user_id}")
42+
asset_user_dao.assign_asset_to_user(asset_id[0], user_id)
43+
return asset_id[0]
4344
else:
44-
return "No {} available, Please contact asset admin".format(asset_category)
45+
log.error(f"No asset for the given category {asset_category} is available, Please contact asset admin")
46+
return default_asset_id

user_mgr/app/src/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
# uvicorn app_usermgr:app_v1 --reload
1+
# uvicorn app_usermgr:app_v1 --port 8002 --reload

user_mgr/app/src/app_config.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
11
db_connect_str = "postgres://postgres:ABC_abc1@localhost:5432/postgres"
2+
assign_asset_api = (
3+
"http://127.0.0.1:8001/v1/assetmgr/assignuser?asset_category={}&userid={}"
4+
)
5+
default_user_id = "-1"
6+
default_asset_id = "-1"

user_mgr/app/src/app_repo.py

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
11
from logzero import logger as log
22
from app_database import DataBaseObj
33
from app_models import UserInfo
4+
from app_config import *
45

56
db_obj = DataBaseObj()
67

78

89
class UserInfoDao(object):
910
@staticmethod
1011
def query_user_info(user_id):
12+
log.debug(f"query_user_info {user_id}")
1113
session = db_obj.get_db_session()
1214
try:
1315
query_result = session.query(UserInfo)
14-
if user_id == "-1":
16+
if user_id == default_user_id:
1517
result = query_result.all()
1618
else:
1719
result = query_result.filter(UserInfo.user_id == user_id).all()
1820
session.commit()
1921
log.debug(result)
2022
except Exception as e:
2123
session.rollback
22-
log.exception(f"query_user_info operation failed {e}")
24+
log.exception(f"query_user_info failed {e}")
2325
finally:
2426
if session is not None:
2527
session.close()
@@ -28,6 +30,7 @@ def query_user_info(user_id):
2830

2931
@staticmethod
3032
def add_user_info(user_info):
33+
log.debug(f"add_user_info {user_info}")
3134
session = db_obj.get_db_session()
3235
try:
3336
query_count = (
@@ -51,7 +54,7 @@ def add_user_info(user_info):
5154
result = new_user
5255
except Exception as e:
5356
session.rollback
54-
log.exception(f"add_user_info operation failed {e}")
57+
log.exception(f"add_user_info failed {e}")
5558
finally:
5659
if session is not None:
5760
session.close()
@@ -60,6 +63,7 @@ def add_user_info(user_info):
6063

6164
@staticmethod
6265
def update_user_info(user_id, user_info):
66+
log.debug(f"update_user_info {user_info}")
6367
session = db_obj.get_db_session()
6468
try:
6569
query_result = session.query(UserInfo).filter(UserInfo.user_id == user_id)
@@ -78,7 +82,7 @@ def update_user_info(user_id, user_info):
7882
result = user_info
7983
except Exception as e:
8084
session.rollback
81-
log.exception(f"update_user_info operation failed {e}")
85+
log.exception(f"update_user_info failed {e}")
8286
finally:
8387
if session is not None:
8488
session.close()
@@ -87,6 +91,7 @@ def update_user_info(user_id, user_info):
8791

8892
@staticmethod
8993
def delete_user_info(user_id):
94+
log.debug(f"update_user_info {user_id}")
9095
session = db_obj.get_db_session()
9196
try:
9297
query_result = session.query(UserInfo).filter(UserInfo.user_id == user_id)
@@ -97,7 +102,30 @@ def delete_user_info(user_id):
97102
session.commit()
98103
except Exception as e:
99104
session.rollback
100-
log.exception(f"delete_user_info operation failed {e}")
105+
log.exception(f"delete_user_info failed {e}")
106+
finally:
107+
if session is not None:
108+
session.close()
109+
log.debug(f"session closed")
110+
return result
111+
112+
@staticmethod
113+
def update_user_asset_id(user_id, asset_id):
114+
log.debug(f"update_user_info {user_id} {asset_id}")
115+
session = db_obj.get_db_session()
116+
result = 0
117+
try:
118+
query_user_info = session.query(UserInfo).filter(
119+
UserInfo.user_id == user_id
120+
)
121+
old_assets = query_user_info.first().user_assets
122+
result = query_user_info.update(
123+
{UserInfo.user_assets: asset_id + ", " + old_assets}
124+
)
125+
session.commit()
126+
except Exception as e:
127+
session.rollback
128+
log.exception(f"update_user_asset_id failed {e}")
101129
finally:
102130
if session is not None:
103131
session.close()

user_mgr/app/src/app_services.py

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,49 @@
1-
from logzero import logger
1+
import json
2+
from logzero import logger as log
3+
import requests
4+
from app_config import *
25
from app_repo import UserInfoDao
36

47

5-
userdao = UserInfoDao()
8+
user_dao = UserInfoDao()
69

710

811
class UserInfoService(object):
912
@staticmethod
1013
def get_user_info(user_id):
11-
logger.debug(f"get_user_info")
12-
result = userdao.query_user_info(user_id)
14+
log.debug(f"get_user_info")
15+
result = user_dao.query_user_info(user_id)
1316
return result
1417

1518
@staticmethod
1619
def add_user_info(user_info):
17-
logger.debug(f"add_user_info")
18-
userdao.add_user_info(user_info)
19-
result = userdao.query_user_info(user_info.user_id)
20+
log.debug(f"add_user_info")
21+
user_dao.add_user_info(user_info)
22+
result = user_dao.query_user_info(user_info.user_id)
2023
return result
2124

2225
@staticmethod
2326
def update_user_info(user_id, user_info):
24-
logger.debug(f"update_user_info")
25-
result = userdao.update_user_info(user_id, user_info)
27+
log.debug(f"update_user_info")
28+
result = user_dao.update_user_info(user_id, user_info)
2629
return result
2730

2831
@staticmethod
2932
def del_user_info(user_id):
30-
logger.debug(f"del_user_info")
31-
result = userdao.delete_user_info(user_id)
33+
log.debug(f"del_user_info")
34+
result = user_dao.delete_user_info(user_id)
3235
return result
36+
37+
@staticmethod
38+
def assign_asset_to_user(asset_category, user_id):
39+
log.debug(f"assign_asset_to_user")
40+
log.debug(f"calling" + assign_asset_api.format(asset_category, user_id))
41+
response = requests.put(assign_asset_api.format(asset_category, user_id))
42+
print(response)
43+
log.debug(f"assign_asset_api {response.status_code} {response.ok} {response.content} {response.text}")
44+
if response.ok:
45+
asset_id = json.loads(response.content)["data"]["asset_id"]
46+
if asset_id != default_asset_id:
47+
log.debug(f"asset {asset_id} will be assigned to {user_id}")
48+
user_dao.update_user_asset_id(user_id, asset_id)
49+
return asset_id

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy