@@ -165,15 +165,15 @@ def get_groups(self, filter, db: Optional[Session] = None) -> list[GroupResponse
165165 share_value = filter ["share" ]
166166 member_id = filter .get ("member_id" )
167167 json_share = Group .data ["config" ]["share" ]
168- json_share_bool = json_share .as_boolean ()
169- json_share_str = json_share .as_string ()
168+ json_share_lower = func .lower (json_share .as_string ())
170169
171170 if share_value :
172- # Groups open to anyone: data is null, share is null, or share is true
171+ # Groups open to anyone: data is null, config.share is null, or share is true
172+ # Use case-insensitive string comparison to handle variations like "True", "TRUE"
173173 anyone_can_share = or_ (
174174 Group .data .is_ (None ),
175- json_share_bool .is_ (None ),
176- json_share_bool == True ,
175+ json_share_lower .is_ (None ),
176+ json_share_lower == "true" ,
177177 )
178178
179179 if member_id :
@@ -184,7 +184,7 @@ def get_groups(self, filter, db: Optional[Session] = None) -> list[GroupResponse
184184 .subquery ()
185185 )
186186 members_only_and_is_member = and_ (
187- json_share_str == "members" ,
187+ json_share_lower == "members" ,
188188 Group .id .in_ (member_groups_subq ),
189189 )
190190 query = query .filter (
@@ -194,7 +194,7 @@ def get_groups(self, filter, db: Optional[Session] = None) -> list[GroupResponse
194194 query = query .filter (anyone_can_share )
195195 else :
196196 query = query .filter (
197- and_ (Group .data .isnot (None ), json_share_bool == False )
197+ and_ (Group .data .isnot (None ), json_share_lower == "false" )
198198 )
199199
200200 else :
0 commit comments