Ticket #15124: 15124.updated.patch

File 15124.updated.patch, 5.3 KB (added by Béres Botond, 12 years ago)

Combined and updated prev. patches to apply cleanly. Added doc entry to model fields

  • django/contrib/flatpages/models.py

    From c6de9aae64191232f6b81b31cd82dff159159210 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?B=C3=A9res=20Botond?= <botondus@gmail.com>
    Date: Fri, 2 Mar 2012 00:17:14 +0200
    Subject: [PATCH] Fixed patch to apply cleanly. Improved the changes to docs.
    
    ---
     django/contrib/flatpages/models.py                 |    6 ++++--
     django/db/models/fields/__init__.py                |    2 --
     docs/ref/models/fields.txt                         |    5 +++++
     docs/releases/1.4.txt                              |    6 ++++++
     tests/regressiontests/model_fields/tests.py        |    7 +++++++
     .../model_inheritance_regress/tests.py             |    4 ++--
     6 files changed, 24 insertions(+), 6 deletions(-)
    
    diff --git a/django/contrib/flatpages/models.py b/django/contrib/flatpages/models.py
    index 85873ac..8563418 100644
    a b class FlatPage(models.Model):  
    77    url = models.CharField(_('URL'), max_length=100, db_index=True)
    88    title = models.CharField(_('title'), max_length=200)
    99    content = models.TextField(_('content'), blank=True)
    10     enable_comments = models.BooleanField(_('enable comments'))
     10    enable_comments = models.BooleanField(_('enable comments'), default=False)
    1111    template_name = models.CharField(_('template name'), max_length=70, blank=True,
    1212        help_text=_("Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."))
    13     registration_required = models.BooleanField(_('registration required'), help_text=_("If this is checked, only logged-in users will be able to view the page."))
     13    registration_required = models.BooleanField(_('registration required'),
     14        help_text=_("If this is checked, only logged-in users will be able to view the page."),
     15        default=False)
    1416    sites = models.ManyToManyField(Site)
    1517
    1618    class Meta:
  • django/db/models/fields/__init__.py

    diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
    index 22546c2..666a390 100644
    a b class BooleanField(Field):  
    555555
    556556    def __init__(self, *args, **kwargs):
    557557        kwargs['blank'] = True
    558         if 'default' not in kwargs and not kwargs.get('null'):
    559             kwargs['default'] = False
    560558        Field.__init__(self, *args, **kwargs)
    561559
    562560    def get_internal_type(self):
  • docs/ref/models/fields.txt

    diff --git a/docs/ref/models/fields.txt b/docs/ref/models/fields.txt
    index e34da13..e5f9c80 100644
    a b If you need to accept :attr:`~Field.null` values then use  
    357357    would return their data as ``ints``, instead of true ``bools``.  See the
    358358    release notes for a complete description of the change.
    359359
     360.. versionchanged:: 1.4
     361    In previous versions of Django ``BooleanFields`` would have an implicit
     362    default value of ``False``. Now it defaults to ``None`` if there is
     363    no default specified.
     364
    360365``CharField``
    361366-------------
    362367
  • docs/releases/1.4.txt

    diff --git a/docs/releases/1.4.txt b/docs/releases/1.4.txt
    index 7b45f9e..f6ec185 100644
    a b The internals of the tag aren't part of the official stable API, but in the  
    10421042interests of full disclosure, the ``ExtendsNode.__init__`` definition has
    10431043changed which may break any custom tags that use this node class.
    10441044
     1045``BooleanField`` set to None when default value not specified
     1046~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     1047
     1048In previous versions of Django, a model's ``BooleanField`` would get ``False``
     1049value when no default was provided. Now ``None`` value is used.
     1050
    10451051Features deprecated in 1.4
    10461052==========================
    10471053
  • tests/regressiontests/model_fields/tests.py

    diff --git a/tests/regressiontests/model_fields/tests.py b/tests/regressiontests/model_fields/tests.py
    index 8fe67fb..3774990 100644
    a b class BooleanFieldTests(unittest.TestCase):  
    211211            select={'string_length': 'LENGTH(string)'})[0]
    212212        self.assertFalse(isinstance(b5.pk, bool))
    213213
     214    def test_null_default(self):
     215        # http://code.djangoproject.com/ticket/15124
     216        from django.db import IntegrityError
     217        b = BooleanModel()
     218        self.assertEqual(b.bfield, None)
     219        self.assertRaises(IntegrityError, b.save)
     220
    214221class ChoicesTests(test.TestCase):
    215222    def test_choices_and_field_display(self):
    216223        """
  • tests/regressiontests/model_inheritance_regress/tests.py

    diff --git a/tests/regressiontests/model_inheritance_regress/tests.py b/tests/regressiontests/model_inheritance_regress/tests.py
    index 8e2c56b..752386a 100644
    a b class ModelInheritanceTest(TestCase):  
    180180        """
    181181        Regression test for #6755
    182182        """
    183         r = Restaurant(serves_pizza=False)
     183        r = Restaurant(serves_pizza=False, serves_hot_dogs=False)
    184184        r.save()
    185185        self.assertEqual(r.id, r.place_ptr_id)
    186186        orig_id = r.id
    187         r = Restaurant(place_ptr_id=orig_id, serves_pizza=True)
     187        r = Restaurant(place_ptr_id=orig_id, serves_pizza=True, serves_hot_dogs=False)
    188188        r.save()
    189189        self.assertEqual(r.id, orig_id)
    190190        self.assertEqual(r.id, r.place_ptr_id)
Back to Top