A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/django/django/commit/0cc350a896f70ace18280410eb616a9197d862b0 below:

[1.4.x] Added a default limit to the maximum number of forms in a for… · django/django@0cc350a · GitHub

1 1

# -*- coding: utf-8 -*-

2 -

from django.forms import Form, CharField, IntegerField, ValidationError, DateField

2 +

from django.forms import Form, CharField, IntegerField, ValidationError, DateField, formsets

3 3

from django.forms.formsets import formset_factory, BaseFormSet

4 4

from django.test import TestCase

5 5

@@ -47,7 +47,7 @@ def test_basic_formset(self):

47 47

# for adding data. By default, it displays 1 blank form. It can display more,

48 48

# but we'll look at how to do so later.

49 49

formset = ChoiceFormSet(auto_id=False, prefix='choices')

50 -

self.assertHTMLEqual(str(formset), """<input type="hidden" name="choices-TOTAL_FORMS" value="1" /><input type="hidden" name="choices-INITIAL_FORMS" value="0" /><input type="hidden" name="choices-MAX_NUM_FORMS" />

50 +

self.assertHTMLEqual(str(formset), """<input type="hidden" name="choices-TOTAL_FORMS" value="1" /><input type="hidden" name="choices-INITIAL_FORMS" value="0" /><input type="hidden" name="choices-MAX_NUM_FORMS" value="1000" />

51 51

<tr><th>Choice:</th><td><input type="text" name="choices-0-choice" /></td></tr>

52 52

<tr><th>Votes:</th><td><input type="text" name="choices-0-votes" /></td></tr>""")

53 53

@@ -650,8 +650,8 @@ def test_limiting_max_forms(self):

650 650

# Limiting the maximum number of forms ########################################

651 651

# Base case for max_num.

652 652 653 -

# When not passed, max_num will take its default value of None, i.e. unlimited

654 -

# number of forms, only controlled by the value of the extra parameter.

653 +

# When not passed, max_num will take a high default value, leaving the

654 +

# number of forms only controlled by the value of the extra parameter.

655 655 656 656

LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=3)

657 657

formset = LimitedFavoriteDrinkFormSet()

@@ -698,8 +698,8 @@ def test_limiting_max_forms(self):

698 698

def test_max_num_with_initial_data(self):

699 699

# max_num with initial data

700 700 701 -

# When not passed, max_num will take its default value of None, i.e. unlimited

702 -

# number of forms, only controlled by the values of the initial and extra

701 +

# When not passed, max_num will take a high default value, leaving the

702 +

# number of forms only controlled by the value of the initial and extra

703 703

# parameters.

704 704 705 705

initial = [

@@ -844,6 +844,64 @@ def test_formset_nonzero(self):

844 844

self.assertEqual(len(formset.forms), 0)

845 845

self.assertTrue(formset)

846 846 847 +

def test_hard_limit_on_instantiated_forms(self):

848 +

"""A formset has a hard limit on the number of forms instantiated."""

849 +

# reduce the default limit of 1000 temporarily for testing

850 +

_old_DEFAULT_MAX_NUM = formsets.DEFAULT_MAX_NUM

851 +

try:

852 +

formsets.DEFAULT_MAX_NUM = 3

853 +

ChoiceFormSet = formset_factory(Choice)

854 +

# someone fiddles with the mgmt form data...

855 +

formset = ChoiceFormSet(

856 +

{

857 +

'choices-TOTAL_FORMS': '4',

858 +

'choices-INITIAL_FORMS': '0',

859 +

'choices-MAX_NUM_FORMS': '4',

860 +

'choices-0-choice': 'Zero',

861 +

'choices-0-votes': '0',

862 +

'choices-1-choice': 'One',

863 +

'choices-1-votes': '1',

864 +

'choices-2-choice': 'Two',

865 +

'choices-2-votes': '2',

866 +

'choices-3-choice': 'Three',

867 +

'choices-3-votes': '3',

868 +

},

869 +

prefix='choices',

870 +

)

871 +

# But we still only instantiate 3 forms

872 +

self.assertEqual(len(formset.forms), 3)

873 +

finally:

874 +

formsets.DEFAULT_MAX_NUM = _old_DEFAULT_MAX_NUM

875 + 876 +

def test_increase_hard_limit(self):

877 +

"""Can increase the built-in forms limit via a higher max_num."""

878 +

# reduce the default limit of 1000 temporarily for testing

879 +

_old_DEFAULT_MAX_NUM = formsets.DEFAULT_MAX_NUM

880 +

try:

881 +

formsets.DEFAULT_MAX_NUM = 3

882 +

# for this form, we want a limit of 4

883 +

ChoiceFormSet = formset_factory(Choice, max_num=4)

884 +

formset = ChoiceFormSet(

885 +

{

886 +

'choices-TOTAL_FORMS': '4',

887 +

'choices-INITIAL_FORMS': '0',

888 +

'choices-MAX_NUM_FORMS': '4',

889 +

'choices-0-choice': 'Zero',

890 +

'choices-0-votes': '0',

891 +

'choices-1-choice': 'One',

892 +

'choices-1-votes': '1',

893 +

'choices-2-choice': 'Two',

894 +

'choices-2-votes': '2',

895 +

'choices-3-choice': 'Three',

896 +

'choices-3-votes': '3',

897 +

},

898 +

prefix='choices',

899 +

)

900 +

# This time four forms are instantiated

901 +

self.assertEqual(len(formset.forms), 4)

902 +

finally:

903 +

formsets.DEFAULT_MAX_NUM = _old_DEFAULT_MAX_NUM

904 + 847 905 848 906

data = {

849 907

'choices-TOTAL_FORMS': '1', # the number of forms rendered


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4