4
4
from app .db import Session , crud , get_db
5
5
from config import SUDOERS
6
6
from fastapi import Depends , HTTPException
7
- from datetime import datetime , timezone
7
+ from datetime import datetime , timezone , timedelta
8
8
from app .utils .jwt import get_subscription_payload
9
9
10
10
@@ -36,20 +36,23 @@ def get_dbnode(node_id: int, db: Session = Depends(get_db)):
36
36
return dbnode
37
37
38
38
39
- def validate_dates (start : Optional [Union [str , datetime ]], end : Optional [Union [str , datetime ]]) -> bool :
39
+ def validate_dates (start : Optional [Union [str , datetime ]], end : Optional [Union [str , datetime ]]) -> ( datetime , datetime ) :
40
40
"""Validate if start and end dates are correct and if end is after start."""
41
41
try :
42
42
if start :
43
- start_date = start if isinstance (start , datetime ) else datetime .fromisoformat (start )
43
+ start_date = start if isinstance (start , datetime ) else datetime .fromisoformat (start ). astimezone ( timezone . utc )
44
44
else :
45
- start_date = None
45
+ start_date = datetime . now ( timezone . utc ) - timedelta ( days = 30 )
46
46
if end :
47
- end_date = end if isinstance (end , datetime ) else datetime .fromisoformat (end )
47
+ end_date = end if isinstance (end , datetime ) else datetime .fromisoformat (end ). astimezone ( timezone . utc )
48
48
if start_date and end_date < start_date :
49
- return False
50
- return True
49
+ raise HTTPException (status_code = 400 , detail = "Start date must be before end date" )
50
+ else :
51
+ end_date = datetime .now (timezone .utc )
52
+
53
+ return start_date , end_date
51
54
except ValueError :
52
- return False
55
+ raise HTTPException ( status_code = 400 , detail = "Invalid date range or format" )
53
56
54
57
55
58
def get_user_template (template_id : int , db : Session = Depends (get_db )):
@@ -61,8 +64,8 @@ def get_user_template(template_id: int, db: Session = Depends(get_db)):
61
64
62
65
63
66
def get_validated_sub (
64
- token : str ,
65
- db : Session = Depends (get_db )
67
+ token : str ,
68
+ db : Session = Depends (get_db )
66
69
) -> UserResponse :
67
70
sub = get_subscription_payload (token )
68
71
if not sub :
@@ -79,9 +82,9 @@ def get_validated_sub(
79
82
80
83
81
84
def get_validated_user (
82
- username : str ,
83
- admin : Admin = Depends (Admin .get_current ),
84
- db : Session = Depends (get_db )
85
+ username : str ,
86
+ admin : Admin = Depends (Admin .get_current ),
87
+ db : Session = Depends (get_db )
85
88
) -> UserResponse :
86
89
dbuser = crud .get_user (db , username )
87
90
if not dbuser :
@@ -93,8 +96,8 @@ def get_validated_user(
93
96
return dbuser
94
97
95
98
96
- def get_expired_users_list (db : Session , admin : Admin , expired_after : Optional [datetime ] = None , expired_before : Optional [ datetime ] = None ):
97
-
99
+ def get_expired_users_list (db : Session , admin : Admin , expired_after : Optional [datetime ] = None ,
100
+ expired_before : Optional [ datetime ] = None ):
98
101
expired_before = expired_before or datetime .now (timezone .utc )
99
102
expired_after = expired_after or datetime .min .replace (tzinfo = timezone .utc )
100
103
0 commit comments