changeset 312:86d6732b522a

Cleaner code for the special pages' views.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 05 Oct 2014 07:38:34 -0700
parents 1c25cb99859f
children edefa7e66e31
files wikked/views/special.py
diffstat 1 files changed, 31 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
--- a/wikked/views/special.py	Sun Oct 05 07:37:44 2014 -0700
+++ b/wikked/views/special.py	Sun Oct 05 07:38:34 2014 -0700
@@ -7,29 +7,6 @@
 from wikked.web import app, get_wiki
 
 
-def orphans_filter_func(page):
-    for link in page.getIncomingLinks():
-        return False
-    return True
-
-
-def broken_redirects_filter_func(page):
-    redirect_meta = page.getMeta('redirect')
-    if redirect_meta is None:
-        return False
-
-    path = get_absolute_url(page.url, redirect_meta)
-    try:
-        target, visited = get_redirect_target(
-                path,
-                fields=['url', 'meta'])
-    except CircularRedirectError:
-        return True
-    except RedirectNotFound:
-        return True
-    return False
-
-
 def generic_pagelist_view(list_name, filter_func):
     pages = get_or_build_pagelist(
             list_name,
@@ -42,13 +19,41 @@
 
 @app.route('/api/orphans')
 def api_special_orphans():
-    return generic_pagelist_view('orphans', orphans_filter_func)
+    def filter_func(page):
+        for link in page.getIncomingLinks():
+            return False
+        return True
+
+    return generic_pagelist_view('orphans', filter_func)
 
 
 @app.route('/api/broken-redirects')
 def api_special_broken_redirects():
-    return generic_pagelist_view('broken_redirects',
-                                 broken_redirects_filter_func)
+    def filter_func(page):
+        redirect_meta = page.getMeta('redirect')
+        if redirect_meta is None:
+            return False
+
+        path = get_absolute_url(page.url, redirect_meta)
+        try:
+            target, visited = get_redirect_target(
+                    path,
+                    fields=['url', 'meta'])
+        except CircularRedirectError:
+            return True
+        except RedirectNotFound:
+            return True
+        return False
+
+    return generic_pagelist_view('broken_redirects', filter_func)
+
+
+@app.route('/api/dead-ends')
+def api_special_dead_ends():
+    def filter_func(page):
+        return len(page.links) == 0
+
+    return generic_pagelist_view('dead_ends', filter_func)
 
 
 @app.route('/api/search')