From ba9649f966e7bf9c1f0cea7fac2bb991beb600b5 Mon Sep 17 00:00:00 2001
From: Malcolm Tredinnick <malcolm.tredinnick@gmail.com>
Date: Tue, 13 Feb 2007 06:06:09 +0000
Subject: [PATCH] Fixed #3377 -- Fixed subtle infinite recursion bug in
 LazyDate objects. Thanks to brut.alll@gmail.com.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@4497 bcc190cf-cafb-0310-a4f2-bffc1f526a37
---
 AUTHORS                      | 1 +
 django/db/models/__init__.py | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/AUTHORS b/AUTHORS
index 61cdfad074..879110e776 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -57,6 +57,7 @@ answer newbie questions, and generally made Django that much better:
     Paul Bissex <http://e-scribe.com/>
     Simon Blanchard
     Andrew Brehaut <http://brehaut.net/blog>
+    brut.alll@gmail.com
     Jonathan Buchanan <jonathan.buchanan@gmail.com>
     Antonio Cavedoni <http://cavedoni.com/>
     C8E
diff --git a/django/db/models/__init__.py b/django/db/models/__init__.py
index 0308dd047a..47057e306f 100644
--- a/django/db/models/__init__.py
+++ b/django/db/models/__init__.py
@@ -50,4 +50,9 @@ class LazyDate(object):
         return (datetime.datetime.now() + self.delta).date()
 
     def __getattr__(self, attr):
+        if attr == 'delta':
+            # To fix ticket #3377. Note that normal access 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)