def handle_subject_details()

in lemur/certificates/schemas.py [0:0]


    def handle_subject_details(self, data):
        subject_details = ["country", "state", "location", "organization", "organizational_unit"]

        # Remove subject details if authority is CA/Browser Forum compliant. The code will use default set of values in that case.
        # If CA/Browser Forum compliance of an authority is unknown (None), it is safe to fallback to default values. Thus below
        # condition checks for 'not False' ==> 'True or None'
        if data.get("authority"):
            is_cab_compliant = data.get("authority").get("isCabCompliant")

            if is_cab_compliant is not False:
                for field in subject_details:
                    data.pop(field, None)

        # Removing subject fields if None, else it complains in de-serialization
        for field in subject_details:
            if field in data and data[field] is None:
                data.pop(field)