def validate(self): validators.validate_string(self.pipeline_name, "pipeline_name") validators.validate_list(self.raw_data_sources, "raw_data_sources") for i, raw_data_source in enumerate(self.raw_data_sources): assert isinstance( raw_data_source, RawDataSource ), f"raw_data_sources[{i}] is not of type of RawDataSource" raw_data_source.validate() assert isinstance(self.phone_number_uuid_table, PhoneNumberUuidTable) self.phone_number_uuid_table.validate() validators.validate_list(self.rapid_pro_key_remappings, "rapid_pro_key_remappings") for i, remapping in enumerate(self.rapid_pro_key_remappings): assert isinstance(remapping, RapidProKeyRemapping), \ f"rapid_pro_key_mappings[{i}] is not of type RapidProKeyRemapping" remapping.validate() validators.validate_datetime(self.project_start_date, "project_start_date") validators.validate_datetime(self.project_end_date, "project_end_date") validators.validate_bool(self.filter_test_messages, "filter_test_messages") validators.validate_bool(self.move_ws_messages, "move_ws_messages") if self.drive_upload is not None: assert isinstance(self.drive_upload, DriveUpload), \ "drive_upload is not of type DriveUpload" self.drive_upload.validate() validators.validate_string(self.memory_profile_upload_url_prefix, "memory_profile_upload_url_prefix")
def validate(self): validators.validate_string(self.rapid_pro_domain, "rapid_pro_domain") validators.validate_string(self.rapid_pro_token_file_url, "rapid_pro_token_file_url") validators.validate_list(self.activation_flow_names, "activation_flow_names") for i, activation_flow_name in enumerate(self.activation_flow_names): validators.validate_string(activation_flow_name, f"activation_flow_names[{i}]") validators.validate_list(self.survey_flow_names, "survey_flow_names") for i, survey_flow_name in enumerate(self.survey_flow_names): validators.validate_string(survey_flow_name, f"survey_flow_names[{i}]") if self.recovery_csv_urls is not None: validators.validate_list(self.recovery_csv_urls, "recovery_csv_urls") for i, recovery_csv_url in enumerate(self.recovery_csv_urls): validators.validate_string(recovery_csv_url, f"recovery_csv_urls[{i}]") validators.validate_list(self.rapid_pro_test_contact_uuids, "rapid_pro_test_contact_uuids") for i, contact_uuid in enumerate(self.rapid_pro_test_contact_uuids): validators.validate_string(contact_uuid, f"rapid_pro_test_contact_uuids[{i}]") assert isinstance(self.phone_number_uuid_table, PhoneNumberUuidTable) self.phone_number_uuid_table.validate() validators.validate_list(self.rapid_pro_key_remappings, "rapid_pro_key_remappings") for i, remapping in enumerate(self.rapid_pro_key_remappings): assert isinstance(remapping, RapidProKeyRemapping), \ f"rapid_pro_key_mappings[{i}] is not of type RapidProKeyRemapping" remapping.validate() validators.validate_datetime(self.project_start_date, "project_start_date") validators.validate_datetime(self.project_end_date, "project_end_date") validators.validate_bool(self.filter_test_messages, "filter_test_messages") if self.filter_operator is not None: validators.validate_string(self.filter_operator, "filter_operator") if self.drive_upload is not None: assert isinstance(self.drive_upload, DriveUpload), \ "drive_upload is not of type DriveUpload" self.drive_upload.validate() validators.validate_string(self.flow_definitions_upload_url_prefix, "flow_definitions_upload_url_prefix")
def test_validate_datetime(self): dt = isoparse("2019-05-10T12:37:04+03:00") self.assertEqual(dt, validators.validate_datetime(dt)) self._expect_validation_failure( lambda: validators.validate_datetime("2019-05-10T12:37:04+03:00", "dt"), "dt not a datetime") self._expect_validation_failure( lambda: validators.validate_datetime( isoparse("2019-05-10T12:37:04"), "dt"), "dt not timezone-aware")
def validate(self): validators.validate_string(self.message_id, "message_id") validators.validate_string(self.text, "text") validators.validate_utc_iso_string(self.creation_date_time_utc, "creation_date_time_utc") validators.validate_list(self.labels, "labels") for i, label in enumerate(self.labels): assert isinstance( label, Label), "self.labels[{}] is not of type Label".format(i) label.validate() if self.sequence_number is not None: validators.validate_int(self.sequence_number, "sequence_number") if self.last_updated is not None: try: validators.validate_datetime(self.last_updated, "last_updated") except AssertionError: assert self.last_updated == firestore.firestore.SERVER_TIMESTAMP, \ f"last_updated '{self.last_updated} is not a valid datetime or Firestore sentinel"
def validate(self): validators.validate_string(self.time_key, "time_key") validators.validate_string(self.show_pipeline_key_to_remap_to, "show_pipeline_key_to_remap_to") validators.validate_datetime(self.range_start_inclusive, "range_start_inclusive") validators.validate_datetime(self.range_end_exclusive, "range_end_exclusive") if self.time_to_adjust_to is not None: validators.validate_datetime(self.time_to_adjust_to, "time_to_adjust_to")
def validate(self): validators.validate_string(self.pipeline_name, "pipeline_name") validators.validate_list(self.raw_data_sources, "raw_data_sources") for i, raw_data_source in enumerate(self.raw_data_sources): assert isinstance( raw_data_source, RawDataSource ), f"raw_data_sources[{i}] is not of type RawDataSource" raw_data_source.validate() assert isinstance(self.uuid_table, UuidTable) self.uuid_table.validate() validators.validate_list(self.source_key_remappings, "source_key_remappings") for i, remapping in enumerate(self.source_key_remappings): assert isinstance(remapping, SourceKeyRemapping), \ f"source_key_mappings[{i}] is not of type SourceKeyRemapping" remapping.validate() validators.validate_datetime(self.project_start_date, "project_start_date") validators.validate_datetime(self.project_end_date, "project_end_date") validators.validate_bool(self.filter_test_messages, "filter_test_messages") validators.validate_bool(self.move_ws_messages, "move_ws_messages") if self.drive_upload is not None: assert isinstance(self.drive_upload, DriveUpload), \ "drive_upload is not of type DriveUpload" self.drive_upload.validate() validators.validate_url(self.memory_profile_upload_bucket, "memory_profile_upload_bucket", "gs") validators.validate_url(self.data_archive_upload_bucket, "data_archive_upload_bucket", "gs") validators.validate_string(self.bucket_dir_path, "bucket_dir_path")
def validate(self): validators.validate_string(self.label, "label") validators.validate_datetime(self.start_date, "start_date") validators.validate_datetime(self.end_date, "end_date")