示例#1
0
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()
示例#2
0
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()