From d633b4a704844b30570176206532be7787a2c37d Mon Sep 17 00:00:00 2001
From: str4d <str4d@mail.i2p>
Date: Wed, 19 Dec 2012 21:30:06 +0000
Subject: [PATCH] Split off urls

---
 i2p2www/__init__.py | 70 +--------------------------------------------
 i2p2www/urls.py     | 70 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 71 insertions(+), 69 deletions(-)
 create mode 100644 i2p2www/urls.py

diff --git a/i2p2www/__init__.py b/i2p2www/__init__.py
index 1f2d07f39..1bb725c26 100644
--- a/i2p2www/__init__.py
+++ b/i2p2www/__init__.py
@@ -1,12 +1,9 @@
 from flask import Flask, request, g, redirect, url_for, abort, render_template, send_from_directory, safe_join
 from flaskext.babel import Babel
-from werkzeug.routing import BaseConverter
 from docutils.core import publish_parts
 import os.path
 import os
 
-from helpers import LazyView, Pagination
-
 CURRENT_I2P_VERSION = '0.9.4'
 
 CANONICAL_DOMAIN = 'www.i2p2.de'
@@ -27,72 +24,6 @@ app.debug =  bool(os.environ.get('APP_DEBUG', 'False'))
 babel = Babel(app)
 
 
-#######################
-# Custom URL converters
-
-class LangConverter(BaseConverter):
-    def __init__(self, url_map):
-        super(LangConverter, self).__init__(url_map)
-        self.regex = '(?:[a-z]{2})(-[a-z]{2})?'
-
-    def to_python(self, value):
-        parts = value.split('-')
-        if len(parts) == 2:
-            return parts[0] + '_' + parts[1].upper()
-        return value
-
-    def to_url(self, value):
-        parts = value.split('_')
-        if len(parts) == 2:
-            return parts[0] + '-' + parts[1].lower()
-        return value
-
-app.url_map.converters['lang'] = LangConverter
-
-
-######
-# URLs
-
-def url(url_rule, import_name, **options):
-    view = LazyView('i2p2www.' + import_name)
-    app.add_url_rule(url_rule, view_func=view, **options)
-
-url('/', 'views.main_index')
-url('/<lang:lang>/', 'views.site_show', defaults={'page': 'index'})
-url('/<lang:lang>/<path:page>', 'views.site_show')
-
-url('/<lang:lang>/blog/', 'blog.views.blog_index', defaults={'page': 1})
-url('/<lang:lang>/blog/page/<int:page>', 'blog.views.blog_index')
-url('/<lang:lang>/blog/entry/<path:slug>', 'blog.views.blog_entry')
-url('/<lang:lang>/feed/blog/rss', 'blog.views.blog_rss')
-url('/<lang:lang>/feed/blog/atom', 'blog.views.blog_atom')
-
-url('/<lang:lang>/meetings/', 'meetings.views.meetings_index', defaults={'page': 1})
-url('/<lang:lang>/meetings/page/<int:page>', 'meetings.views.meetings_index')
-url('/<lang:lang>/meetings/<int:id>', 'meetings.views.meetings_show')
-url('/<lang:lang>/meetings/<int:id>.log', 'meetings.views.meetings_show_log')
-url('/<lang:lang>/meetings/<int:id>.rst', 'meetings.views.meetings_show_rst')
-url('/<lang:lang>/feed/meetings/atom', 'meetings.views.meetings_atom')
-
-url('/<lang:lang>/download', 'downloads.downloads_list')
-url('/<lang:lang>/download/<path:file>', 'downloads.downloads_select')
-url('/download/<string:protocol>/any/<path:file>', 'downloads.downloads_redirect', defaults={'mirror': None})
-url('/download/<string:protocol>/<int:mirror>/<path:file>', 'downloads.downloads_redirect')
-
-url('/meeting<int:id>', 'legacy.legacy_meeting')
-url('/meeting<int:id>.html', 'legacy.legacy_meeting')
-url('/status-<int:year>-<int:month>-<int:day>', 'legacy.legacy_status')
-url('/status-<int:year>-<int:month>-<int:day>.html', 'legacy.legacy_status')
-url('/<string:f>_<lang:lang>', 'legacy.legacy_show')
-url('/<string:f>_<lang:lang>.html', 'legacy.legacy_show')
-url('/<string:f>/', 'legacy.legacy_show')
-url('/<string:f>.html', 'legacy.legacy_show')
-
-url('/hosts.txt', 'views.hosts')
-url('/robots.txt', 'views.robots')
-url('/favicon.ico', 'views.favicon')
-
-
 #################
 # Babel selectors
 
@@ -195,6 +126,7 @@ def server_error(error):
 
 # Import these to ensure they get loaded
 import templatevars
+import urls
 
 if __name__ == '__main__':
     app.run(debug=True)
diff --git a/i2p2www/urls.py b/i2p2www/urls.py
new file mode 100644
index 000000000..84ed409dd
--- /dev/null
+++ b/i2p2www/urls.py
@@ -0,0 +1,70 @@
+from werkzeug.routing import BaseConverter
+
+from i2p2www import app
+from i2p2www.helpers import LazyView
+
+
+#######################
+# Custom URL converters
+
+class LangConverter(BaseConverter):
+    def __init__(self, url_map):
+        super(LangConverter, self).__init__(url_map)
+        self.regex = '(?:[a-z]{2})(-[a-z]{2})?'
+
+    def to_python(self, value):
+        parts = value.split('-')
+        if len(parts) == 2:
+            return parts[0] + '_' + parts[1].upper()
+        return value
+
+    def to_url(self, value):
+        parts = value.split('_')
+        if len(parts) == 2:
+            return parts[0] + '-' + parts[1].lower()
+        return value
+
+app.url_map.converters['lang'] = LangConverter
+
+
+######
+# URLs
+
+def url(url_rule, import_name, **options):
+    view = LazyView('i2p2www.' + import_name)
+    app.add_url_rule(url_rule, view_func=view, **options)
+
+url('/', 'views.main_index')
+url('/<lang:lang>/', 'views.site_show', defaults={'page': 'index'})
+url('/<lang:lang>/<path:page>', 'views.site_show')
+
+url('/<lang:lang>/blog/', 'blog.views.blog_index', defaults={'page': 1})
+url('/<lang:lang>/blog/page/<int:page>', 'blog.views.blog_index')
+url('/<lang:lang>/blog/entry/<path:slug>', 'blog.views.blog_entry')
+url('/<lang:lang>/feed/blog/rss', 'blog.views.blog_rss')
+url('/<lang:lang>/feed/blog/atom', 'blog.views.blog_atom')
+
+url('/<lang:lang>/meetings/', 'meetings.views.meetings_index', defaults={'page': 1})
+url('/<lang:lang>/meetings/page/<int:page>', 'meetings.views.meetings_index')
+url('/<lang:lang>/meetings/<int:id>', 'meetings.views.meetings_show')
+url('/<lang:lang>/meetings/<int:id>.log', 'meetings.views.meetings_show_log')
+url('/<lang:lang>/meetings/<int:id>.rst', 'meetings.views.meetings_show_rst')
+url('/<lang:lang>/feed/meetings/atom', 'meetings.views.meetings_atom')
+
+url('/<lang:lang>/download', 'downloads.downloads_list')
+url('/<lang:lang>/download/<path:file>', 'downloads.downloads_select')
+url('/download/<string:protocol>/any/<path:file>', 'downloads.downloads_redirect', defaults={'mirror': None})
+url('/download/<string:protocol>/<int:mirror>/<path:file>', 'downloads.downloads_redirect')
+
+url('/meeting<int:id>', 'legacy.legacy_meeting')
+url('/meeting<int:id>.html', 'legacy.legacy_meeting')
+url('/status-<int:year>-<int:month>-<int:day>', 'legacy.legacy_status')
+url('/status-<int:year>-<int:month>-<int:day>.html', 'legacy.legacy_status')
+url('/<string:f>_<lang:lang>', 'legacy.legacy_show')
+url('/<string:f>_<lang:lang>.html', 'legacy.legacy_show')
+url('/<string:f>/', 'legacy.legacy_show')
+url('/<string:f>.html', 'legacy.legacy_show')
+
+url('/hosts.txt', 'views.hosts')
+url('/robots.txt', 'views.robots')
+url('/favicon.ico', 'views.favicon')
-- 
GitLab