this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Extensions fixes

+34 -9
+2
care/emr/api/viewsets/inventory/delivery_order.py
··· 19 19 from care.emr.resources.inventory.supply_delivery.delivery_order import ( 20 20 BaseSupplyDeliveryOrderSpec, 21 21 SupplyDeliveryOrderReadSpec, 22 + SupplyDeliveryOrderRetrieveSpec, 22 23 SupplyDeliveryOrderStatusOptions, 23 24 SupplyDeliveryOrderWriteSpec, 24 25 ) ··· 60 61 pydantic_model = SupplyDeliveryOrderWriteSpec 61 62 pydantic_update_model = BaseSupplyDeliveryOrderSpec 62 63 pydantic_read_model = SupplyDeliveryOrderReadSpec 64 + pydantic_retrieve_model = SupplyDeliveryOrderRetrieveSpec 63 65 filterset_class = DeliveryOrderFilters 64 66 filter_backends = [ 65 67 filters.DjangoFilterBackend,
+9
care/emr/extensions/base.py
··· 105 105 class PlugExtension(ExtensionBase): 106 106 extension_owner: ExtensionOwners = ExtensionOwners.plug 107 107 108 + def serialize_extensions(self, data, resource=None): 109 + return data 110 + 111 + def deserialize_extensions_list(self, data, resource): 112 + return data 113 + 114 + def deserialize_extensions_retrieve(self, data, resource): 115 + return data 116 + 108 117 109 118 for resource_type in ExtensionResource: 110 119 extension_obj = CoreEnvExtension()
+8 -8
care/emr/extensions/validator.py
··· 46 46 if mapping.get("_extensions_rendered"): 47 47 return super().perform_extra_serialization(mapping, obj, *args, **kwargs) 48 48 data = {} 49 - for key in obj.extensions: 50 - extension_handler = ExtensionRegistry.get_extension_obj( 51 - cls.___extension_resource_type__.value, key 52 - ) 49 + resource_type = cls.___extension_resource_type__.value 50 + for key in ExtensionRegistry.get_extensions_for_resource(resource_type): 51 + extension_handler = ExtensionRegistry.get_extension_obj(resource_type, key) 52 + current_data = {} 53 + if key in obj.extensions: 54 + current_data = obj.extensions[key] 53 55 if extension_handler is None: 54 56 # TODO: Once stable, raise error instead 55 - data[key] = obj.extensions[key] 56 - data[key] = cls.serialize_extensions( 57 - extension_handler, obj.extensions[key], obj 58 - ) 57 + data[key] = current_data 58 + data[key] = cls.serialize_extensions(extension_handler, current_data, obj) 59 59 60 60 mapping["extensions"] = data 61 61 mapping["_extensions_rendered"] = True
+4
care/emr/registries/extensions/registry.py
··· 27 27 @classmethod 28 28 def get_extensions(cls): 29 29 return cls._extensions 30 + 31 + @classmethod 32 + def get_extensions_for_resource(cls, resource_type): 33 + return cls._extensions.get(resource_type, {})
+11 -1
care/emr/resources/inventory/supply_delivery/delivery_order.py
··· 5 5 from rest_framework.exceptions import ValidationError 6 6 7 7 from care.emr.extensions.base import ExtensionResource 8 - from care.emr.extensions.validator import ExtensionListRenderer, ExtensionValidator 8 + from care.emr.extensions.validator import ( 9 + ExtensionListRenderer, 10 + ExtensionRetrieveRenderer, 11 + ExtensionValidator, 12 + ) 9 13 from care.emr.models.location import FacilityLocation 10 14 from care.emr.models.organization import Organization 11 15 from care.emr.models.patient import Patient ··· 113 117 mapping["patient_invoice_id"] = str(obj.patient_invoice.external_id) 114 118 cls.serialize_audit_users(mapping, obj) 115 119 return super().perform_extra_serialization(mapping, obj) 120 + 121 + 122 + class SupplyDeliveryOrderRetrieveSpec( 123 + ExtensionRetrieveRenderer, SupplyDeliveryOrderReadSpec 124 + ): 125 + pass