Author: russellm
Date: 2007-04-09 08:28:09 -0500 (Mon, 09 Apr 2007)
New Revision: 4985

Modified:
   django/trunk/django/contrib/auth/models.py
   django/trunk/django/db/models/__init__.py
   django/trunk/django/db/models/query.py
   django/trunk/docs/model-api.txt
Log:
Backwards-incompatible change -- Removed LazyDate helper class. To preserve 
existing functionality, query arguments can now be callable. Callable query 
arguments are evaluated with the query is evaluated.


Modified: django/trunk/django/contrib/auth/models.py
===================================================================
--- django/trunk/django/contrib/auth/models.py  2007-04-09 13:18:23 UTC (rev 
4984)
+++ django/trunk/django/contrib/auth/models.py  2007-04-09 13:28:09 UTC (rev 
4985)
@@ -98,8 +98,8 @@
     is_staff = models.BooleanField(_('staff status'), default=False, 
help_text=_("Designates whether the user can log into this admin site."))
     is_active = models.BooleanField(_('active'), default=True, 
help_text=_("Designates whether this user can log into the Django admin. 
Unselect this instead of deleting accounts."))
     is_superuser = models.BooleanField(_('superuser status'), default=False, 
help_text=_("Designates that this user has all permissions without explicitly 
assigning them."))
-    last_login = models.DateTimeField(_('last login'), 
default=models.LazyDate())
-    date_joined = models.DateTimeField(_('date joined'), 
default=models.LazyDate())
+    last_login = models.DateTimeField(_('last login'), 
default=datetime.datetime.now)
+    date_joined = models.DateTimeField(_('date joined'), 
default=datetime.datetime.now)
     groups = models.ManyToManyField(Group, verbose_name=_('groups'), 
blank=True,
         help_text=_("In addition to the permissions manually assigned, this 
user will also get all permissions granted to each group he/she is in."))
     user_permissions = models.ManyToManyField(Permission, verbose_name=_('user 
permissions'), blank=True, filter_interface=models.HORIZONTAL)

Modified: django/trunk/django/db/models/__init__.py
===================================================================
--- django/trunk/django/db/models/__init__.py   2007-04-09 13:18:23 UTC (rev 
4984)
+++ django/trunk/django/db/models/__init__.py   2007-04-09 13:28:09 UTC (rev 
4985)
@@ -27,32 +27,3 @@
         viewname = bits[0]
         return reverse(bits[0], None, *bits[1:3])
     return inner
-
-class LazyDate(object):
-    """
-    Use in limit_choices_to to compare the field to dates calculated at run 
time
-    instead of when the model is loaded.  For example::
-
-        ... limit_choices_to = {'date__gt' : models.LazyDate(days=-3)} ...
-
-    which will limit the choices to dates greater than three days ago.
-    """
-    def __init__(self, **kwargs):
-        self.delta = datetime.timedelta(**kwargs)
-
-    def __str__(self):
-        return str(self.__get_value__())
-
-    def __repr__(self):
-        return "<LazyDate: %s>" % self.delta
-
-    def __get_value__(self):
-        return (datetime.datetime.now() + self.delta).date()
-
-    def __getattr__(self, attr):
-        if attr == 'delta':
-            # To fix ticket #3377. Note that normal accesses to LazyDate.delta
-            # (after construction) will still work, because they don't go
-            # through __getattr__). This is mainly needed for unpickling.
-            raise AttributeError
-        return getattr(self.__get_value__(), attr)

Modified: django/trunk/django/db/models/query.py
===================================================================
--- django/trunk/django/db/models/query.py      2007-04-09 13:18:23 UTC (rev 
4984)
+++ django/trunk/django/db/models/query.py      2007-04-09 13:28:09 UTC (rev 
4985)
@@ -826,7 +826,9 @@
             # Interpret '__exact=None' as the sql '= NULL'; otherwise, reject
             # all uses of None as a query value.
             if lookup_type != 'exact':
-                raise ValueError, "Cannot use None as a query value"
+                raise ValueError, "Cannot use None as a query value"      
+        elif callable(value):
+            value = value()
 
         joins2, where2, params2 = lookup_inner(path, lookup_type, value, opts, 
opts.db_table, None)
         joins.update(joins2)

Modified: django/trunk/docs/model-api.txt
===================================================================
--- django/trunk/docs/model-api.txt     2007-04-09 13:18:23 UTC (rev 4984)
+++ django/trunk/docs/model-api.txt     2007-04-09 13:28:09 UTC (rev 4985)
@@ -734,10 +734,10 @@
     ``limit_choices_to``     A dictionary of lookup arguments and values (see
                              the `Database API reference`_) that limit the
                              available admin choices for this object. Use this
-                             with ``models.LazyDate`` to limit choices of 
objects
-                             by date. For example::
+                             with functions from the Python ``datetime`` 
module 
+                             to limit choices of objects by date. For example::
 
-                                limit_choices_to = {'pub_date__lte': 
models.LazyDate()}
+                                limit_choices_to = {'pub_date__lte': 
datetime.now}
 
                              only allows the choice of related objects with a
                              ``pub_date`` before the current date/time to be


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to