urlpatterns = decorate( use_primary_db, [ re_path(r'^$', views.index, name='devhub.index'), re_path(r'', include(redirect_patterns)), # Redirect people who have /addons/ instead of /addon/. re_path(r'^addons/\d+/.*', lambda r: redirect(r.path.replace('addons', 'addon', 1))), # Add-on submission re_path( r'^addon/submit/(?:1)?$', lambda r: redirect('devhub.submit.agreement', permanent=True), ), re_path( r'^addon/submit/agreement$', views.submit_addon, name='devhub.submit.agreement', ), re_path( r'^addon/submit/distribution$', views.submit_addon_distribution, name='devhub.submit.distribution', ), re_path( r'^addon/submit/upload-(?P<channel>listed|unlisted)$', views.submit_addon_upload, name='devhub.submit.upload', ), re_path( r'^addon/submit/wizard-(?P<channel>listed|unlisted)$', views.submit_addon_theme_wizard, name='devhub.submit.wizard', ), # Submission API re_path( r'^addon/agreement/$', views.api_key_agreement, name='devhub.api_key_agreement', ), re_path(r'^addon/api/key/$', views.api_key, name='devhub.api_key'), # Standalone validator: re_path(r'^addon/validate/?$', views.validate_addon, name='devhub.validate_addon'), # Redirect to /addons/ at the base. re_path(r'^addon$', lambda r: redirect('devhub.addons', permanent=True)), re_path(r'^addons$', views.dashboard, name='devhub.addons'), re_path(r'^themes$', views.dashboard, name='devhub.themes', kwargs={'theme': True}), re_path(r'^feed$', views.feed, name='devhub.feed_all'), # TODO: not necessary when devhub homepage is moved out of remora re_path(r'^feed/all$', lambda r: redirect('devhub.feed_all', permanent=True)), re_path(r'^feed/%s$' % ADDON_ID, views.feed, name='devhub.feed'), re_path(r'^upload$', views.upload, name='devhub.upload'), re_path( r'^upload/unlisted$', partial(views.upload, channel='unlisted'), name='devhub.upload_unlisted', ), re_path( r'^upload/([^/]+)(?:/([^/]+))?$', views.upload_detail, name='devhub.upload_detail', ), re_path( r'^standalone-upload$', partial(views.upload, is_standalone=True), name='devhub.standalone_upload', ), re_path( r'^standalone-upload-unlisted$', partial(views.upload, is_standalone=True, channel='unlisted'), name='devhub.standalone_upload_unlisted', ), re_path( r'^standalone-upload/([^/]+)$', views.standalone_upload_detail, name='devhub.standalone_upload_detail', ), # URLs for a single add-on. re_path(r'^addon/%s/' % ADDON_ID, include(detail_patterns)), re_path(r'^ajax/addon/%s/' % ADDON_ID, include(ajax_patterns)), # Old LWT Theme submission. re_path( r'^theme/submit/?$', lambda r: redirect('devhub.submit.agreement'), name='devhub.themes.submit', ), # Add-on SDK page re_path(r'builder$', lambda r: redirect(views.MDN_BASE)), # Developer docs re_path(r'docs/(?P<doc_name>[-_\w]+(?:/[-_\w]+)?)?$', views.docs, name='devhub.docs'), # logout page re_path(r'^logout', views.logout, name='devhub.logout'), ], )
urlpatterns = decorate( write, patterns( '', url('^$', views.index, name='devhub.index'), url('', include(redirect_patterns)), # Redirect people who have /addons/ instead of /addon/. ('^addons/\d+/.*', lambda r: redirect(r.path.replace('addons', 'addon', 1))), # Add-on submission url('^addon/submit/(?:1)?$', lambda r: redirect('devhub.submit.agreement', permanent=True)), url('^addon/submit/agreement$', views.submit_addon, name='devhub.submit.agreement'), url('^addon/submit/distribution$', views.submit_addon_distribution, name='devhub.submit.distribution'), url('^addon/submit/upload-(?P<channel>listed|unlisted)$', views.submit_addon_upload, name='devhub.submit.upload'), # Submission API url('^addon/agreement/$', views.api_key_agreement, name='devhub.api_key_agreement'), url('^addon/api/key/$', views.api_key, name='devhub.api_key'), # Standalone validator: url('^addon/validate/?$', views.validate_addon, name='devhub.validate_addon'), # Standalone compatibility checker: url('^addon/check-compatibility$', views.check_addon_compatibility, name='devhub.check_addon_compatibility'), url(r'^addon/check-compatibility/application_versions\.json$', views.compat_application_versions, name='devhub.compat_application_versions'), # Redirect to /addons/ at the base. url('^addon$', lambda r: redirect('devhub.addons', permanent=True)), url('^addons$', views.dashboard, name='devhub.addons'), url('^themes$', views.dashboard, name='devhub.themes', kwargs={'theme': True}), url('^feed$', views.feed, name='devhub.feed_all'), # TODO: not necessary when devhub homepage is moved out of remora url('^feed/all$', lambda r: redirect('devhub.feed_all', permanent=True)), url('^feed/%s$' % ADDON_ID, views.feed, name='devhub.feed'), url('^upload$', views.upload, name='devhub.upload'), url('^upload/unlisted$', partial(views.upload, channel='unlisted'), name='devhub.upload_unlisted'), url('^upload/([^/]+)(?:/([^/]+))?$', views.upload_detail, name='devhub.upload_detail'), url('^standalone-upload$', partial(views.upload, is_standalone=True), name='devhub.standalone_upload'), url('^standalone-upload-unlisted$', partial(views.upload, is_standalone=True, channel='unlisted'), name='devhub.standalone_upload_unlisted'), url('^standalone-upload/([^/]+)$', views.standalone_upload_detail, name='devhub.standalone_upload_detail'), # URLs for a single add-on. url('^addon/%s/' % ADDON_ID, include(detail_patterns)), url('^ajax/addon/%s/' % ADDON_ID, include(ajax_patterns)), # Themes submission. url('^theme/submit/?$', views.submit_theme, name='devhub.themes.submit'), url('^theme/%s/submit/done$' % ADDON_ID, views.submit_theme_done, name='devhub.themes.submit.done'), url( '^theme/submit/upload/' '(?P<upload_type>persona_header|persona_footer)$', views.ajax_upload_image, name='devhub.personas.upload_persona'), url('^theme/%s/' % ADDON_ID, include(theme_detail_patterns)), # Add-on SDK page url('builder$', lambda r: redirect(views.MDN_BASE)), # Developer docs url('docs/(?P<doc_name>[-_\w]+(?:/[-_\w]+)?)?$', views.docs, name='devhub.docs'), ))
urlpatterns = decorate(use_primary_db, [ url('^$', views.index, name='devhub.index'), url('', include(redirect_patterns)), # Redirect people who have /addons/ instead of /addon/. url('^addons/\d+/.*', lambda r: redirect(r.path.replace('addons', 'addon', 1))), # Add-on submission url('^addon/submit/(?:1)?$', lambda r: redirect('devhub.submit.agreement', permanent=True)), url('^addon/submit/agreement$', views.submit_addon, name='devhub.submit.agreement'), url('^addon/submit/distribution$', views.submit_addon_distribution, name='devhub.submit.distribution'), url('^addon/submit/upload-(?P<channel>listed|unlisted)$', views.submit_addon_upload, name='devhub.submit.upload'), url('^addon/submit/wizard-(?P<channel>listed|unlisted)$', views.submit_addon_theme_wizard, name='devhub.submit.wizard'), # Submission API url('^addon/agreement/$', views.api_key_agreement, name='devhub.api_key_agreement'), url('^addon/api/key/$', views.api_key, name='devhub.api_key'), # Standalone validator: url('^addon/validate/?$', views.validate_addon, name='devhub.validate_addon'), # Standalone compatibility checker: url('^addon/check-compatibility$', views.check_addon_compatibility, name='devhub.check_addon_compatibility'), url(r'^addon/check-compatibility/application_versions\.json$', views.compat_application_versions, name='devhub.compat_application_versions'), # Redirect to /addons/ at the base. url('^addon$', lambda r: redirect('devhub.addons', permanent=True)), url('^addons$', views.dashboard, name='devhub.addons'), url('^themes$', views.dashboard, name='devhub.themes', kwargs={'theme': True}), url('^feed$', views.feed, name='devhub.feed_all'), # TODO: not necessary when devhub homepage is moved out of remora url('^feed/all$', lambda r: redirect('devhub.feed_all', permanent=True)), url('^feed/%s$' % ADDON_ID, views.feed, name='devhub.feed'), url('^upload$', views.upload, name='devhub.upload'), url('^upload/unlisted$', partial(views.upload, channel='unlisted'), name='devhub.upload_unlisted'), url('^upload/([^/]+)(?:/([^/]+))?$', views.upload_detail, name='devhub.upload_detail'), url('^standalone-upload$', partial(views.upload, is_standalone=True), name='devhub.standalone_upload'), url('^standalone-upload-unlisted$', partial(views.upload, is_standalone=True, channel='unlisted'), name='devhub.standalone_upload_unlisted'), url('^standalone-upload/([^/]+)$', views.standalone_upload_detail, name='devhub.standalone_upload_detail'), # URLs for a single add-on. url('^addon/%s/' % ADDON_ID, include(detail_patterns)), url('^ajax/addon/%s/' % ADDON_ID, include(ajax_patterns)), # Themes submission. url('^theme/submit/?$', views.submit_theme, name='devhub.themes.submit'), url('^theme/%s/submit/done$' % ADDON_ID, views.submit_theme_done, name='devhub.themes.submit.done'), url('^theme/submit/upload/' '(?P<upload_type>persona_header)$', views.ajax_upload_image, name='devhub.personas.upload_persona'), url('^theme/%s/' % ADDON_ID, include(theme_detail_patterns)), # Add-on SDK page url('builder$', lambda r: redirect(views.MDN_BASE)), # Developer docs url('docs/(?P<doc_name>[-_\w]+(?:/[-_\w]+)?)?$', views.docs, name='devhub.docs'), ])