def _migrate_form_and_associated_models(self, couch_form, form_is_processed=True): """ Copies `couch_form` into a new sql form """ if form_is_processed: form_data = couch_form.form with force_phone_timezones_should_be_processed(): adjust_datetimes(form_data) xmlns = form_data.get("@xmlns", "") user_id = extract_meta_user_id(form_data) else: xmlns = couch_form.xmlns user_id = couch_form.user_id sql_form = XFormInstanceSQL( form_id=couch_form.form_id, domain=self.domain, xmlns=xmlns, user_id=user_id, ) _copy_form_properties(sql_form, couch_form) _migrate_form_attachments(sql_form, couch_form) _migrate_form_operations(sql_form, couch_form) if couch_form.doc_type != 'SubmissionErrorLog': self._save_diffs(couch_form, sql_form) case_stock_result = self._get_case_stock_result( sql_form, couch_form) if form_is_processed else None _save_migrated_models(sql_form, case_stock_result)
def _migrate_form_and_associated_models(self, couch_form, form_is_processed=True): """ Copies `couch_form` into a new sql form """ sql_form = None try: if form_is_processed: form_data = couch_form.form with force_phone_timezones_should_be_processed(): adjust_datetimes(form_data) xmlns = form_data.get("@xmlns", "") user_id = extract_meta_user_id(form_data) else: xmlns = couch_form.xmlns user_id = couch_form.user_id if xmlns == SYSTEM_ACTION_XMLNS: for form_id, case_ids in do_system_action(couch_form): self.case_diff_queue.update(case_ids, form_id) sql_form = XFormInstanceSQL( form_id=couch_form.form_id, domain=self.domain, xmlns=xmlns, user_id=user_id, ) _copy_form_properties(sql_form, couch_form) _migrate_form_attachments(sql_form, couch_form) _migrate_form_operations(sql_form, couch_form) case_stock_result = (self._get_case_stock_result( sql_form, couch_form) if form_is_processed else None) _save_migrated_models(sql_form, case_stock_result) except IntegrityError as err: exc_info = sys.exc_info() try: sql_form = FormAccessorSQL.get_form(couch_form.form_id) except XFormNotFound: proc = "" if form_is_processed else " unprocessed" log.error("Error migrating%s form %s", proc, couch_form.form_id, exc_info=exc_info) if self.stop_on_error: raise err from None except Exception as err: proc = "" if form_is_processed else " unprocessed" log.exception("Error migrating%s form %s", proc, couch_form.form_id) try: sql_form = FormAccessorSQL.get_form(couch_form.form_id) except XFormNotFound: pass if self.stop_on_error: raise err from None finally: if couch_form.doc_type != 'SubmissionErrorLog': self._save_diffs(couch_form, sql_form)
def new_xform(cls, form_data): form_id = extract_meta_instance_id(form_data) or unicode(uuid.uuid4()) return XFormInstanceSQL( # other properties can be set post-wrap form_id=form_id, xmlns=form_data.get('@xmlns'), received_on=datetime.datetime.utcnow(), user_id=extract_meta_user_id(form_data), )
def new_xform(cls, form_data): form_id = extract_meta_instance_id(form_data) or unicode(uuid.uuid4()) return XFormInstanceSQL( # other properties can be set post-wrap form_id=form_id, xmlns=form_data.get('@xmlns'), received_on=datetime.datetime.utcnow(), user_id=extract_meta_user_id(form_data), )