| 216 | return retval |
| 217 | |
| 218 | def serialize(self, service_filter_keys=None) -> SerializedUser: |
| 219 | if service_filter_keys is None: |
| 220 | services_data = [x.id for x in self.services if x.active] |
| 221 | else: |
| 222 | service_filter_keys = list(set(service_filter_keys) | {"id"}) |
| 223 | services_data = [dict_filter(x, service_filter_keys) for x in self.services if x.active] |
| 224 | |
| 225 | return SerializedUser( |
| 226 | id=self.id, |
| 227 | name=self.name, |
| 228 | email_address=self.email_address, |
| 229 | created_at=self.created_at.strftime(DATETIME_FORMAT), |
| 230 | auth_type=self.auth_type, |
| 231 | current_session_id=self.current_session_id, |
| 232 | failed_login_count=self.failed_login_count, |
| 233 | email_access_validated_at=self.email_access_validated_at.strftime(DATETIME_FORMAT), |
| 234 | logged_in_at=get_dt_string_or_none(self.logged_in_at), |
| 235 | mobile_number=self.mobile_number, |
| 236 | organisations=[x.id for x in self.organisations if x.active], |
| 237 | password_changed_at=self.password_changed_at.strftime(DATETIME_FORMAT_NO_TIMEZONE), |
| 238 | permissions=self.get_permissions(), |
| 239 | organisation_permissions=self.get_organisation_permissions(), |
| 240 | platform_admin=self.platform_admin, |
| 241 | services=services_data, |
| 242 | can_use_webauthn=self.can_use_webauthn, |
| 243 | state=self.state, |
| 244 | take_part_in_research=self.take_part_in_research, |
| 245 | receives_new_features_email=self.receives_new_features_email, |
| 246 | ) |
| 247 | |
| 248 | def serialize_for_users_list(self) -> SerializedUserForList: |
| 249 | return SerializedUserForList( |