square-authentication 6.0.1__py3-none-any.whl → 6.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- square_authentication/routes/profile.py +51 -37
- {square_authentication-6.0.1.dist-info → square_authentication-6.0.3.dist-info}/METADATA +11 -2
- {square_authentication-6.0.1.dist-info → square_authentication-6.0.3.dist-info}/RECORD +5 -5
- {square_authentication-6.0.1.dist-info → square_authentication-6.0.3.dist-info}/WHEEL +1 -1
- {square_authentication-6.0.1.dist-info → square_authentication-6.0.3.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,4 @@
|
|
1
|
-
import
|
2
|
-
from typing import Annotated
|
1
|
+
from typing import Annotated, Optional
|
3
2
|
|
4
3
|
from fastapi import APIRouter, HTTPException, status, Header, UploadFile
|
5
4
|
from fastapi.responses import JSONResponse
|
@@ -28,7 +27,7 @@ router = APIRouter(
|
|
28
27
|
@global_object_square_logger.auto_logger()
|
29
28
|
async def update_profile_photo_v0(
|
30
29
|
access_token: Annotated[str, Header()],
|
31
|
-
profile_photo: UploadFile,
|
30
|
+
profile_photo: Optional[UploadFile] = None,
|
32
31
|
):
|
33
32
|
|
34
33
|
try:
|
@@ -51,7 +50,9 @@ async def update_profile_photo_v0(
|
|
51
50
|
user_id = local_dict_access_token_payload["user_id"]
|
52
51
|
|
53
52
|
# validate file format
|
54
|
-
if not profile_photo.filename.endswith(
|
53
|
+
if profile_photo and not profile_photo.filename.endswith(
|
54
|
+
(".jpg", ".jpeg", ".png")
|
55
|
+
):
|
55
56
|
output_content = get_api_output_in_standard_format(
|
56
57
|
message=messages["INVALID_FILE_FORMAT"]
|
57
58
|
)
|
@@ -62,7 +63,9 @@ async def update_profile_photo_v0(
|
|
62
63
|
|
63
64
|
# validate file size
|
64
65
|
file_size_limit_in_mib = 5
|
65
|
-
if profile_photo.size > (
|
66
|
+
if profile_photo and profile_photo.size > (
|
67
|
+
file_size_limit_in_mib * 1024 * 1024
|
68
|
+
):
|
66
69
|
output_content = get_api_output_in_standard_format(
|
67
70
|
message=messages["FILE_SIZE_EXCEEDS_LIMIT"]
|
68
71
|
)
|
@@ -73,24 +76,6 @@ async def update_profile_photo_v0(
|
|
73
76
|
"""
|
74
77
|
main process
|
75
78
|
"""
|
76
|
-
# uploading to square file store
|
77
|
-
destination_path = os.path.join(
|
78
|
-
"temp", user_id, "profile_photo", profile_photo.filename
|
79
|
-
)
|
80
|
-
os.makedirs(os.path.dirname(destination_path), exist_ok=True)
|
81
|
-
with open(destination_path, "wb") as out_file:
|
82
|
-
content = await profile_photo.read()
|
83
|
-
out_file.write(content)
|
84
|
-
|
85
|
-
file_upload_response = (
|
86
|
-
global_object_square_file_store_helper.upload_file_using_file_path_v0(
|
87
|
-
file_path=destination_path,
|
88
|
-
system_relative_path="global/users/profile_photos",
|
89
|
-
)
|
90
|
-
)
|
91
|
-
os.remove(destination_path)
|
92
|
-
|
93
|
-
# adding file storage token to user profile
|
94
79
|
old_profile_photo_response = global_object_square_database_helper.get_rows_v0(
|
95
80
|
database_name=global_string_database_name,
|
96
81
|
schema_name=global_string_schema_name,
|
@@ -103,20 +88,49 @@ async def update_profile_photo_v0(
|
|
103
88
|
old_profile_photo_token = old_profile_photo_response["data"]["main"][0][
|
104
89
|
"user_profile_photo_storage_token"
|
105
90
|
]
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
91
|
+
|
92
|
+
if profile_photo:
|
93
|
+
# uploading to square file store
|
94
|
+
file_upload_response = (
|
95
|
+
global_object_square_file_store_helper.upload_file_using_tuple_v0(
|
96
|
+
file=(
|
97
|
+
profile_photo.filename,
|
98
|
+
profile_photo.file,
|
99
|
+
profile_photo.content_type,
|
100
|
+
),
|
101
|
+
system_relative_path="global/users/profile_photos",
|
102
|
+
)
|
103
|
+
)
|
104
|
+
# updating user profile
|
105
|
+
profile_update_response = global_object_square_database_helper.edit_rows_v0(
|
106
|
+
data={
|
107
|
+
UserProfile.user_profile_photo_storage_token.name: file_upload_response[
|
108
|
+
"data"
|
109
|
+
][
|
110
|
+
"main"
|
111
|
+
]
|
112
|
+
},
|
113
|
+
filters=FiltersV0(
|
114
|
+
root={UserProfile.user_id.name: FilterConditionsV0(eq=user_id)}
|
115
|
+
),
|
116
|
+
database_name=global_string_database_name,
|
117
|
+
schema_name=global_string_schema_name,
|
118
|
+
table_name=UserProfile.__tablename__,
|
119
|
+
apply_filters=True,
|
120
|
+
)
|
121
|
+
else:
|
122
|
+
# updating user profile
|
123
|
+
profile_update_response = global_object_square_database_helper.edit_rows_v0(
|
124
|
+
data={UserProfile.user_profile_photo_storage_token.name: None},
|
125
|
+
filters=FiltersV0(
|
126
|
+
root={UserProfile.user_id.name: FilterConditionsV0(eq=user_id)}
|
127
|
+
),
|
128
|
+
database_name=global_string_database_name,
|
129
|
+
schema_name=global_string_schema_name,
|
130
|
+
table_name=UserProfile.__tablename__,
|
131
|
+
apply_filters=True,
|
132
|
+
)
|
133
|
+
|
120
134
|
if old_profile_photo_token:
|
121
135
|
global_object_square_file_store_helper.delete_file_v0(
|
122
136
|
[old_profile_photo_token]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: square_authentication
|
3
|
-
Version: 6.0.
|
3
|
+
Version: 6.0.3
|
4
4
|
Summary: authentication layer for my personal server.
|
5
5
|
Home-page: https://github.com/thepmsquare/square_authentication
|
6
6
|
Author: thePmSquare
|
@@ -23,7 +23,7 @@ Requires-Dist: square_commons>=1.0.0
|
|
23
23
|
Requires-Dist: square_logger>=2.0.0
|
24
24
|
Requires-Dist: square_database_helper>=2.0.0
|
25
25
|
Requires-Dist: square_database_structure>=2.3.1
|
26
|
-
Requires-Dist: square_file_store_helper>=
|
26
|
+
Requires-Dist: square_file_store_helper>=3.0.0
|
27
27
|
Requires-Dist: pytest>=8.0.0
|
28
28
|
Requires-Dist: httpx>=0.27.2
|
29
29
|
Dynamic: author
|
@@ -53,6 +53,15 @@ pip install square_authentication
|
|
53
53
|
|
54
54
|
## changelog
|
55
55
|
|
56
|
+
### v6.0.3
|
57
|
+
|
58
|
+
- make profile photo upload optional in update_profile_photo/v0, to enable users to remove their profile photo.
|
59
|
+
|
60
|
+
### v6.0.2
|
61
|
+
|
62
|
+
- bump square_file_store_helper to >=3.0.0.
|
63
|
+
- use upload_file_using_tuple_v0 instead of upload_file_using_path_v0 in update_profile_photo/v0.
|
64
|
+
|
56
65
|
### v6.0.1
|
57
66
|
|
58
67
|
- delete previous profile photo from file store after successfully updating profile photo.
|
@@ -7,12 +7,12 @@ square_authentication/pydantic_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
7
7
|
square_authentication/pydantic_models/core.py,sha256=qeNETcJv7mnRKGhATOW2bg0NlHuyzvot1dZ1b1qqhwU,610
|
8
8
|
square_authentication/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
square_authentication/routes/core.py,sha256=Ui2kJI3DHK1tsb4_cCle8iurZlU__O_nptk2-YLZ2vg,56778
|
10
|
-
square_authentication/routes/profile.py,sha256=
|
10
|
+
square_authentication/routes/profile.py,sha256=3b-PtMaD9cxvf112MOn9rPu5F2KG4sRxAbuPvll8dUU,6216
|
11
11
|
square_authentication/routes/utility.py,sha256=KDr8KdkT0jAGPjfP-b5XXYG7p49WU7J1FiK6oSIckQI,1779
|
12
12
|
square_authentication/utils/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
13
13
|
square_authentication/utils/encryption.py,sha256=WakaiEAgWpTJltxBzqOtv81_DCDKfzJqt60fWSPoNvo,2027
|
14
14
|
square_authentication/utils/token.py,sha256=t-RPBY4cYyT1ro3lkLBTOy2BeRGBfluBVBivL5DLmDg,680
|
15
|
-
square_authentication-6.0.
|
16
|
-
square_authentication-6.0.
|
17
|
-
square_authentication-6.0.
|
18
|
-
square_authentication-6.0.
|
15
|
+
square_authentication-6.0.3.dist-info/METADATA,sha256=3aXkpgrgUVN-VxMucjTBA5mxkJBO8tvzAF7QS9kN96w,5117
|
16
|
+
square_authentication-6.0.3.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
|
17
|
+
square_authentication-6.0.3.dist-info/top_level.txt,sha256=wDssVJIl9KIEJPj5rR3rv4uRI7yCndMBrvHd_6BGXQA,22
|
18
|
+
square_authentication-6.0.3.dist-info/RECORD,,
|
{square_authentication-6.0.1.dist-info → square_authentication-6.0.3.dist-info}/top_level.txt
RENAMED
File without changes
|