from django.conf import settings from django.conf.urls.defaults import * from reviewboard.reviews.models import ReviewRequest, Group from reviewboard.reviews.feeds import RssReviewsFeed, AtomReviewsFeed from reviewboard.reviews.feeds import RssSubmitterReviewsFeed from reviewboard.reviews.feeds import AtomSubmitterReviewsFeed from reviewboard.reviews.feeds import RssGroupReviewsFeed from reviewboard.reviews.feeds import AtomGroupReviewsFeed import os.path rss_feeds = { 'reviews': RssReviewsFeed, 'users': RssSubmitterReviewsFeed, 'groups': RssGroupReviewsFeed, } atom_feeds = { 'reviews': AtomReviewsFeed, 'users': AtomSubmitterReviewsFeed, 'groups': AtomGroupReviewsFeed, } urlpatterns = patterns('', (r'^admin/', include('django.contrib.admin.urls')), (r'^$', 'django.views.generic.simple.redirect_to', {'url': '/reviews/'}), # Review request browsing (r'^reviews/$', 'reviewboard.reviews.views.dashboard', {'template_name': 'reviews/dashboard.html'}), (r'^reviews/all/$', 'reviewboard.reviews.views.review_list', {'queryset': ReviewRequest.objects.filter(public=True, status='P'), 'template_name': 'reviews/review_list.html'}), # Review request creation (r'^reviews/new/changenum/$', 'reviewboard.reviews.views.new_from_changenum'), (r'^reviews/new/$', 'reviewboard.reviews.views.new_review_request'), # Review request detail (r'^reviews/(?P[0-9]+)/$', 'reviewboard.reviews.views.review_detail', {'template_name': 'reviews/review_detail.html'}), # Review request diffs (r'^reviews/(?P[0-9]+)/diff/$', 'reviewboard.reviews.views.diff'), (r'^reviews/(?P[0-9]+)/diff/(?P[0-9]+)/$', 'reviewboard.reviews.views.diff'), (r'^reviews/(?P[0-9]+)/diff/(?P[0-9]+)/fragment/(?P[0-9]+)/$', 'reviewboard.reviews.views.diff_fragment'), # Review request drafts (r'^reviews/(?P[0-9]+)/draft/save/$', 'reviewboard.reviews.views.save_draft'), (r'^reviews/(?P[0-9]+)/draft/revert/$', 'reviewboard.reviews.views.revert_draft'), # Review request modification (r'^reviews/(?P[0-9]+)/edit/$', 'django.views.generic.create_update.update_object', {'model': ReviewRequest, 'template_name': 'reviews/edit_details.html'}), (r'^reviews/[0-9]+/diff/upload/$', 'reviewboard.diffviewer.views.upload', {'donepath': 'done/%s/'}), (r'^reviews/(?P[0-9]+)/diff/upload/done/(?P[0-9]+)/$', 'reviewboard.reviews.views.upload_diff_done'), (r'^reviews/(?P[0-9]+)/publish/$', 'reviewboard.reviews.views.publish'), (r'^reviews/(?P[0-9]+)/(?P(discard|submitted|reopen))/$', 'reviewboard.reviews.views.setstatus'), # Review request replies (r'^reviews/(?P[0-9]+)/reply/(?P[0-9]+)/comments/$', 'reviewboard.reviews.views.reply_comments'), (r'^reviews/(?P[0-9]+)/reply/(?P[0-9]+)/save/$', 'reviewboard.reviews.views.reply_save'), (r'^reviews/(?P[0-9]+)/reply/(?P[0-9]+)/delete/$', 'reviewboard.reviews.views.reply_delete'), (r'^reviews/(?P[0-9]+)/reply/(?P[0-9]+)/publish/$', 'reviewboard.reviews.views.reply_publish'), # Review request JSON/XML handlers (r'^reviews/(?P[0-9]+)/(?P(json|xml))/(?P[A-Za-z0-9_-]+)/$', 'reviewboard.reviews.views.review_request_field'), (r'^reviews/(?P[0-9]+)/(?P(json|xml))/$', 'reviewboard.reviews.views.review_request_field'), # Comments (r'^reviews/(?P[0-9]+)/diff/comments/(?P[0-9]+)/(?P[0-9]+)/$', 'reviewboard.reviews.views.comments'), (r'^reviews/(?P[0-9]+)/diff/(?P[0-9]+)/comments/(?P[0-9]+)/(?P[0-9]+)/$', 'reviewboard.reviews.views.comments'), # Users (r'^users/$', 'reviewboard.reviews.views.submitter_list', {'template_name': 'reviews/submitter_list.html'}), (r'^users/(?P[A-Za-z0-9_-]+)/$', 'reviewboard.reviews.views.submitter', {'template_name': 'reviews/review_list.html'}), # Groups (r'^groups/$', 'reviewboard.reviews.views.group_list', {'template_name': 'reviews/group_list.html'}), (r'^groups/(?P[A-Za-z0-9_-]+)/$', 'reviewboard.reviews.views.group', {'template_name': 'reviews/review_list.html'}), # Feeds (r'^feeds/rss/(?P.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': rss_feeds}), (r'^feeds/atom/(?P.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': atom_feeds}), # Authentication and accounts (r'^account/login/$', 'djblets.auth.views.login', {'next_page': '/reviews/'}), (r'^account/logout/$', 'django.contrib.auth.views.logout', {'next_page': settings.LOGIN_URL}), (r'^account/preferences/$', 'reviewboard.accounts.views.user_preferences',), ) if settings.BUILTIN_AUTH: urlpatterns += patterns('', (r'^account/register/$', 'djblets.auth.views.register', {'next_page': '/reviews/'}), ) # Add static media if running in DEBUG mode if settings.DEBUG: def htdocs_path(leaf): return os.path.join(settings.HTDOCS_ROOT, leaf) urlpatterns += patterns('', (r'^css/(?P.*)$', 'django.views.static.serve', { 'show_indexes': True, 'document_root': htdocs_path('css'), }), (r'^images/(?P.*)$', 'django.views.static.serve', { 'show_indexes': True, 'document_root': htdocs_path('images'), }), (r'^scripts/(?P.*)$', 'django.views.static.serve', { 'show_indexes': True, 'document_root': htdocs_path('scripts') }), )