Files
i2p.www/i2p2www/urls.py

111 lines
4.9 KiB
Python
Raw Normal View History

2012-12-19 21:30:06 +00:00
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
2014-02-13 20:58:13 +00:00
lazy_views = {}
2012-12-19 21:30:06 +00:00
def url(url_rule, import_name, **options):
2014-02-13 20:58:13 +00:00
if import_name in lazy_views:
view = lazy_views[import_name]
else:
view = LazyView('i2p2www.' + import_name)
lazy_views[import_name] = view
2012-12-19 21:30:06 +00:00
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')
2015-11-10 08:15:11 +00:00
url('/spec', 'spec.views.spec_index')
url('/spec/<string:name>', 'spec.views.spec_show')
url('/spec/<string:name>.txt', 'spec.views.spec_show_txt')
2016-04-03 11:30:29 +00:00
url('/spec/proposals', 'spec.views.proposal_index')
url('/spec/proposals/<int:number>', 'spec.views.proposal_number')
2016-04-03 11:30:29 +00:00
url('/spec/proposals/<string:name>', 'spec.views.proposal_show')
url('/spec/proposals/<string:name>.txt', 'spec.views.proposal_show_txt')
2015-11-10 08:15:11 +00:00
2013-08-11 13:05:05 +00:00
url('/<lang:lang>/papers/', 'anonbib.views.papers_list')
2013-08-11 14:34:40 +00:00
url('/<lang:lang>/papers/bibtex', 'anonbib.views.papers_bibtex')
url('/<lang:lang>/papers/by-<string:choice>', 'anonbib.views.papers_list')
2013-08-11 14:34:40 +00:00
url('/<lang:lang>/papers/tag/<string:tag>/', 'anonbib.views.papers_list')
url('/<lang:lang>/papers/tag/<string:tag>/bibtex', 'anonbib.views.papers_bibtex')
url('/<lang:lang>/papers/tag/<string:tag>/by-<string:choice>', 'anonbib.views.papers_list')
2013-08-11 13:05:05 +00:00
2012-12-19 21:30:06 +00:00
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/category/<string:category>', 'blog.views.blog_index', defaults={'page': 1})
url('/<lang:lang>/blog/category/<string:category>/page/<int:page>', 'blog.views.blog_index')
2013-01-09 00:32:32 +00:00
url('/<lang:lang>/blog/post/<path:slug>', 'blog.views.blog_post')
2012-12-19 21:30:06 +00:00
url('/<lang:lang>/feed/blog/rss', 'blog.views.blog_rss')
url('/<lang:lang>/feed/blog/atom', 'blog.views.blog_atom')
2013-02-03 02:53:58 +00:00
url('/<lang:lang>/feed/blog/category/<string:category>/atom', 'blog.views.blog_atom')
2015-05-28 21:48:16 +00:00
url('/b/<string:shortlink>', 'blog.views.blog_post_shortlink')
2012-12-19 21:30:06 +00:00
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')
2013-07-18 04:40:31 +00:00
url('/<lang:lang>/download/debian', 'downloads.downloads_debian')
2019-01-13 19:37:44 +00:00
url('/<lang:lang>/download/firefox', 'downloads.downloads_firefox')
url('/<lang:lang>/download/lab', 'downloads.downloads_lab')
url('/<lang:lang>/download/<string:version>/<path:file>/mirrors', 'downloads.downloads_select')
2015-06-24 12:19:51 +00:00
url('/<lang:lang>/download/<string:version>/<string:net>/any/<path:file>/download', 'downloads.downloads_redirect', defaults={'protocol': None, 'domain': None})
url('/<lang:lang>/download/<string:version>/<string:net>/<string:protocol>/any/<path:file>/download', 'downloads.downloads_redirect', defaults={'domain': None})
url('/<lang:lang>/download/<string:version>/<string:net>/<string:protocol>/<string:domain>/<path:file>/download', 'downloads.downloads_redirect')
2012-12-19 21:30:06 +00:00
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('/release-<string:version>_<lang:lang>', 'legacy.legacy_release')
url('/release-<string:version>_<lang:lang>.html', 'legacy.legacy_release')
url('/release-<string:version>/', 'legacy.legacy_release')
url('/release-<string:version>.html', 'legacy.legacy_release')
2012-12-19 21:30:06 +00:00
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')
2013-08-29 01:30:32 +00:00
url('/<string:f>.txt', 'legacy.legacy_show')
2012-12-19 21:30:06 +00:00
url('/hosts.txt', 'views.hosts')
url('/robots.txt', 'views.robots')
url('/favicon.ico', 'views.favicon')
url('/googleadcf8b9c9f4ff24f.html', 'views.google')
2013-03-01 21:52:52 +00:00
url('/BingSiteAuth.xml', 'views.bing')
url('/sitemap_index.xml', 'sitemap.render_sitemap_index')
url('/<lang:lang>/sitemap.xml', 'sitemap.render_sitemap')