def _clone_surveys(self, new_event): survey_attrs = get_simple_column_attrs(Survey) - {'uuid', 'start_dt', 'end_dt', '_last_friendly_submission_id'} for old_survey in self.old_event.surveys: if old_survey.is_deleted: continue survey = Survey() survey.populate_from_attrs(old_survey, survey_attrs) item_map = {} for old_item in old_survey.items: item = self._clone_item(survey, old_item) if old_item.parent: assert old_item.parent != old_item try: item.parent = item_map[old_item.parent] except KeyError: item.parent = item_map[old_item.parent] = self._clone_item(survey, old_item.parent) item_map[old_item] = item new_event.surveys.append(survey)