<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def submit_report(self, report):
 """ Submits a report. * If ``report.is_enclave`` is ``True``, then the report will be submitted to the enclaves identified by ``report.enclaves``; if that field is ``None``, then the enclave IDs registered with this |TruStar| object will be used. * If ``report.time_began`` is ``None``, then the current time will be used. :param report: The |Report| object that was submitted, with the ``id`` field updated based on values from the response. Example: ac6a0d17-7350-4410-bc57-9699521db992 Suspicious Activity """


        # make distribution type default to "enclave"
        if report.is_enclave is None:
            report.is_enclave = True

        if report.enclave_ids is None:
            # use configured enclave_ids by default if distribution type is ENCLAVE
            if report.is_enclave:
                report.enclave_ids = self.enclave_ids
            # if distribution type is COMMUNITY, API still expects non-null list of enclaves
            else:
                report.enclave_ids = []

        if report.is_enclave and len(report.enclave_ids) == 0:
            raise Exception("Cannot submit a report of distribution type 'ENCLAVE' with an empty set of enclaves.")

        # default time began is current time
        if report.time_began is None:
            report.set_time_began(datetime.now())

        data = json.dumps(report.to_dict())
        resp = self._client.post("reports", data=data, timeout=60)

        # get report id from response body
        report_id = resp.content

        if isinstance(report_id, bytes):
            report_id = report_id.decode('utf-8')

        report.id = report_id

        return report