Code

Ticket #1840: admin-doc-views.diff

File admin-doc-views.diff, 2.7 KB (added by dummy@…, 8 years ago)

this maybe a solution

Line 
1Index: django/contrib/admin/views/decorators.py
2===================================================================
3--- django/contrib/admin/views/decorators.py    (Revision 3577)
4+++ django/contrib/admin/views/decorators.py    (Arbeitskopie)
5@@ -104,5 +104,6 @@
6                         return http.HttpResponseRedirect(request.path)
7             else:
8                 return _display_login_form(request, ERROR_MESSAGE)
9+    _checklogin._decorated_func = view_func
10 
11     return _checklogin
12Index: django/contrib/admin/views/doc.py
13===================================================================
14--- django/contrib/admin/views/doc.py   (Revision 3577)
15+++ django/contrib/admin/views/doc.py   (Arbeitskopie)
16@@ -320,6 +320,19 @@
17 def get_readable_field_data_type(field):
18     return DATA_TYPE_MAPPING[field.get_internal_type()] % field.__dict__
19 
20+def undecorate(func, i=0):
21+    try:
22+        if i > 10:
23+            print "Warning: endless looping !"
24+            return func
25+
26+        if func != func._decorated_func:
27+            func = undecorate(func._decorated_func,i+1)
28+    except:
29+        pass
30+
31+    return func
32+
33 def extract_views_from_urlpatterns(urlpatterns, base=''):
34     """
35     Return a list of views from a list of urlpatterns.
36@@ -328,9 +341,9 @@
37     """
38     views = []
39     for p in urlpatterns:
40-        if hasattr(p, 'get_callback'):
41+        if hasattr(p, '_get_callback'):
42             try:
43-                views.append((p.get_callback(), base + p.regex.pattern))
44+                views.append((undecorate(p._get_callback()), base + p.regex.pattern))
45             except ViewDoesNotExist:
46                 continue
47         elif hasattr(p, '_get_url_patterns'):
48Index: django/contrib/auth/decorators.py
49===================================================================
50--- django/contrib/auth/decorators.py   (Revision 3577)
51+++ django/contrib/auth/decorators.py   (Arbeitskopie)
52@@ -15,8 +15,10 @@
53             return HttpResponseRedirect('%s?%s=%s' % (login_url, REDIRECT_FIELD_NAME, quote(request.get_full_path())))
54         _checklogin.__doc__ = view_func.__doc__
55         _checklogin.__dict__ = view_func.__dict__
56+        _checklogin._decorated_func = view_func
57 
58         return _checklogin
59+
60     return _dec
61 
62 login_required = user_passes_test(lambda u: u.is_authenticated())
63Index: django/views/decorators/cache.py
64===================================================================
65--- django/views/decorators/cache.py    (Revision 3577)
66+++ django/views/decorators/cache.py    (Arbeitskopie)
67@@ -39,4 +39,6 @@
68         response = view_func(request, *args, **kwargs)
69         add_never_cache_headers(response)
70         return response
71+    _wrapped_view_func._decorated_func = view_func
72+
73     return _wrapped_view_func