def handle_internaltip_fixes(self, new_obj, old_obj): old_node = self.store_old.find(self.model_from['Node']).one() new_archivedschema_model = self.model_to['ArchivedSchema'] questionnaire, answers = self.extract_answers_from_wb_steps( old_obj.wb_steps) new_obj.questionnaire_hash = sha256(json.dumps(questionnaire)) aqs = self.store_new.find( new_archivedschema_model, new_archivedschema_model.hash == unicode( new_obj.questionnaire_hash), new_archivedschema_model.type == u'questionnaire', new_archivedschema_model.language == unicode( old_node.default_language)).one() if not aqs: for lang in old_node.languages_enabled: aqs = new_archivedschema_model() aqs.hash = new_obj.questionnaire_hash aqs.type = u'questionnaire' aqs.language = lang aqs.schema = questionnaire self.store_new.add(aqs) preview = [] for s in aqs.schema: for f in s['children']: if f['preview']: preview.append(f) aqsp = new_archivedschema_model() aqsp.hash = new_obj.questionnaire_hash aqsp.type = u'preview' aqsp.language = lang aqsp.schema = preview self.store_new.add(aqsp) db_save_questionnaire_answers(self.store_new, new_obj.id, answers) new_obj.preview = extract_answers_preview(questionnaire, answers)
def handle_internaltip_fixes(self, new_obj, old_obj): old_node = self.store_old.find(self.model_from['Node']).one() new_archivedschema_model = self.model_to['ArchivedSchema'] questionnaire, answers = self.extract_answers_from_wb_steps(old_obj.wb_steps) new_obj.questionnaire_hash = sha256(json.dumps(questionnaire)) aqs = self.store_new.find(new_archivedschema_model, new_archivedschema_model.hash == unicode(new_obj.questionnaire_hash), new_archivedschema_model.type == u'questionnaire', new_archivedschema_model.language == unicode(old_node.default_language)).one() if not aqs: for lang in old_node.languages_enabled: aqs = new_archivedschema_model() aqs.hash = new_obj.questionnaire_hash aqs.type = u'questionnaire' aqs.language = lang aqs.schema = questionnaire self.store_new.add(aqs) preview = [] for s in aqs.schema: for f in s['children']: if f['preview']: preview.append(f) aqsp = new_archivedschema_model() aqsp.hash = new_obj.questionnaire_hash aqsp.type = u'preview' aqsp.language = lang aqsp.schema = preview self.store_new.add(aqsp) db_save_questionnaire_answers(self.store_new, new_obj.id, answers) new_obj.preview = extract_answers_preview(questionnaire, answers)