diff --git a/zerver/lib/types.py b/zerver/lib/types.py index ab274eeecd..fb01308802 100644 --- a/zerver/lib/types.py +++ b/zerver/lib/types.py @@ -11,16 +11,18 @@ Validator = Callable[[str, object], Optional[str]] ExtendedValidator = Callable[[str, str, object], Optional[str]] RealmUserValidator = Callable[[int, List[int], bool], Optional[str]] -ProfileDataElement = TypedDict('ProfileDataElement', { - 'id': int, - 'name': str, - 'type': int, - 'hint': Optional[str], - 'field_data': Optional[str], - 'order': int, - 'value': str, - 'rendered_value': Optional[str], -}, total=False) # TODO: Can we remove this requirement? +class ProfileDataElementBase(TypedDict): + id: int + name: str + type: int + hint: Optional[str] + field_data: Optional[str] + order: int + +class ProfileDataElement(ProfileDataElementBase): + value: str + rendered_value: Optional[str] + ProfileData = List[ProfileDataElement] FieldElement = Tuple[int, str, Validator, Callable[[Any], Any], str] diff --git a/zerver/models.py b/zerver/models.py index 6e3fd7969c..b561d61dad 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -72,7 +72,7 @@ from zerver.lib.types import ( ExtendedValidator, FieldElement, ProfileData, - ProfileDataElement, + ProfileDataElementBase, RealmUserValidator, UserFieldElement, Validator, @@ -1127,9 +1127,16 @@ class UserProfile(AbstractBaseUser, PermissionsMixin): value = converter(value) field_data = field.as_dict() - field_data['value'] = value - field_data['rendered_value'] = rendered_value - data.append(field_data) + data.append({ + 'id': field_data['id'], + 'name': field_data['name'], + 'type': field_data['type'], + 'hint': field_data['hint'], + 'field_data': field_data['field_data'], + 'order': field_data['order'], + 'value': value, + 'rendered_value': rendered_value, + }) return data @@ -2823,7 +2830,7 @@ class CustomProfileField(models.Model): class Meta: unique_together = ('realm', 'name') - def as_dict(self) -> ProfileDataElement: + def as_dict(self) -> ProfileDataElementBase: return { 'id': self.id, 'name': self.name,