Split off urls
This commit is contained in:
@ -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)
|
||||
|
70
i2p2www/urls.py
Normal file
70
i2p2www/urls.py
Normal file
@ -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')
|
Reference in New Issue
Block a user