Example #1
0
def add_survey():
    form = SurveyForm()
    form.event.query_factory = event_query
    if form.validate_on_submit():
        value_average = (form.value_1.data + form.value_2.data + form.value_3.data + form.value_4.data + form.value_5.data) / 5
        speaker_average = (form.speaker_1.data + form.speaker_2.data + form.speaker_3.data) / 3
        content_average = (form.content_1.data + form.content_2.data) / 2
        facility_average = (form.facility_1.data + form.facility_2.data) / 2
        overall_average = (value_average + speaker_average + content_average + facility_average) / 4
        survey = Survey(value_1=form.value_1.data, value_2=form.value_2.data, value_3=form.value_3.data,
                        value_4=form.value_4.data, value_5=form.value_5.data, value_average=value_average,
                        speaker_1=form.speaker_1.data, speaker_2=form.speaker_2.data, speaker_3=form.speaker_3.data,
                        speaker_average=speaker_average, content_1=form.content_1.data, content_2=form.content_2.data,
                        content_average=content_average, facility_1=form.facility_1.data, facility_2=form.facility_2.data,
                        facility_average=facility_average, response_1=form.response_1.data, response_2=form.response_2.data,
                        response_3=form.response_3.data, response_4=form.response_4.data, name=form.name.data,
                        email=form.email.data, overall_average=overall_average
                        )

        db.session.add(survey)
        db.session.commit()
        survey.event = form.event.data
        db.session.commit()

        for speaker in survey.event.speakers:
            update_speaker(speaker)

        update_event(survey.event)

        flash("Survey Saved.")
        return redirect(url_for('index'))
    return render_template('add_survey.html', title='Add Survey', form=form)
Example #2
0
def reports():
    """Generate reports."""
    from app import mail
    from flask_mail import Message

    from app.models import User, Survey

    user = User()
    survey = Survey()

    msg = Message("MS-Registry Reports",
                  recipients=app.config['MAIL_RECIPIENTS'])

    user_report_filename = user.getCSVReportInformedConsent()
    with app.open_resource(
            os.path.join(app.config['REPORTS_DIR'],
                         user_report_filename)) as fp:
        msg.attach(user_report_filename, "text/csv", fp.read())

    survey_report_filename = survey.getCSVReportTagsAndOngoing()
    with app.open_resource(
            os.path.join(app.config['REPORTS_DIR'],
                         survey_report_filename)) as fp:
        msg.attach(survey_report_filename, "text/csv", fp.read())

    mail.send(msg)
Example #3
0
def addSurvey():
    form = addSurveyForm()
    if form.validate_on_submit():
        survey = Survey(
                        title=form.title.data,
                        description=form.describe.data,
                        content_origin=form.content.data,
                        dimension=form.dimension.data,
                        uptime=datetime.now(),
                        author=current_user
                        )
        if current_user.is_administrator():
            survey.status = SurveyStatus.PUB

        survey_origin = SurveyMeta(
                                   meta_key='survey_origin',
                                   meta_value=form.content.data,
                                   author_id=current_user.id,
                                   survey=survey
                                  )

        db.session.add(survey)
        db.session.add(survey_origin)
        db.session.add(Distribute(owner=current_user, 
                                  survey=survey, 
                                  type=OwnerType.OWNER))
        db.session.commit()

        flash(u'操作成功')
        return redirect(url_for('manage.listSurvey'))
    return render_template('manage/add_survey.html',
                           form=form,
                           pagetitle=u'添加问卷',
                           surveyManage='active'
                          )
Example #4
0
def InsertData(request):
    if request.method == 'POST':
        Survey(
            #rnum = len(list(Survey.objects.all().values())) + 1, #자동증가 칼럼이 아닌 경우
            gender=request.POST.get('gender'),
            age=request.POST.get('age'),
            co_survey=request.POST.get('co_survey'),
        ).save()
Example #5
0
def get_all_users():
    """ Get all users """
    from app.models import User, Survey
    user = User()
    survey = Survey()
    all_users = user.getAll()
    all_surveys = survey.getAll()
    print("Found {0} users".format(len(all_users)))
    print("Found {0} surveys".format(len(all_surveys)))
Example #6
0
def add_survey(data):
    form = AddSurveyForm()
    if form.validate_on_submit():
        try:
            s = Survey(name=form.name.data, survey_id=form.survey_id.data)
            db.session.add(s)
            db.session.commit()
        except IntegrityError:
            flash('Survey already registered')
    return redirect(url_for('survey'))
Example #7
0
 def test_addByUniqueID(self):
     u = User()
     self.assertTrue(u.createIfNotExistsByUniqueID(self.uniqueID))
     s = Survey()
     self.assertTrue(
         s.addByUniqueID(self.uniqueID, {
             'survey': {
                 'value': 'any'
             },
             'tags': ['tag'],
             'ongoing': True
         }))
def test_delete_user(test_client, test_db):

    admin_user = User.query.filter_by(username='******').first()
    user_to_delete = User.query.filter_by(username='******').first()
    user_to_delete_id = user_to_delete.id

    # add a survey
    survey = Survey(name='test survey',
                    structure={},
                    created_by=user_to_delete,
                    updated_by=user_to_delete)
    test_db.session.add(survey)
    test_db.session.commit()

    # posts some responses
    survey_response = SurveyResponse(survey_id=survey.id,
                                     structure={},
                                     created_by=user_to_delete,
                                     updated_by=user_to_delete)
    test_db.session.add(survey_response)
    survey_response2 = SurveyResponse(survey_id=survey.id,
                                      structure={},
                                      created_by=user_to_delete,
                                      updated_by=user_to_delete)
    test_db.session.add(survey_response2)
    test_db.session.commit()

    # add a case definition
    case_definition = CaseDefinition(name="Test Case Definition",
                                     key='TCD',
                                     created_by=user_to_delete,
                                     updated_by=user_to_delete)
    test_db.session.add(case_definition)
    test_db.session.commit()

    access_token = create_access_token(identity=admin_user.id)
    response = test_client.delete(f"/users/{user_to_delete.id}",
                                  headers={
                                      'Content-Type': 'application/json',
                                      'Authorization': f"Bearer {access_token}"
                                  })
    assert response.status_code == 200
    # assert all references to user are now admin
    assert survey.created_by.id == admin_user.id
    assert survey.updated_by.id == admin_user.id
    assert survey_response.created_by.id == admin_user.id
    assert survey_response.updated_by.id == admin_user.id
    assert survey_response2.created_by.id == admin_user.id
    assert survey_response2.updated_by.id == admin_user.id
    assert case_definition.created_by.id == admin_user.id
    assert case_definition.updated_by.id == admin_user.id
    # assert user is deleted
    assert len(User.query.filter_by(username='******').all()) == 0
Example #9
0
def create_survey():
    req_data = request.get_json()

    new_survey = Survey(title=req_data['title'])

    db.session.add(new_survey)

    for question_data in req_data.get('questions', []):
        question = Question(survey=new_survey, text=question_data['text'])
        db.session.add(question)

    db.session.commit()

    return jsonify(new_survey.as_dict())
Example #10
0
def survey():
    visit = User.query.filter_by(username=current_user.username).first()
    visit.surveyVisted = 1
    form = SurveyForm()
    if form.validate_on_submit():
        option = Survey(major=form.major.data,
                        outdoor=form.outdoor.data,
                        indoor=form.indoor.data,
                        question = form.question.data,
                        answer = form.answer.data,
                        user_id=current_user.id)
        db.session.add(option)
        db.session.commit()

        return redirect(url_for('user', username=current_user.username))

    return render_template('Survey.html', form=form, title="Survey")
Example #11
0
def test_new_survey():
    survey = Survey(name='hiren raj')
    assert survey.name == 'hiren raj'
Example #12
0
def test_survey_repr():
    survey = repr(Survey(name='Test'))
    assert survey == '<name : Test>'
Example #13
0
def test_survey_verify():
    survey = Survey(name='')
    with pytest.raises(Exception):
        survey.verify(survey)
Example #14
0
def test_survey_can_delete():
    survey = Survey(name='Hiren Raj')
    with pytest.raises(Exception):
        survey.can_delete()
def test_post_valid_case_definition(test_client, test_db):
    num_definitions_before = test_db.session.query(CaseDefinition).count()
    user = User.query.filter_by(username='******').first()
    survey = Survey(name='Test Survey',
                    reporting_table_name='test_survey',
                    structure={
                        "pages": [{
                            "name":
                            "page1",
                            "elements": [{
                                "type": "text",
                                "name": "question1"
                            }]
                        }],
                        "title":
                        "Test Survey"
                    },
                    created_by=user,
                    updated_by=user)
    test_db.session.add(survey)
    test_db.session.commit()
    survey_id = survey.id

    case_definition = {
        "name":
        "Test Case Definition 6",
        "key":
        "TCD1",
        "description":
        "This is a description of the test case definition 6",
        "surveys": [survey_id],
        "documents": [{
            "name": "Birth Certificate",
            "description": "blash blah",
            "is_required": True
        }, {
            "name": "Document 2",
            "description": "blash blah",
            "is_required": False
        }],
        "custom_fields": [{
            "name": "Household Long Text",
            "field_type": "textarea",
            "selections": None,
            "validation_rules": None,
            "custom_section_id": None,
            "help_text": "This is for longer answers",
            "sort_order": 1
        }, {
            "name":
            "Household Selection Field",
            "field_type":
            "select",
            "selections": [{
                "id": "1",
                "value": "Household Selection Option A"
            }, {
                "id": "2",
                "value": "Household Selection Option B"
            }, {
                "id": "3",
                "value": "Household Selection Option C"
            }],
            "validation_rules":
            None,
            "custom_section_id":
            None,
            "help_text":
            "This is for a single selection among many",
            "sort_order":
            2
        }]
    }

    access_token = create_access_token(identity=user.id)
    response = test_client.post("/case_definitions/",
                                data=json.dumps(case_definition),
                                headers={
                                    'Content-Type': 'application/json',
                                    'Authorization': f"Bearer {access_token}"
                                })

    assert response.status_code == 200
    assert (num_definitions_before +
            1) == test_db.session.query(CaseDefinition).count()
    json_data = response.get_json()
    assert json_data['id']
    assert len(json_data['surveys']) == 1
    assert len(json_data['documents']) == 2
    assert len(json_data['custom_fields']) == 2
    cd = CaseDefinition.query.get(json_data['id'])
    assert cd
    assert len(cd.surveys.all()) == 1
    assert len(cd.documents) == 2
    assert len(cd.custom_fields) == 2