diff --git a/ChangeLog.md b/ChangeLog.md index a5eb8958998..68a68746977 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,5 +1,14 @@ # Change Log +### 2020-xx-xx - 5.4.2 +Autorest core version: 3.0.6320 + +Modelerfour version: 4.15.421 + +**Bug Fixes** + +- Set discriminator value in cases where discriminator is readonly #815 + ### 2020-11-03 - 5.4.1 Autorest core version: 3.0.6318 diff --git a/autorest/codegen/serializers/model_generic_serializer.py b/autorest/codegen/serializers/model_generic_serializer.py index 61e9c283677..29c9e9354ef 100644 --- a/autorest/codegen/serializers/model_generic_serializer.py +++ b/autorest/codegen/serializers/model_generic_serializer.py @@ -26,15 +26,15 @@ def init_args(model: ObjectSchema) -> List[str]: init_args.append(f"super({model.name}, self).__init__(**kwargs)") for prop in ModelGenericSerializer.get_properties_to_initialize(model): - if prop.readonly: - init_args.append(f"self.{prop.name} = None") - elif prop.is_discriminator: + if prop.is_discriminator: discriminator_value = f"'{model.discriminator_value}'" if model.discriminator_value else None if not discriminator_value: typing = "Optional[str]" else: typing = "str" init_args.append(f"self.{prop.name} = {discriminator_value} # type: {typing}") + elif prop.readonly: + init_args.append(f"self.{prop.name} = None") elif not prop.constant: if prop.required and not prop.default_value: init_args.append(f"self.{prop.name} = kwargs['{prop.name}']") diff --git a/autorest/codegen/serializers/model_python3_serializer.py b/autorest/codegen/serializers/model_python3_serializer.py index 8425748ea2e..aaacda5494d 100644 --- a/autorest/codegen/serializers/model_python3_serializer.py +++ b/autorest/codegen/serializers/model_python3_serializer.py @@ -55,15 +55,15 @@ def init_args(model: ObjectSchema) -> List[str]: else: init_args.append(f"super({model.name}, self).__init__(**kwargs)") for prop in ModelPython3Serializer.get_properties_to_initialize(model): - if prop.readonly: - init_args.append(f"self.{prop.name} = None") - elif prop.is_discriminator: + if prop.is_discriminator: discriminator_value = f"'{model.discriminator_value}'" if model.discriminator_value else None if not discriminator_value: typing = "Optional[str]" else: typing = "str" init_args.append(f"self.{prop.name} = {discriminator_value} # type: {typing}") + elif prop.readonly: + init_args.append(f"self.{prop.name} = None") elif not prop.constant: init_args.append(f"self.{prop.name} = {prop.name}")