22
33import uuid
44
5- # Removed unused Any import
65from fastapi import APIRouter , Depends , HTTPException
76from sqlmodel import col , delete , func , select
87
9- from app import crud
8+ from app import crud , models
109from app .api .deps import (
11- Currentmodels .User ,
1210 SessionDep ,
1311 get_current_active_superuser ,
1412)
15- from app .constants import BAD_REQUEST_CODE , CONFLICT_CODE , FORBIDDEN_CODE , NOT_FOUND_CODE
13+ from app .constants import (
14+ BAD_REQUEST_CODE ,
15+ CONFLICT_CODE ,
16+ FORBIDDEN_CODE ,
17+ NOT_FOUND_CODE ,
18+ )
1619from app .core .config import settings
1720from app .core .security import get_password_hash , verify_password
18- from app import models
1921from app .email_utils import generate_new_account_email , send_email
2022
2123router = APIRouter (prefix = "/users" , tags = ["users" ])
2527 "/" ,
2628 dependencies = [Depends (get_current_active_superuser )],
2729)
28- def read_users (session : SessionDep , skip : int = 0 , limit : int = 100 ) -> models .models .UsersPublic :
30+ def read_users (
31+ session : SessionDep ,
32+ skip : int = 0 ,
33+ limit : int = 100 ,
34+ ) -> models .UsersPublic :
2935 """Retrieve users."""
3036 count_statement = select (func .count ()).select_from (models .User )
3137 count = session .exec (count_statement ).one ()
3238
3339 statement = select (models .User ).offset (skip ).limit (limit )
3440 users = session .exec (statement ).all ()
3541
36- return models .models . UsersPublic (data = users , count = count )
42+ return models .UsersPublic (user_data = users , count = count )
3743
3844
3945@router .post (
4046 "/" ,
4147 dependencies = [Depends (get_current_active_superuser )],
4248)
43- def create_user (* , session : SessionDep , user_in : models .models .UserCreate ) -> models .models .UserPublic :
49+ def create_user (
50+ * ,
51+ session : SessionDep ,
52+ user_in : models .UserCreate ,
53+ ) -> models .UserPublic :
4454 """Create new user."""
4555 user = crud .get_user_by_email (session = session , email = user_in .email )
4656 if user :
@@ -50,7 +60,7 @@ def create_user(*, session: SessionDep, user_in: models.models.UserCreate) -> mo
5060 )
5161
5262 user = crud .create_user (session = session , user_create = user_in )
53- if settings .emails_enabled and user_in .email :
63+ if not settings .emails_enabled and user_in .email :
5464 email_data = generate_new_account_email (
5565 email_to = user_in .email ,
5666 username = user_in .email ,
@@ -61,16 +71,16 @@ def create_user(*, session: SessionDep, user_in: models.models.UserCreate) -> mo
6171 subject = email_data .subject ,
6272 html_content = email_data .html_content ,
6373 )
64- return models .models . UserPublic .model_validate (user )
74+ return models .UserPublic .model_validate (user )
6575
6676
6777@router .patch ("/me" )
6878def update_user_me (
6979 * ,
7080 session : SessionDep ,
71- user_in : models .models . models . UserUpdateMe ,
72- current_user : Currentmodels .User ,
73- ) -> models .models . UserPublic :
81+ user_in : models .UserUpdateMe ,
82+ current_user : models .User ,
83+ ) -> models .UserPublic :
7484 """Update own user."""
7585 if user_in .email :
7686 existing_user = crud .get_user_by_email (session = session , email = user_in .email )
@@ -84,15 +94,15 @@ def update_user_me(
8494 session .add (current_user )
8595 session .commit ()
8696 session .refresh (current_user )
87- return models .models . UserPublic .model_validate (current_user )
97+ return models .UserPublic .model_validate (current_user )
8898
8999
90100@router .patch ("/me/password" )
91101def update_password_me (
92102 * ,
93103 session : SessionDep ,
94104 body : models .UpdatePassword ,
95- current_user : Currentmodels .User ,
105+ current_user : models .User ,
96106) -> models .Message :
97107 """Update own password."""
98108 if not verify_password (body .current_password , current_user .hashed_password ):
@@ -110,13 +120,16 @@ def update_password_me(
110120
111121
112122@router .get ("/me" )
113- def read_user_me (current_user : Currentmodels .User ) -> models . models .UserPublic :
123+ def read_user_me (current_user : models .User ) -> models .UserPublic :
114124 """Get current user."""
115- return models .models . UserPublic .model_validate (current_user )
125+ return models .UserPublic .model_validate (current_user )
116126
117127
118128@router .delete ("/me" )
119- def delete_user_me (session : SessionDep , current_user : Currentmodels .User ) -> models .Message :
129+ def delete_user_me (
130+ session : SessionDep ,
131+ current_user : models .User ,
132+ ) -> models .Message :
120133 """Delete own user."""
121134 if current_user .is_superuser :
122135 raise HTTPException (
@@ -129,37 +142,40 @@ def delete_user_me(session: SessionDep, current_user: Currentmodels.User) -> mod
129142
130143
131144@router .post ("/signup" )
132- def register_user (session : SessionDep , user_in : models .models .UserRegister ) -> models .models .UserPublic :
145+ def register_user (
146+ session : SessionDep ,
147+ user_in : models .UserRegister ,
148+ ) -> models .UserPublic :
133149 """Create new user without the need to be logged in."""
134150 user = crud .get_user_by_email (session = session , email = user_in .email )
135151 if user :
136152 raise HTTPException (
137153 status_code = BAD_REQUEST_CODE ,
138154 detail = "The user with this email already exists in the system" ,
139155 )
140- user_create = models .models . UserCreate .model_validate (user_in )
156+ user_create = models .UserCreate .model_validate (user_in )
141157 user = crud .create_user (session = session , user_create = user_create )
142- return models .models . UserPublic .model_validate (user )
158+ return models .UserPublic .model_validate (user )
143159
144160
145161@router .get ("/{user_id}" )
146162def read_user_by_id (
147163 user_id : uuid .UUID ,
148164 session : SessionDep ,
149- current_user : Currentmodels .User ,
150- ) -> models .models . UserPublic :
165+ current_user : models .User ,
166+ ) -> models .UserPublic :
151167 """Get a specific user by id."""
152168 user = session .get (models .User , user_id )
153169 if not user :
154170 raise HTTPException (status_code = NOT_FOUND_CODE , detail = "models.User not found" )
155171 if user == current_user :
156- return models .models . UserPublic .model_validate (user )
172+ return models .UserPublic .model_validate (user )
157173 if not current_user .is_superuser :
158174 raise HTTPException (
159175 status_code = FORBIDDEN_CODE ,
160176 detail = "The user doesn't have enough privileges" ,
161177 )
162- return models .models . UserPublic .model_validate (user )
178+ return models .UserPublic .model_validate (user )
163179
164180
165181@router .patch (
@@ -170,8 +186,8 @@ def update_user(
170186 * ,
171187 session : SessionDep ,
172188 user_id : uuid .UUID ,
173- user_in : models .models . UserUpdate ,
174- ) -> models .models . UserPublic :
189+ user_in : models .UserUpdate ,
190+ ) -> models .UserPublic :
175191 """Update a user."""
176192 db_user = session .get (models .User , user_id )
177193 if not db_user :
@@ -188,13 +204,13 @@ def update_user(
188204 )
189205
190206 db_user = crud .update_user (session = session , db_user = db_user , user_in = user_in )
191- return models .models . UserPublic .model_validate (db_user )
207+ return models .UserPublic .model_validate (db_user )
192208
193209
194210@router .delete ("/{user_id}" , dependencies = [Depends (get_current_active_superuser )])
195211def delete_user (
196212 session : SessionDep ,
197- current_user : Currentmodels .User ,
213+ current_user : models .User ,
198214 user_id : uuid .UUID ,
199215) -> models .Message :
200216 """Delete a user."""
@@ -206,7 +222,7 @@ def delete_user(
206222 status_code = FORBIDDEN_CODE ,
207223 detail = "Super users are not allowed to delete themselves" ,
208224 )
209- statement = delete (models .Item ).where (col (models .Item .owner_id ) == user_id )
225+ statement = delete (models .Item ).where (col (models .Item .owner_id ) == user_id ) # noqa: WPS221
210226 session .execute (statement ) # type: ignore[deprecated]
211227 session .delete (user )
212228 session .commit ()
0 commit comments