From 198e442292f46daf4e14b13cca833abc63238ad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=20=E6=9F=8F?= Date: Sun, 8 Dec 2024 17:05:04 +0900 Subject: [PATCH] bugfix set user default domain --- backend/app/api/api_v1/routers/platform.py | 2 +- backend/app/db/cruddb/dbdomain.py | 21 +++++--- backend/app/db/schemas.py | 5 ++ backend/app/tests/test_domain.py | 62 +++++++++++++++------- 4 files changed, 63 insertions(+), 27 deletions(-) diff --git a/backend/app/api/api_v1/routers/platform.py b/backend/app/api/api_v1/routers/platform.py index 9c3a76e..5f7a61f 100644 --- a/backend/app/api/api_v1/routers/platform.py +++ b/backend/app/api/api_v1/routers/platform.py @@ -434,7 +434,7 @@ async def get_defaultuserdomain( response_model=ApiReturnModel[DomainOut|None], response_model_exclude_none=True, ) -async def update_activeuserdomain( +async def set_defualtuserdomain( request: Request, domainid:int, user=Depends(get_current_active_user), diff --git a/backend/app/db/cruddb/dbdomain.py b/backend/app/db/cruddb/dbdomain.py index b6f017c..7638779 100644 --- a/backend/app/db/cruddb/dbdomain.py +++ b/backend/app/db/cruddb/dbdomain.py @@ -40,7 +40,7 @@ class dbdomain(crudbase): def get_domains_by_owner(self,db: Session,ownerid:int)-> ApiReturnPage[models.Base]: return paginate(db,super().get_by_conditions({"ownerid":ownerid})) - + def create_domain(self,db: Session, domain: schemas.DomainIn,userid:int): #db_domain = super().get_by_conditions(db,{"url":domain.url,"kintoneuser":domain.kintoneuser,"onwerid":userid}).first() #if not db_domain: @@ -117,20 +117,29 @@ class dbdomain(crudbase): return None def set_default_domain(self,db: Session, userid: int,domainid: int): - db_domain =super().get_by_conditions(db,{"id":domainid,"is_active":True}).first() + db_domain =db.execute(super().get_by_conditions({"id":domainid,"is_active":True})).scalars().first() if db_domain: db_default_domain = dbuserdomain.get_user_default_domain(db,userid) db_userdomain =dbuserdomain.get_userdomain(db,userid,domainid) if db_default_domain: - db_default_domain.is_default = False - db_default_domain.updateuserid = userid - db.add(db_default_domain) + if db_default_domain.domainid != domainid: + db_default_domain.is_default = False + db_default_domain.updateuserid = userid + db.add(db_default_domain) + else: + return db_domain if db_userdomain: db_userdomain.is_default = True db_userdomain.updateuserid = userid db.add(db_userdomain) + else: + db_userdomain = dbuserdomain.create(db,schemas.UserDomainIn(domainid=domainid,userid=userid,is_default = True)) + db.add(db_userdomain) db.commit() - return db_domain + return db_domain + else: + return None + def get_shareddomain_users(self,db: Session,ownerid:int,domainid: int) -> ApiReturnPage[models.Base]: users = db.query(models.User).join(models.UserDomain,models.UserDomain.userid == models.User.id).filter(models.UserDomain.domainid ==domainid) diff --git a/backend/app/db/schemas.py b/backend/app/db/schemas.py index f592d8f..684240f 100644 --- a/backend/app/db/schemas.py +++ b/backend/app/db/schemas.py @@ -192,6 +192,11 @@ class UserDomain(BaseModel): domain:DomainOut user:UserOut +class UserDomainIn(BaseModel): + is_default: bool + domainid:int + userid:int + class Domain(Base): id: int tenantid: str diff --git a/backend/app/tests/test_domain.py b/backend/app/tests/test_domain.py index 17b317e..d41984e 100644 --- a/backend/app/tests/test_domain.py +++ b/backend/app/tests/test_domain.py @@ -27,25 +27,6 @@ def test_create_domain(test_client, login_user,login_user_id): assert data["data"]["is_active"] == create_domain["is_active"] assert data["data"]["owner"]["id"] == login_user_id -def test_edit_domain(test_client, test_domain, login_user): - update_domain ={ - "id": test_domain.id, - "tenantid": "1", - "name": "テスト環境abc", - "url": test_domain.url, - "kintoneuser": test_domain.kintoneuser, - "is_active": True - } - response = test_client.put("/api/domain", json=update_domain,headers={"Authorization": "Bearer " + login_user}) - assert response.status_code == 200 - data = response.json() - assert data["data"]["name"] == update_domain["name"] - assert data["data"]["name"] == update_domain["name"] - assert data["data"]["url"] == update_domain["url"] - assert data["data"]["kintoneuser"] == update_domain["kintoneuser"] - assert data["data"]["is_active"] == update_domain["is_active"] - - def test_delete_domain(test_client, login_user): delete_domain ={ "id": 0, @@ -67,4 +48,45 @@ def test_delete_domain(test_client, login_user): assert response.json()["data"]["name"] == delete_domain["name"] response = test_client.get("/api/domain/"+ str(id), headers={"Authorization": "Bearer " + login_user}) assert response.status_code == 200 - assert "data" not in response.json() \ No newline at end of file + assert "data" not in response.json() + + +def test_set_defaultuserdomain(test_client, test_domain,login_user): + + response = test_client.put("/api/defaultdomain/"+str(test_domain.id), headers={"Authorization": "Bearer " + login_user}) + assert response.status_code == 200 + data = response.json() + assert "data" in data + assert data["data"] is not None + assert data["data"]["name"] == test_domain.name + assert data["data"]["url"] == test_domain.url + assert data["data"]["kintoneuser"] == test_domain.kintoneuser + assert data["data"]["is_active"] == test_domain.is_active + + +def test_get_defaultuserdomain(test_client, test_domain,login_user): + + response = test_client.get("/api/defaultdomain", headers={"Authorization": "Bearer " + login_user}) + assert response.status_code == 200 + data = response.json() + assert data["data"]["name"] == test_domain.name + assert data["data"]["url"] == test_domain.url + assert data["data"]["kintoneuser"] == test_domain.kintoneuser + assert data["data"]["is_active"] == test_domain.is_active + +def test_edit_domain(test_client, test_domain, login_user): + update_domain ={ + "id": test_domain.id, + "tenantid": "1", + "name": "テスト環境abc", + "url": test_domain.url, + "kintoneuser": test_domain.kintoneuser, + "is_active": True + } + response = test_client.put("/api/domain", json=update_domain,headers={"Authorization": "Bearer " + login_user}) + assert response.status_code == 200 + data = response.json() + assert data["data"]["name"] == update_domain["name"] + assert data["data"]["url"] == update_domain["url"] + assert data["data"]["kintoneuser"] == update_domain["kintoneuser"] + assert data["data"]["is_active"] == update_domain["is_active"] \ No newline at end of file