Example #1
0
def cso_testing(page=1):
    if g.user.role.name == ROLE_HEAD_OF_INFORMATION_SECURITY:
        is_tm_answered_on_questions = ApplicationData.is_tm_answered_on_questions()
        chosen_processes = UserChoice.user_choice_processes_by_role_id(g.user.role_id).paginate(page, 1, False)
        if is_tm_answered_on_questions.status:
            current_process = chosen_processes.items[0]
            questions_by_process = Question.chosen_questions(current_process.id).all()
        else:
            current_process = None
            questions_by_process = []
        form = TestForm(questions=questions_by_process)
        is_cso_answered_on_questions = ApplicationData.is_cso_answered_on_questions()
        if form.validate_on_submit():
            if form.finish.data:
                save_answers_to_db(form, g.user.role_id, current_process.id)
                if not is_cso_answered_on_questions.status:
                    is_cso_answered_on_questions.status = bool(not is_cso_answered_on_questions.status)
                    is_cso_answered_on_questions.update()
                    make_statistic()
                return redirect(url_for('cso'))
            if form.next_page.data:
                save_answers_to_db(form, g.user.role_id, current_process.id)
                page = chosen_processes.next_num
            return redirect(url_for('cso_testing', page=page))
        html = render_template('roles/cso_testing.html', form=form,
                               current_process=current_process,
                               is_tm_answered_on_questions=is_tm_answered_on_questions,
                               is_cso_answered_on_questions=is_cso_answered_on_questions,
                               processes=chosen_processes,
                               investment_level=UserChoice.user_choice_chosen_investment_level())
        return __make_tooltips(html)
    else:
        return u'Вы не можете получить доступ к этой странице'
Example #2
0
    def test_multiwidget_field(self):
        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {% crispy form %}
        """)

        test_form = TestForm()
        test_form.helper = FormHelper()
        test_form.helper.layout = Layout(
            MultiWidgetField('datetime_field',
                             attrs=({
                                 'rel': 'test_dateinput'
                             }, {
                                 'rel': 'test_timeinput',
                                 'style': 'width: 30px;',
                                 'type': "hidden"
                             })))

        c = Context({'form': test_form})

        html = template.render(c)
        self.assertEqual(html.count('class="dateinput"'), 1)
        self.assertEqual(html.count('rel="test_dateinput"'), 1)
        self.assertEqual(html.count('rel="test_timeinput"'), 1)
        self.assertEqual(html.count('style="width: 30px;"'), 1)
        self.assertEqual(html.count('type="hidden"'), 1)
Example #3
0
    def test_multiwidget_field(self):
        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {% crispy form %}
        """)

        test_form = TestForm()
        test_form.helper = FormHelper()
        test_form.helper.layout = Layout(
            MultiWidgetField(
                'datetime_field',
                attrs=(
                    {'rel': 'test_dateinput'},
                    {'rel': 'test_timeinput', 'style': 'width: 30px;', 'type': "hidden"}
                )
            )
        )

        c = Context({'form': test_form})

        html = template.render(c)
        self.assertEqual(html.count('class="dateinput"'), 1)
        self.assertEqual(html.count('rel="test_dateinput"'), 1)
        self.assertEqual(html.count('rel="test_timeinput"'), 1)
        self.assertEqual(html.count('style="width: 30px;"'), 1)
        self.assertEqual(html.count('type="hidden"'), 1)
Example #4
0
    def test_error_and_help_inline(self):
        form = TestForm({'email': 'invalidemail'})
        form.helper = FormHelper()
        form.helper.error_text_inline = False
        form.helper.help_text_inline = True
        form.helper.layout = Layout('email')
        form.is_valid()
        html = render_crispy_form(form)

        # Check that help goes before error, otherwise CSS won't work
        if settings.CRISPY_TEMPLATE_PACK == 'bootstrap':
            help_position = html.find(
                '<span id="hint_id_email" class="help-inline">')
            error_position = html.find(
                '<p id="error_1_id_email" class="help-block">')
            self.assertTrue(help_position < error_position)

        # Viceversa
        form = TestForm({'email': 'invalidemail'})
        form.helper = FormHelper()
        form.helper.error_text_inline = True
        form.helper.help_text_inline = False
        form.helper.layout = Layout('email')
        form.is_valid()
        html = render_crispy_form(form)

        # Check that error goes before help, otherwise CSS won't work
        if settings.CRISPY_TEMPLATE_PACK == 'bootstrap':
            error_position = html.find(
                '<span id="error_1_id_email" class="help-inline">')
            help_position = html.find(
                '<p id="hint_id_email" class="help-block">')
            self.assertTrue(error_position < help_position)
Example #5
0
    def test_form_show_errors(self):
        form = TestForm(
            {
                "email": "invalidemail",
                "first_name": "first_name_too_long",
                "last_name": "last_name_too_long",
                "password1": "yes",
                "password2": "yes",
            }
        )
        form.helper = FormHelper()
        form.helper.layout = Layout(
            AppendedText("email", "whatever"),
            PrependedText("first_name", "blabla"),
            AppendedPrependedText("last_name", "foo", "bar"),
            MultiField("legend", "password1", "password2"),
        )
        form.is_valid()

        form.helper.form_show_errors = True
        html = render_crispy_form(form)
        self.assertEqual(html.count("error"), 6)

        form.helper.form_show_errors = False
        html = render_crispy_form(form)
        self.assertEqual(html.count("error"), 0)
Example #6
0
    def test_appended_prepended_text(self):
        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {% crispy test_form %}
        """)

        test_form = TestForm()
        test_form.helper = FormHelper()
        test_form.helper.layout = Layout(
            AppendedPrependedText('email', '@', 'gmail.com'),
            AppendedText('password1', '#'),
            PrependedText('password2', '$'),
        )

        c = Context({
            'test_form': test_form,
        })
        html = template.render(c)

        # Check form parameters
        self.assertEqual(html.count('<span class="add-on ">@</span>'), 1)
        self.assertEqual(html.count('<span class="add-on ">gmail.com</span>'),
                         1)
        self.assertEqual(html.count('<span class="add-on ">#</span>'), 1)
        self.assertEqual(html.count('<span class="add-on ">$</span>'), 1)
Example #7
0
 def test_getitem_by_field_name(self):
     form = TestForm()
     form.helper = FormHelper(form)
     layout = Layout(Div("email"), "password1")
     form.helper.layout = layout
     form.helper["email"].wrap(Field, css_class="hero")
     self.assertTrue(isinstance(layout.fields[0].fields[0], Field))
Example #8
0
    def test_form_show_errors_non_field_errors(self):
        form = TestForm({"password1": "wargame", "password2": "god"})
        form.helper = FormHelper()
        form.helper.form_show_errors = True
        form.is_valid()

        template = get_template_from_string(
            u"""
            {% load crispy_forms_tags %}
            {% crispy testForm %}
        """
        )

        # First we render with errors
        c = Context({"testForm": form})
        html = template.render(c)

        # Ensure those errors were rendered
        self.assertTrue("<li>Passwords dont match</li>" in html)
        self.assertTrue(unicode(_("This field is required.")) in html)
        self.assertTrue("error" in html)

        # Now we render without errors
        form.helper.form_show_errors = False
        c = Context({"testForm": form})
        html = template.render(c)

        # Ensure errors were not rendered
        self.assertFalse("<li>Passwords dont match</li>" in html)
        self.assertFalse(unicode(_("This field is required.")) in html)
        self.assertFalse("error" in html)
Example #9
0
def new_test():
    form = TestForm()
    if form.validate_on_submit():
        test = Test(
            test_name=form.test_name.data,
            num_mc=form.num_mc.data,
            mc_answers=int(form.mc_answers.data),
            num_or=form.num_or.data,
            #or_points = int(form.or_points.data),
            num_students=form.num_students.data,
            #test_data = defaultGrid(form.num_mc.data, int(form.mc_answers.data), form.num_or.data, form.or_points.data,form.num_students.data),
            mc_data=mcDetails(form.num_mc.data, int(form.mc_answers.data)),
            or_data=orDetails(form.num_mc.data, form.num_or.data),
            student_data=studentDetails(form.num_students.data),
            added_by=session['email'])
        try:
            test.put()
            test_id = test.key.id()
            test = Test.get_by_id(test_id)
            mc_data = json.dumps(test.mc_data)
            or_data = json.dumps(test.or_data)
            student_data = json.dumps(test.student_data)
            flash(u'Test %s successfully saved.' % test_id, 'success')
            return render_template('test_details.html',
                                   test=Test.get_by_id(test_id),
                                   test_id=test_id,
                                   mc_data=mc_data,
                                   or_data=or_data,
                                   student_data=student_data)
        except CapabilityDisabledError:
            flash(u'App Engine Datastore is currently in read-only mode.',
                  'info')
            return redirect(url_for('list_tests'))
    return redirect(url_for('list_tests'))
Example #10
0
def tm(page=1):
    if g.user.role.name == ROLE_HEAD_OF_TACTICAL_LEVEL:
        is_om_answered_on_questions = ApplicationData.is_om_answered_on_questions()
        try:
            chosen_processes = UserChoice.user_choice_processes_by_role_id(g.user.role_id).paginate(page, 1, False)
        except NoResultFound:
            chosen_processes = []
        if is_om_answered_on_questions.status:
            current_process = chosen_processes.items[0]
            questions_by_process = Question.chosen_questions(current_process.id).all()
        else:
            current_process = None
            questions_by_process = []
        form = TestForm(questions=questions_by_process)
        is_tm_answered_on_questions = ApplicationData.is_tm_answered_on_questions()
        if form.validate_on_submit():
            if form.finish.data:
                page = chosen_processes.pages
                save_answers_to_db(form, g.user.role_id, current_process.id)
                if not is_tm_answered_on_questions.status:
                    is_tm_answered_on_questions.status = bool(not is_tm_answered_on_questions.status)
                    is_tm_answered_on_questions.update()
            if form.next_page.data:
                save_answers_to_db(form, g.user.role_id, current_process.id)
                page = chosen_processes.next_num
            return redirect(url_for('tm', page=page))
        html = render_template('roles/tm.html', form=form,
                               current_process=current_process,
                               is_om_answered_on_questions=is_om_answered_on_questions,
                               is_tm_answered_on_questions=is_tm_answered_on_questions,
                               processes=chosen_processes,
                               investment_level=UserChoice.user_choice_chosen_investment_level())
        return __make_tooltips(html)
    else:
        return u'Вы не можете получить доступ к этой странице'
Example #11
0
    def test_multiwidget_field(self):
        template = get_template_from_string(
            u"""
            {% load crispy_forms_tags %}
            {% crispy form %}
        """
        )

        test_form = TestForm()
        test_form.helper = FormHelper()
        test_form.helper.layout = Layout(
            MultiWidgetField(
                "datetime_field",
                attrs=({"rel": "test_dateinput"}, {"rel": "test_timeinput", "style": "width: 30px;", "type": "hidden"}),
            )
        )

        c = Context({"form": test_form})

        html = template.render(c)
        self.assertEqual(html.count('class="dateinput"'), 1)
        self.assertEqual(html.count('rel="test_dateinput"'), 1)
        self.assertEqual(html.count('rel="test_timeinput"'), 1)
        self.assertEqual(html.count('style="width: 30px;"'), 1)
        self.assertEqual(html.count('type="hidden"'), 1)
Example #12
0
    def test_field_with_buttons(self):
        form = TestForm()
        form.helper = FormHelper()
        form.helper.layout = Layout(
            FieldWithButtons(
                Field("password1", css_class="span4"),
                StrictButton("Go!", css_id="go-button"),
                StrictButton("No!", css_class="extra"),
                StrictButton("Test", type="submit", name="whatever", value="something"),
                css_class="extra",
                autocomplete="off",
            )
        )
        html = render_crispy_form(form)
        self.assertEqual(html.count('class="control-group extra"'), 1)
        self.assertEqual(html.count('autocomplete="off"'), 1)
        self.assertEqual(html.count('class="input-append"'), 1)
        self.assertEqual(html.count('class="span4'), 1)
        self.assertEqual(html.count('id="go-button"'), 1)
        self.assertEqual(html.count("Go!"), 1)
        self.assertEqual(html.count("No!"), 1)
        self.assertEqual(html.count('class="btn"'), 2)
        self.assertEqual(html.count('class="btn extra"'), 1)
        self.assertEqual(html.count('type="submit"'), 1)
        self.assertEqual(html.count('name="whatever"'), 1)
        self.assertEqual(html.count('value="something"'), 1)

        if settings.CRISPY_TEMPLATE_PACK == "bootstrap":
            # Make sure white spaces between buttons are there in bootstrap
            self.assertEqual(len(re.findall(r"</button> <", html)), 3)
Example #13
0
    def test_form_show_errors_non_field_errors(self):
        form = TestForm({'password1': 'wargame', 'password2': 'god'})
        form.helper = FormHelper()
        form.helper.form_show_errors = True
        form.is_valid()

        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {% crispy testForm %}
        """)

        # First we render with errors
        c = Context({'testForm': form})
        html = template.render(c)

        # Ensure those errors were rendered
        self.assertTrue('<li>Passwords dont match</li>' in html)
        self.assertTrue(unicode(_('This field is required.')) in html)
        self.assertTrue('error' in html)

        # Now we render without errors
        form.helper.form_show_errors = False
        c = Context({'testForm': form})
        html = template.render(c)

        # Ensure errors were not rendered
        self.assertFalse('<li>Passwords dont match</li>' in html)
        self.assertFalse(unicode(_('This field is required.')) in html)
        self.assertFalse('error' in html)
Example #14
0
    def test_form_show_errors_non_field_errors(self):
        form = TestForm({'password1': 'wargame', 'password2': 'god'})
        form.helper = FormHelper()
        form.helper.form_show_errors = True
        form.is_valid()

        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {% crispy testForm %}
        """)

        # First we render with errors
        c = Context({'testForm': form})
        html = template.render(c)

        # Ensure those errors were rendered
        self.assertTrue('<li>Passwords dont match</li>' in html)
        self.assertTrue(unicode(_('This field is required.')) in html)
        self.assertTrue('error' in html)

        # Now we render without errors
        form.helper.form_show_errors = False
        c = Context({'testForm': form})
        html = template.render(c)

        # Ensure errors were not rendered
        self.assertFalse('<li>Passwords dont match</li>' in html)
        self.assertFalse(unicode(_('This field is required.')) in html)
        self.assertFalse('error' in html)
Example #15
0
def home():

    form = TestForm()
    if form.validate_on_submit():
        name = form.name.data
        return render_template("home.html", form=form, name=name)
    return render_template("home.html", form=form, logout=users.create_logout_url(request.url))
Example #16
0
def new_test():
    form = TestForm()
    if form.validate_on_submit():
        test = Test(
            test_name=form.test_name.data,
            num_mc=form.num_mc.data,
            mc_answers = int(form.mc_answers.data),
            num_or=form.num_or.data,
            #or_points = int(form.or_points.data),
            num_students=form.num_students.data,
            #test_data = defaultGrid(form.num_mc.data, int(form.mc_answers.data), form.num_or.data, form.or_points.data,form.num_students.data),
            mc_data = mcDetails(form.num_mc.data, int(form.mc_answers.data)),
            or_data = orDetails(form.num_mc.data,form.num_or.data),
            student_data = studentDetails(form.num_students.data),
            added_by=session['email']
        )
        try:
            test.put()
            test_id = test.key.id()
            test = Test.get_by_id(test_id)
            mc_data = json.dumps(test.mc_data)
            or_data = json.dumps(test.or_data)
            student_data = json.dumps(test.student_data)
            flash(u'Test %s successfully saved.' % test_id, 'success')
            return render_template('test_details.html', test = Test.get_by_id(test_id), test_id = test_id, mc_data = mc_data, or_data = or_data, student_data = student_data)
        except CapabilityDisabledError:
            flash(u'App Engine Datastore is currently in read-only mode.', 'info')
            return redirect(url_for('list_tests'))
    return redirect(url_for('list_tests'))
Example #17
0
def cio(page=1):
    """
    Отображение страницы для CIO
    :param page: номер страницы (int)
    :return: html
    """
    # Проверяем полномочия пользователя (пользователь может просматривать страницы только по своему уровню доступа)
    if g.user.role.name == ROLE_HEAD_OF_BASE_LEVEL:
        # Получаем информацию о состоянии системы
        is_cso_choose_processes = ApplicationData.is_cso_choose_processes()
        # Получаем процессы, по которым должен пользователь пройти тестирование
        # метод paginate(page, count, error_out) возвращает список объектов в количестве count на страницу page
        # тем самым добиваемся того, что тестирование по 1 процессу является 1 страница
        try:
            chosen_processes = UserChoice.user_choice_processes_by_role_id(g.user.role_id).paginate(page, 1, False)
        except NoResultFound:
            chosen_processes = []
        if is_cso_choose_processes.status:
            # Определяем текущий процесс и список вопросов, которые нужно будет отрисовать на форме
            current_process = chosen_processes.items[0]
            questions_by_process = Question.chosen_questions(current_process.id).all()
        else:
            # Эта ветвь необходима для корректного завершения функции (например, когда тестирование не началось,
            # а CSO прошёл аутентификацию
            current_process = None
            questions_by_process = []
        # Создаём форму, в которую будут поступать ответы пользователя
        form = TestForm(questions=questions_by_process)
        is_cio_answered_on_questions = ApplicationData.is_cio_answered_on_questions()
        # Форма прошла валидацию и отправлена?
        if form.validate_on_submit():
            # Тестирование завершено?
            if form.finish.data:
                page = chosen_processes.pages
                # Сохраняем ответы в базу данных
                save_answers_to_db(form, g.user.role_id, current_process.id)
                if not is_cio_answered_on_questions.status:
                    # Изменяем параметр пройденности тестирования пользователя cio на обратное (False -> True)
                    is_cio_answered_on_questions.status = bool(not is_cio_answered_on_questions.status)
                    # Сохраняем параметр в базе данных
                    is_cio_answered_on_questions.update()
            # Если пользователю предстоит проходить тестирование по нескольким процессам,
            # и есть ещё процессы, на вопросы которых он не ответил,
            # то сохраняем ответы со страницы и изменяем номер страницы на 1
            if form.next_page.data:
                save_answers_to_db(form, g.user.role_id, current_process.id)
                page = chosen_processes.next_num
            # Перенаправление пользователя на новый номер страницы
            return redirect(url_for('cio', page=page))
        # Отрисовка страницы
        html = render_template('roles/cio.html', form=form,
                               current_process=current_process,
                               is_cso_choose_processes=is_cso_choose_processes,
                               is_cio_answered_on_questions=is_cio_answered_on_questions,
                               processes=chosen_processes,
                               investment_level=UserChoice.user_choice_chosen_investment_level())
        return __make_tooltips(html)
    else:
        return u'Вы не можете получить доступ к этой странице'
Example #18
0
 def test_exclude_by_widget(self):
     form = TestForm()
     form.helper = FormHelper(form)
     form.helper.layout = self.advanced_layout
     self.assertEqual(
         form.helper.exclude_by_widget(forms.PasswordInput).slice,
         [[[0, 0, 0, 0], "email"], [[0, 3, 0], "first_name"], [[1], "last_name"]],
     )
Example #19
0
 def test_filter_by_widget(self):
     form = TestForm()
     form.helper = FormHelper(form)
     form.helper.layout = self.advanced_layout
     self.assertEqual(form.helper.filter_by_widget(forms.PasswordInput).slice, [
         [[0, 1, 0, 0], 'password1'],
         [[0, 4, 0], 'password2'],
     ])
Example #20
0
    def test_attrs(self):
        form = TestForm()
        form.helper = FormHelper()
        form.helper.attrs = {'id': 'TestIdForm', 'autocomplete': "off"}
        html = render_crispy_form(form)

        self.assertTrue('autocomplete="off"' in html)
        self.assertTrue('id="TestIdForm"' in html)
Example #21
0
    def test_attrs(self):
        form = TestForm()
        form.helper = FormHelper()
        form.helper.attrs = {'id': 'TestIdForm', 'autocomplete': "off"}
        html = render_crispy_form(form)

        self.assertTrue('autocomplete="off"' in html)
        self.assertTrue('id="TestIdForm"' in html)
Example #22
0
 def test_filter_by_widget(self):
     form = TestForm()
     form.helper = FormHelper(form)
     layout = Layout(Div(Div(Div('email')), Div('password1'), 'password2'))
     form.helper.layout = layout
     form.helper.filter_by_widget(forms.PasswordInput).wrap(
         Field, css_class='hero')
     self.assertTrue(isinstance(layout.fields[0].fields[2], Field))
Example #23
0
 def test_filter_by_widget(self):
     form = TestForm()
     form.helper = FormHelper(form)
     form.helper.layout = self.advanced_layout
     self.assertEqual(form.helper.filter_by_widget(forms.PasswordInput).slice, [
         [[0, 1, 0, 0], 'password1'],
         [[0, 4, 0], 'password2'],
     ])
Example #24
0
 def test_exclude_by_widget(self):
     form = TestForm()
     form.helper = FormHelper(form)
     form.helper.layout = self.advanced_layout
     self.assertEqual(form.helper.exclude_by_widget(forms.PasswordInput).slice, [
         [[0, 0, 0, 0], 'email'],
         [[0, 3, 0], 'first_name'],
         [[1], 'last_name'],
     ])
Example #25
0
def test(user_id, step, reps=5):
    form = TestForm()
    test_image_urls = get_gesture_sequence(reps)
    data = form.data.data
    gesture = form.image.data.split('/')[-1].replace(
        '_', ' ').split('.')[0].strip()

    # Handle index out of range error
    if step >= len(test_image_urls):
        return redirect(
            url_for('.test', user_id=user_id, step=len(test_image_urls) - 1))

    tests_per_rep = int(len(test_image_urls) / reps)
    rep = math.ceil((step + 1) / tests_per_rep)

    # remove data with matching id, cal_id && gesture from database
    db.clear_existing_data({
        'subject_id': user_id,
        'gesture': gesture,
        'repetition': rep
    })

    if form.validate_on_submit():
        rows = []
        # insert data into database
        for count, item in enumerate(data):
            reading, timestamp = item
            timestamp = time.strftime(
                "%H:%M:%S.{}".format(str(timestamp).split('.')[-1]),
                time.localtime(timestamp))

            rows.append({
                'subject_id': user_id,
                'gesture': gesture,
                'repetition': rep,
                'reading_count': count,
                'readings': reading,
                'timestamp': timestamp
            })
        try:
            db.insert_data_repetition(rows)
        except Exception as identifier:
            sys.stderr.write(repr(identifier))
            flash('Could not insert into database, please try again.',
                  'danger')

        if step == len(test_image_urls) - 1:
            return redirect(url_for('.done'))
        else:
            return redirect(url_for('.test', user_id=user_id, step=step + 1))

    form.image.data = test_image_urls[step]
    form.data.data = None
    status_text = f'''Test: {int(step % tests_per_rep) + 1} / {tests_per_rep}
        Rep: {rep} / {reps}'''
    return render_template('test.html', form=form, status=status_text)
Example #26
0
def test(request):
    from forms import TestForm
    if request.method == 'POST':
        form = TestForm(request.POST)
        if form.is_valid():
            # code handle form and file data
            return render_to_response('test.html', {'form': form, 'succ': True})
    else:
        form = TestForm()
    return render_to_response('test.html', {'form': form})
Example #27
0
 def test_getitem_by_field_name(self):
     form = TestForm()
     form.helper = FormHelper(form)
     layout = Layout(
         Div('email'),
         'password1',
     )
     form.helper.layout = layout
     form.helper['email'].wrap(Field, css_class='hero')
     self.assertTrue(isinstance(layout.fields[0].fields[0], Field))
Example #28
0
 def test_getitem_by_field_name(self):
     form = TestForm()
     form.helper = FormHelper(form)
     layout = Layout(
         Div('email'),
         'password1',
     )
     form.helper.layout = layout
     form.helper['email'].wrap(Field, css_class='hero')
     self.assertTrue(isinstance(layout.fields[0].fields[0], Field))
Example #29
0
    def test_as_crispy_errors_form_without_non_field_errors(self):
        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {{ form|as_crispy_errors }}
        """)
        form = TestForm({'password1': "god", 'password2': "god"})
        form.is_valid()

        c = Context({'form': form})
        html = template.render(c)
        self.assertFalse("errorMsg" in html or "alert" in html)
Example #30
0
    def test_as_crispy_errors_form_without_non_field_errors(self):
        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {{ form|as_crispy_errors }}
        """)
        form = TestForm({'password1': "god", 'password2': "god"})
        form.is_valid()

        c = Context({'form': form})
        html = template.render(c)
        self.assertFalse("errorMsg" in html or "alert" in html)
Example #31
0
def insert_into_test (request) :
	if request.method == 'POST' :
		form = TestForm(request.POST)
		if form.is_valid() :
			c = connection.cursor()
			c.execute("insert into test VALUES(%s , %s)" , [form.cleaned_data['name'] , form.cleaned_data['cost']])
			c.close()
			
	else :
		form = TestForm ()
	
	return render(request, 'mani_tables/test_entry_form.html', {'form': form})
Example #32
0
    def test_html5_required(self):
        form = TestForm()
        form.helper = FormHelper()
        form.helper.html5_required = True
        html = render_crispy_form(form)
        # 6 out of 7 fields are required and an extra one for the SplitDateTimeWidget makes 7.
        self.assertEqual(html.count('required="required"'), 7)

        form = TestForm()
        form.helper = FormHelper()
        form.helper.html5_required = False
        html = render_crispy_form(form)
Example #33
0
 def test_exclude_by_widget_and_wrap(self):
     form = TestForm()
     form.helper = FormHelper(form)
     form.helper.layout = self.advanced_layout
     form.helper.exclude_by_widget(forms.PasswordInput).wrap(Field, css_class='hero')
     # Check wrapped fields
     self.assertTrue(isinstance(form.helper.layout[0][0][0][0], Field))
     self.assertTrue(isinstance(form.helper.layout[0][3][0], Field))
     self.assertTrue(isinstance(form.helper.layout[1], Field))
     # Check others stay the same
     self.assertTrue(isinstance(form.helper.layout[0][3][1], HTML))
     self.assertTrue(isinstance(form.helper.layout[0][1][0][0], basestring))
     self.assertTrue(isinstance(form.helper.layout[0][4][0], basestring))
Example #34
0
 def test_filter_by_widget(self):
     form = TestForm()
     form.helper = FormHelper(form)
     layout = Layout(
         Div(
             Div(Div('email')),
             Div('password1'),
             'password2'
         )
     )
     form.helper.layout = layout
     form.helper.filter_by_widget(forms.PasswordInput).wrap(Field, css_class='hero')
     self.assertTrue(isinstance(layout.fields[0].fields[2], Field))
Example #35
0
class MainHandler(web.RequestHandler):
    def initialize(self):
        self.form = TestForm(meta={'locale': self.locale})

    def get(self):
        return self.render('page.html', form=self.form)

    def post(self):
        # just mock the form processing
        # as it will always raise error
        self.form.process(data={'username': '******'})
        self.form.validate()
        return self.render('page.html', form=self.form)
Example #36
0
 def test_exclude_by_widget_and_wrap(self):
     form = TestForm()
     form.helper = FormHelper(form)
     form.helper.layout = self.advanced_layout
     form.helper.exclude_by_widget(forms.PasswordInput).wrap(Field, css_class='hero')
     # Check wrapped fields
     self.assertTrue(isinstance(form.helper.layout[0][0][0][0], Field))
     self.assertTrue(isinstance(form.helper.layout[0][3][0], Field))
     self.assertTrue(isinstance(form.helper.layout[1], Field))
     # Check others stay the same
     self.assertTrue(isinstance(form.helper.layout[0][3][1], HTML))
     self.assertTrue(isinstance(form.helper.layout[0][1][0][0], basestring))
     self.assertTrue(isinstance(form.helper.layout[0][4][0], basestring))
Example #37
0
    def test_i18n(self):
        template = get_template_from_string(
            u"""
            {% load crispy_forms_tags %}
            {% crispy form form.helper %}
        """
        )
        form = TestForm()
        form_helper = FormHelper()
        form_helper.layout = Layout(HTML(_("i18n text")), Fieldset(_("i18n legend"), "first_name", "last_name"))
        form.helper = form_helper

        html = template.render(Context({"form": form}))
        self.assertEqual(html.count("i18n legend"), 1)
Example #38
0
def edit_test(test_id):
    test = Test.get_by_id(test_id)
    form = TestForm(obj=test)
    if request.method == "POST":
        if form.validate_on_submit():
            test.test_name = form.data.get('test_name')
            test.num_mc = form.data.get('num_mc')
            test.num_or = form.data.get('num_or')
            #test.num_students = json.dumps(form.data.get('num_students'))
            test.num_students = form.data.get('num_students')
            test.put()
            flash(u'Test %s successfully saved.' % test_id, 'success')
            return redirect(url_for('list_tests'))
    return render_template('edit_test.html', test=test, form=form)
Example #39
0
def edit_test(test_id):
    test = Test.get_by_id(test_id)
    form = TestForm(obj=test)
    if request.method == "POST":
        if form.validate_on_submit():
            test.test_name = form.data.get('test_name')
            test.num_mc = form.data.get('num_mc')
            test.num_or = form.data.get('num_or')
            #test.num_students = json.dumps(form.data.get('num_students'))
            test.num_students = form.data.get('num_students')
            test.put()
            flash(u'Test %s successfully saved.' % test_id, 'success')
            return redirect(url_for('list_tests'))
    return render_template('edit_test.html', test=test, form=form)
Example #40
0
    def test_error_and_help_inline(self):
        form = TestForm({'email': 'invalidemail'})
        form.helper = FormHelper()
        form.helper.error_text_inline = False
        form.helper.help_text_inline = True
        form.helper.layout = Layout('email')
        form.is_valid()
        html = render_crispy_form(form)

        # Check that help goes before error, otherwise CSS won't work
        if settings.CRISPY_TEMPLATE_PACK == 'bootstrap':
            help_position = html.find('<span id="hint_id_email" class="help-inline">')
            error_position = html.find('<p id="error_1_id_email" class="help-block">')
            self.assertTrue(help_position < error_position)

        # Viceversa
        form = TestForm({'email': 'invalidemail'})
        form.helper = FormHelper()
        form.helper.error_text_inline = True
        form.helper.help_text_inline = False
        form.helper.layout = Layout('email')
        form.is_valid()
        html = render_crispy_form(form)

        # Check that error goes before help, otherwise CSS won't work
        if settings.CRISPY_TEMPLATE_PACK == 'bootstrap':
            error_position = html.find('<span id="error_1_id_email" class="help-inline">')
            help_position = html.find('<p id="hint_id_email" class="help-block">')
            self.assertTrue(error_position < help_position)
def test_form(request):
    layout = request.GET.get('layout')
    if not layout:
        layout = 'vertical'
    if request.method == 'POST':
        form = TestForm(request.POST)
        form.is_valid()
    else:
        form = TestForm()
    form.fields['title'].widget = BootstrapUneditableInput()
    return render_to_response('form.html', RequestContext(request, {
        'form': form,
        'layout': layout,
    }))
Example #42
0
    def test_error_text_inline(self):
        form = TestForm({'email': 'invalidemail'})
        form.helper = FormHelper()
        layout = Layout(
            AppendedText('first_name', 'wat'),
            PrependedText('email', '@'),
            AppendedPrependedText('last_name', '@', 'wat'),
        )
        form.helper.layout = layout
        form.is_valid()
        html = render_crispy_form(form)

        matches = re.findall('<span id="error_\d_\w*" class="help-inline"',
                             html, re.MULTILINE)
        self.assertEqual(len(matches), 3)

        form = TestForm({'email': 'invalidemail'})
        form.helper = FormHelper()
        form.helper.layout = layout
        form.helper.error_text_inline = False
        html = render_crispy_form(form)

        matches = re.findall('<p id="error_\d_\w*" class="help-block"', html,
                             re.MULTILINE)
        self.assertEqual(len(matches), 3)
Example #43
0
def demo_form_with_template(request):
    layout = request.GET.get('layout')
    if not layout:
        layout = 'vertical'
    if request.method == 'POST':
        form = TestForm(request.POST)
        form.is_valid()
    else:
        form = TestForm()
    modelform = TestModelForm()
    return render_to_response('form_using_template.html', RequestContext(request, {
        'form': form,
        'layout': layout,
    }))
Example #44
0
def tests():
    '''
    Testing options over the web GUI. Works only for hardcoded testsurvey at the moment.
    '''
    import requests
    from forms import TestForm

    form = TestForm()
    flash("test")
    if form.validate_on_submit():
        print("generate summary button pressed")  #debug
        r = requests.get('http://localhost:5000/smmrs/create/testsurvey')

    return render_template('tests.html', form=form, title='server tests')
Example #45
0
    def test_as_crispy_errors_form_with_non_field_errors(self):
        template = get_template_from_string(
            u"""
            {% load crispy_forms_tags %}
            {{ form|as_crispy_errors }}
        """
        )
        form = TestForm({"password1": "god", "password2": "wargame"})
        form.is_valid()

        c = Context({"form": form})
        html = template.render(c)
        self.assertTrue("errorMsg" in html or "alert" in html)
        self.assertTrue("<li>Passwords dont match</li>" in html)
        self.assertFalse("<h3>" in html)
Example #46
0
    def test_hidden_fields(self):
        form = TestForm()
        # All fields fake hidden
        for field in form.fields:
            form[field].field.widget.is_hidden = True

        form.helper = FormHelper()
        form.helper.layout = Layout(
            AppendedText('password1', 'foo'),
            PrependedText('password2', 'bar'),
            AppendedPrependedText('email', 'bar'),
            InlineCheckboxes('first_name'),
        )
        html = render_crispy_form(form)
        self.assertEqual(html.count("<input"), 4)
Example #47
0
    def test_hidden_fields(self):
        form = TestForm()
        # All fields fake hidden
        for field in form.fields:
            form[field].field.widget.is_hidden = True

        form.helper = FormHelper()
        form.helper.layout = Layout(
            AppendedText('password1', 'foo'),
            PrependedText('password2', 'bar'),
            AppendedPrependedText('email', 'bar'),
            InlineCheckboxes('first_name'),
        )
        html = render_crispy_form(form)
        self.assertEqual(html.count("<input"), 4)
Example #48
0
    def test_multifield_errors(self):
        form = TestForm({"email": "invalidemail", "password1": "yes", "password2": "yes"})
        form.helper = FormHelper()
        form.helper.layout = Layout(MultiField("legend", "email"))
        form.is_valid()

        form.helper.form_show_errors = True
        html = render_crispy_form(form)
        self.assertEqual(html.count("error"), 3)

        # Reset layout for avoiding side effects
        form.helper.layout = Layout(MultiField("legend", "email"))
        form.helper.form_show_errors = False
        html = render_crispy_form(form)
        self.assertEqual(html.count("error"), 0)
Example #49
0
    def test_change_layout_dynamically_delete_field(self):
        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {% crispy form form_helper %}
        """)

        form = TestForm()
        form_helper = FormHelper()
        form_helper.add_layout(
            Layout(
                Fieldset(
                    u'Company Data',
                    'is_company',
                    'email',
                    'password1',
                    'password2',
                    css_id="multifield_info",
                ), Column(
                    'first_name',
                    'last_name',
                    css_id="column_name",
                )))

        # We remove email field on the go
        # Layout needs to be adapted for the new form fields
        del form.fields['email']
        del form_helper.layout.fields[0].fields[1]

        c = Context({'form': form, 'form_helper': form_helper})
        html = template.render(c)
        self.assertFalse('email' in html)
Example #50
0
    def test_inputs(self):
        form_helper = FormHelper()
        submit = Submit('my-submit', 'Submit', css_class="button white")
        reset = Reset('my-reset', 'Reset')
        hidden = Hidden('my-hidden', 'Hidden')
        button = Button('my-button', 'Button')
        form_helper.add_input(submit)
        form_helper.add_input(reset)
        form_helper.add_input(hidden)
        form_helper.add_input(button)

        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {% crispy form form_helper %}
        """)
        c = Context({'form': TestForm(), 'form_helper': form_helper})
        html = template.render(c)

        self.assertTrue('button white' in html)
        self.assertTrue('submit submitButton' in html or 'btn' in html)
        self.assertTrue('id="submit-id-my-submit"' in html)

        self.assertTrue('reset resetButton' in html)
        self.assertTrue('id="reset-id-my-reset"' in html)

        self.assertTrue('name="my-hidden"' in html)

        self.assertTrue('button' in html)
        self.assertTrue('id="button-id-my-button"' in html)
Example #51
0
def create_test(request, project_id):
    """ Create a new Test.

    """
    project = get_object_or_404(Project, pk=project_id)
    form = TestForm(request.POST or None)
    if form.is_valid():
        new_test = form.save(commit=False) # returns unsaved instance
        new_test.project = project
        new_test.save() # real save to DB.
        messages.add_message(request, messages.SUCCESS, 'The test has been successfully created.')
        return redirect(details_project, project_id=project_id)
    return render_to_response('form.html',
                              {'form'    : form,
                               'project' : project},
                              context_instance=RequestContext(request))
Example #52
0
def audit_model():
    form = TestForm()
    if request.method == 'POST':

        labels = form.Labels.data
        labels = labels.replace(' ', '')
        labels = labels.split(',')
        target = form.Target.data
        zero_value = form.Zero_Value.data

        print("Type of zero value is ", type(zero_value))
        print(labels, target)
        filename = secure_filename(form.file.data.filename)
        form.file.data.save(os.path.join(app.config['UPLOAD_FOLDER'],
                                         filename))

        explanation_return = run_explanations(
            os.path.join(app.config['UPLOAD_FOLDER'], filename), labels,
            target, zero_value)

        if explanation_return == "target column error":
            flash("Target Column Error")
            return redirect(request.url)
            #return render_template('upload.html',title='Form Uploader',form=form)
        elif explanation_return == "zero value error":
            flash("Zero Value Error")
            return redirect(request.url)

        else:
            return render_template('explanation.html')

    return render_template('upload2.html', title='Form Uploader', form=form)
Example #53
0
def personal_stats(request, stats_id):
    key = request.GET.get('key', '')
    try:
        fg = FunctionalGroup.objects.get(abbreviation=key)
        if fg.metric_type == FunctionalGroup.TESTING:
            personal_stat = TestStats.objects.get(pk=stats_id)
            form = TestForm(instance=personal_stat)
        elif fg.metric_type == FunctionalGroup.DEVELOPMENT:
            personal_stat = InnovationStats.objects.get(pk=stats_id)
            form = InnovationForm(instance=personal_stat)
        elif fg.metric_type == FunctionalGroup.REQUIREMENTS:
            personal_stat = RequirementStats.objects.get(pk=stats_id)
            form = RequirementForm(instance=personal_stat)
        elif fg.metric_type == FunctionalGroup.LAB:
            personal_stat = LabStats.objects.get(pk=stats_id)
            form = LabForm(instance=personal_stat)
        else:
            raise ValueError("Fell through stat retrieval table")
    except Exception as e:
        print e
        messages.error(
            request,
            'Failed to load selected scorecard. Please email [email protected] for assistance.'
        )
        return redirect('personals:personals')

    context = RequestContext(request, {
        'personal_stat': personal_stat,
        'form': form
    })

    return render(request, 'personals/personal_stats.html', context)
Example #54
0
    def test_inputs(self):
        form_helper = FormHelper()
        submit = Submit('my-submit', 'Submit', css_class="button white")
        reset = Reset('my-reset', 'Reset')
        hidden = Hidden('my-hidden', 'Hidden')
        button = Button('my-button', 'Button')
        form_helper.add_input(submit)
        form_helper.add_input(reset)
        form_helper.add_input(hidden)
        form_helper.add_input(button)

        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {% crispy form form_helper %}
        """)
        c = Context({'form': TestForm(), 'form_helper': form_helper})
        html = template.render(c)

        self.assertTrue('button white' in html)
        self.assertTrue('id="submit-id-my-submit"' in html)
        self.assertTrue('id="reset-id-my-reset"' in html)
        self.assertTrue('name="my-hidden"' in html)
        self.assertTrue('id="button-id-my-button"' in html)

        if settings.CRISPY_TEMPLATE_PACK == 'uni_form':
            self.assertTrue('submit submitButton' in html)
            self.assertTrue('reset resetButton' in html)
            self.assertTrue('class="button"' in html)
        else:
            self.assertTrue('class="btn"' in html)
            self.assertTrue('btn btn-primary' in html)
            self.assertTrue('btn btn-inverse' in html)
            self.assertEqual(html.count('/>&zwnj;'), 4)
Example #55
0
    def test_second_layout_multifield_column_buttonholder_submit_div(self):
        form_helper = FormHelper()
        form_helper.add_layout(
            Layout(
                MultiField("Some company data",
                           'is_company',
                           'email',
                           css_id="multifield_info",
                           title="multifield_title",
                           multifield_test="123"),
                Column(
                    'first_name',
                    'last_name',
                    css_id="column_name",
                    css_class="columns",
                ),
                ButtonHolder(
                    Submit('Save the world',
                           '{{ value_var }}',
                           css_class='button white',
                           data_id='test',
                           data_name='test'), Submit('store',
                                                     'Store results')),
                Div('password1',
                    'password2',
                    css_id="custom-div",
                    css_class="customdivs",
                    test_markup="123")))

        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {% crispy form form_helper %}
        """)
        c = Context({
            'form': TestForm(),
            'form_helper': form_helper,
            'value_var': "Save"
        })
        html = template.render(c)

        self.assertTrue('multiField' in html)
        self.assertTrue('formColumn' in html)
        self.assertTrue('id="multifield_info"' in html)
        self.assertTrue('title="multifield_title"' in html)
        self.assertTrue('multifield-test="123"' in html)
        self.assertTrue('id="column_name"' in html)
        self.assertTrue('class="formColumn columns"' in html)
        self.assertTrue('class="buttonHolder">' in html)
        self.assertTrue('input type="submit"' in html)
        self.assertTrue('button white' in html)
        self.assertTrue('data-id="test"' in html)
        self.assertTrue('data-name="test"' in html)
        self.assertTrue('name="save-the-world"' in html)
        self.assertTrue('value="Save"' in html)
        self.assertTrue('name="store"' in html)
        self.assertTrue('value="Store results"' in html)
        self.assertTrue('id="custom-div"' in html)
        self.assertTrue('class="customdivs"' in html)
        self.assertTrue('test-markup="123"' in html)
Example #56
0
def personal_stats_edit(request, stats_id):
    key = request.GET.get('key', '')

    if request.method == 'POST':
        if key in ['QA', 'TE']:
            personal_stat = get_object_or_404(TestStats, pk=stats_id)
            form = TestForm(request.POST, instance=personal_stat)
        elif key == 'QI':
            personal_stat = get_object_or_404(InnovationStats, pk=stats_id)
            form = InnovationForm(request.POST, instance=personal_stat)
        elif key == 'RE':
            personal_stat = get_object_or_404(RequirementStats, pk=stats_id)
            form = RequirementForm(request.POST, instance=personal_stat)
        elif key == 'TL':
            personal_stat = get_object_or_404(LabStats, pk=stats_id)
            form = LabForm(request.POST, instance=personal_stat)

        if form.is_valid():
            personal_stat = form.save()
            if not personal_stat.updated:
                personal_stat.updated = True
                personal_stat.save()

            return redirect('personals:personals')
        else:
            messages.error(request, 'Correct errors in the form')
            context = RequestContext(request, {
                'personal_stat': personal_stat,
                'form': form
            })
            return render(request, 'personals/personal_stats.html', context)
    else:
        return redirect('personals:personals')
Example #57
0
def create_test(request, project_id):
    """ Create a new Test.

    """
    project = get_object_or_404(Project, pk=project_id)
    form = TestForm(request.POST or None)
    if form.is_valid():
        new_test = form.save(commit=False)  # returns unsaved instance
        new_test.project = project
        new_test.save()  # real save to DB.
        messages.add_message(request, messages.SUCCESS,
                             'The test has been successfully created.')
        return redirect(details_project, project_id=project_id)
    return render_to_response('form.html', {
        'form': form,
        'project': project
    },
                              context_instance=RequestContext(request))
Example #58
0
    def test_i18n(self):
        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {% crispy form form.helper %}
        """)
        form = TestForm()
        form_helper = FormHelper()
        form_helper.layout = Layout(
            HTML(_("i18n text")),
            Fieldset(
                _("i18n legend"),
                'first_name',
                'last_name',
            ))
        form.helper = form_helper

        html = template.render(Context({'form': form}))
        self.assertEqual(html.count('i18n legend'), 1)
Example #59
0
def uploadFile():
    form = TestForm()
    if request.method == 'POST':
        labels = form.Labels.data
        target = form.Target.data
        filename = secure_filename(form.file.data.filename)
        form.file.data.save(os.path.join(app.config['UPLOAD_FOLDER'],
                                         filename))
        return redirect(url_for('uploaded_file', filename=filename))
    return render_template('upload.html', title='Form Uploader', form=form)
Example #60
0
    def test_crispy_filter_with_form(self):
        template = get_template_from_string(u"""
            {% load crispy_forms_tags %}
            {{ form|crispy }}
        """)
        c = Context({'form': TestForm()})
        html = template.render(c)

        self.assertTrue("<td>" not in html)
        self.assertTrue("id_is_company" in html)