def db_reset(): db.drop_all() db.create_all() # units_of_measurements uoms = [] for u_om in units_of_measurements: uom = UnitOfMeasurement(name=u_om.name) db.session.add(uom) uoms.append(uom) # input_types its = [] for i_t in input_types: it = InputType(name=i_t.name) its.append(it) db.session.add(it) # option_group_choice ogs = {} ocs = [] for o_g in option_groups: og = OptionGroup(name=o_g.name) for o_c in o_g.option_choices: oc = OptionChoice(name=o_c.name) ocs.append(oc) og.option_choices.append(oc) db.session.add(og) ogs[og] = ocs # survey_headers, survey_sections, questions, option_group, etc.. shs = [] for s_h in survey_headers: sh = SurveyHeader(name=s_h.name) for s_s in s_h.survey_sections: ss = SurveySection(name=s_s.name, subheading=s_s.subheading, order=s_s.order) for q_u in s_s.questions: q = Question( name=q_u.name, value=q_u.value, order=q_u.order, answer_required_yn=q_u.answer_required_yn, subtext=q_u.subtext, allow_mult_options_answers_yn=q_u.allow_mult_options_answers_yn, ) for it in its: if it.name == q_u.input_type.name: it.questions.append(q) for og in ogs: if og.name == q_u.option_group.name: og.questions.append(q) for oc in ogs[og]: qo = QuestionOption() q.question_options.append(qo) oc.question_options.append(qo) ss.questions.append(q) sh.survey_sections.append(ss) db.session.add(sh) shs.append(sh) orgs = [] for m in markets: market = Market(name=m.name) for o in m.organizations: org = Organization(name=o.name) for sh in shs: for osh in o.survey_headers: if osh.name == sh.name: org.survey_headers.append(sh) orgs.append(org) market.organizations.append(org) db.session.add(market) for u in users: user = User(name=u.name, role=u.role) for org in orgs: user.organizations.append(org) db.session.add(user) db.session.commit()
def create_init_database(): # db.drop_all() db.create_all() for user_package in users: user = User.query.filter_by(name=user_package.name).one() if not user: user = User( name = user_package.name, role = user_package.role, ) # markets for market_key in user_package.market_organization: m = Market.query.filter_by(name=market_key).one() if not m: m = Market(name=market_key) # organizations for organization_name in user_package.market_organization[market_key]: org = Organization.query.filter_by(name=organization_name).one() if not org: org = Organization(name = organization_name) # join user.organizations.append(org) m.organizations.append(org) db.session.add(m) # Survey_head for survey_header_package in survey_headers: #survey_header = in_database(survey_header_package, SurveyHeader) survey_header = SurveyHeader.query.filter_by(name=survey_header_package.name).one() if not survey_header: survey_header = SurveyHeader( name = survey_header_package.name ) # join org.survey_headers.append(survey_header) db.session.add(org) #survey_sections for survey_section_package in survey_header_package.survey_sections: survey_section = in_database(survey_section_package, SurveySection) if not survey_section: survey_section = SurveySection( name = survey_section_package.name, subheading = survey_section_package.subheading, order= survey_section_package.order, section_required_yn = survey_section_package.section_required_yn ) #join survey header with survey sections survey_header.survey_sections.append(survey_section) # questions for question_package in survey_section_package.questions: question = in_database(question_package, Question) if not question: question = Question( name = question_package.name, value = question_package.value, order = question_package.order, answer_required_yn = question_package.answer_required_yn, subtext = question_package.subtext, ) # question section merge survey_section.questions.append(question) #input types input_type = InputType.query.filter_by(name=question_package.input_type).one() if not input_type: input_type = InputType( name = question_package.input_type) #merge question input type input_type.questions.append(question) db.session.add(input_type) # OptionGroup option_group = OptionGroup.query.filter_by(name=question_package.option_group_name).one() if not option_group: option_group = OptionGroup( name=question_package.option_group_name ) option_group.questions.append(question) db.session.add(option_group) #option choices for choice in question_package.option_choice: option_choice = OptionChoice.query.filter_by(name=choice).one() if not option_choice: option_choice = OptionChoice(name=choice) #merge option group and choice option_group.option_choices.append(option_choice) # question options db.session.add(option_choice) question_option = db.session.query(QuestionOption).\ filter((QuestionOption.question == question) & (QuestionOption.option_choice == option_choice)).one() if not question_option: question_option = QuestionOption() question.question_options.append(question_option) option_choice.question_options.append(question_option) # db.session.flush() #TODO generalize points points = UnitOfMeasurement.query.filter_by(name='points').one() if not points: points = UnitOfMeasurement('points') db.session.add(points) db.session.add(user) db.session.commit()