square-authentication 6.0.2__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.
@@ -1,4 +1,4 @@
1
- from typing import Annotated
1
+ from typing import Annotated, Optional
2
2
 
3
3
  from fastapi import APIRouter, HTTPException, status, Header, UploadFile
4
4
  from fastapi.responses import JSONResponse
@@ -27,7 +27,7 @@ router = APIRouter(
27
27
  @global_object_square_logger.auto_logger()
28
28
  async def update_profile_photo_v0(
29
29
  access_token: Annotated[str, Header()],
30
- profile_photo: UploadFile,
30
+ profile_photo: Optional[UploadFile] = None,
31
31
  ):
32
32
 
33
33
  try:
@@ -50,7 +50,9 @@ async def update_profile_photo_v0(
50
50
  user_id = local_dict_access_token_payload["user_id"]
51
51
 
52
52
  # validate file format
53
- if not profile_photo.filename.endswith((".jpg", ".jpeg", ".png")):
53
+ if profile_photo and not profile_photo.filename.endswith(
54
+ (".jpg", ".jpeg", ".png")
55
+ ):
54
56
  output_content = get_api_output_in_standard_format(
55
57
  message=messages["INVALID_FILE_FORMAT"]
56
58
  )
@@ -61,7 +63,9 @@ async def update_profile_photo_v0(
61
63
 
62
64
  # validate file size
63
65
  file_size_limit_in_mib = 5
64
- if profile_photo.size > (file_size_limit_in_mib * 1024 * 1024):
66
+ if profile_photo and profile_photo.size > (
67
+ file_size_limit_in_mib * 1024 * 1024
68
+ ):
65
69
  output_content = get_api_output_in_standard_format(
66
70
  message=messages["FILE_SIZE_EXCEEDS_LIMIT"]
67
71
  )
@@ -72,20 +76,6 @@ async def update_profile_photo_v0(
72
76
  """
73
77
  main process
74
78
  """
75
- # uploading to square file store
76
-
77
- file_upload_response = (
78
- global_object_square_file_store_helper.upload_file_using_tuple_v0(
79
- file=(
80
- profile_photo.filename,
81
- profile_photo.file,
82
- profile_photo.content_type,
83
- ),
84
- system_relative_path="global/users/profile_photos",
85
- )
86
- )
87
-
88
- # adding file storage token to user profile
89
79
  old_profile_photo_response = global_object_square_database_helper.get_rows_v0(
90
80
  database_name=global_string_database_name,
91
81
  schema_name=global_string_schema_name,
@@ -98,20 +88,49 @@ async def update_profile_photo_v0(
98
88
  old_profile_photo_token = old_profile_photo_response["data"]["main"][0][
99
89
  "user_profile_photo_storage_token"
100
90
  ]
101
- profile_update_response = global_object_square_database_helper.edit_rows_v0(
102
- data={
103
- UserProfile.user_profile_photo_storage_token.name: file_upload_response[
104
- "data"
105
- ]["main"]
106
- },
107
- filters=FiltersV0(
108
- root={UserProfile.user_id.name: FilterConditionsV0(eq=user_id)}
109
- ),
110
- database_name=global_string_database_name,
111
- schema_name=global_string_schema_name,
112
- table_name=UserProfile.__tablename__,
113
- apply_filters=True,
114
- )
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
+
115
134
  if old_profile_photo_token:
116
135
  global_object_square_file_store_helper.delete_file_v0(
117
136
  [old_profile_photo_token]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: square_authentication
3
- Version: 6.0.2
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
@@ -53,6 +53,10 @@ 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
+
56
60
  ### v6.0.2
57
61
 
58
62
  - bump square_file_store_helper to >=3.0.0.
@@ -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=7lujohx0YGEssGvxByiFHSvqQ2lHrFzLoR2mt5qcXvs,5378
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.2.dist-info/METADATA,sha256=QsYhpenajy8LTz3mk0lMbE_y6Dp11mVlKLqCCOVrnlw,4992
16
- square_authentication-6.0.2.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
17
- square_authentication-6.0.2.dist-info/top_level.txt,sha256=wDssVJIl9KIEJPj5rR3rv4uRI7yCndMBrvHd_6BGXQA,22
18
- square_authentication-6.0.2.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.0.0)
2
+ Generator: setuptools (80.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5