Django サイト (OSQA) をセットアップしようとしていますが、機能しません。
いくつかの問題があり、そのうちの 1 つは、ユーザーのプロファイルを表示しようとしたときに、次の例外が発生したことです。
誰かが問題の可能性がある場所を指摘できますか?
TemplateSyntaxError at /users/2/allenq/
Caught NoReverseMatch while rendering: Reverse for 'ask_to_me' with arguments '(2, u'allenq')' and keyword arguments '{}' not found.
Request Method: GET
Request URL: http://123.243.100.125/users/2/allenq/
Django Version: 1.3.4
Exception Type: TemplateSyntaxError
Exception Value:
Caught NoReverseMatch while rendering: Reverse for 'ask_to_me' with arguments '(2, u'allenq')' and keyword arguments '{}' not found.
Exception Location: /usr/lib/python2.6/site-packages/django/template/defaulttags.py in render, line 450
Python Executable: /usr/bin/python
Python Version: 2.6.6
Python Path:
['/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg',
'/usr/lib/python2.6/site-packages/elementtree-1.2.7_20070827_preview-py2.6.egg',
'/usr/lib/python2.6/site-packages/Markdown-2.2.0-py2.6.egg',
'/usr/lib/python2.6/site-packages/html5lib-0.95-py2.6.egg',
'/usr/lib/python2.6/site-packages/django_rosetta-0.6.8-py2.6.egg',
'/usr/lib64/python26.zip',
'/usr/lib64/python2.6',
'/usr/lib64/python2.6/plat-linux2',
'/usr/lib64/python2.6/lib-tk',
'/usr/lib64/python2.6/lib-old',
'/usr/lib64/python2.6/lib-dynload',
'/usr/lib64/python2.6/site-packages',
'/usr/lib64/python2.6/site-packages/PIL',
'/usr/lib64/python2.6/site-packages/gst-0.10',
'/usr/lib64/python2.6/site-packages/gtk-2.0',
'/usr/lib64/python2.6/site-packages/webkit-1.0',
'/usr/lib/python2.6/site-packages',
'/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info',
'/usr/local/src',
'/usr/local/src/osqa',
'/usr/local/src/osqa/forum/markdownext']
Server time: ???, 24 ?? 2012 22:58:23 +1100
Template error
In template /usr/local/src/osqa/forum/skins/default/templates/users/info.html, error at line 31
Caught NoReverseMatch while rendering: Reverse for 'ask_to_me' with arguments '(2, u'allenq')' and keyword arguments '{}' not found.
21 </tr>
22 <tr>
23 <td align="center">
24 {% if not view_user.is_suspended %}
25 <div class="scoreNumber" id="user-reputation">{{view_user.reputation|intcomma}}</div>
26 <p><b style="color:#777;">{% trans "reputation" %}</b></p>
27 {% else %}
28 <div class="scoreNumber">{% trans "Suspended" %}</div>
29 <p>{{ view_user.suspension.extra.publicmsg }}</p>
30 {% endif %}
31 <div class="scoreNumber" id="user-reputation"><a href="{% url ask_to_me view_user.id view_user.username%}">{% trans "Ask to me" %}</a></div>
32 </td>
33 </tr>
34 </table>
35 </td>
36 <td width="360" style="vertical-align: top;">
37 {% if can_view_private %}{% user_menu request.user view_user %}{% endif %}
38 <table class="user-details">
39 <tr>
40 <th colspan="2" align="left"><h3>{% trans "Registered user" %}</h3></th>
41 </tr>
Traceback Switch to copy-and-paste view
/usr/lib/python2.6/site-packages/django/core/handlers/base.py in get_response
response = callback(request, *callback_args, **callback_kwargs) ...
? Local vars
/usr/local/src/osqa/forum/modules/decorators.py in decorated
return decoratable(*args, **kwargs) ...
? Local vars
/usr/local/src/osqa/forum/modules/decorators.py in __call__
res = dec(res, *args, **kwargs) ...
? Local vars
/usr/local/src/osqa/forum/views/users.py in result
return render_to_response(template, context, context_instance=RequestContext(request)) ...
? Local vars
/usr/lib/python2.6/site-packages/django/shortcuts/__init__.py in render_to_response
return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/loader.py in render_to_string
return t.render(context_instance) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in render
return self._render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in _render
return self.nodelist.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in render
bits.append(self.render_node(node, context)) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/debug.py in render_node
result = node.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/loader_tags.py in render
return compiled_parent._render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in _render
return self.nodelist.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in render
bits.append(self.render_node(node, context)) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/debug.py in render_node
result = node.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/loader_tags.py in render
return compiled_parent._render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in _render
return self.nodelist.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in render
bits.append(self.render_node(node, context)) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/debug.py in render_node
result = node.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/loader_tags.py in render
result = block.nodelist.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in render
bits.append(self.render_node(node, context)) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/debug.py in render_node
result = node.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/loader_tags.py in render
result = block.nodelist.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in render
bits.append(self.render_node(node, context)) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/debug.py in render_node
result = node.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/loader_tags.py in render
return self.render_template(self.template, context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/loader_tags.py in render_template
output = template.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in render
return self._render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in _render
return self.nodelist.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/base.py in render
bits.append(self.render_node(node, context)) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/debug.py in render_node
result = node.render(context) ...
? Local vars
/usr/lib/python2.6/site-packages/django/template/defaulttags.py in render
raise e ...
? Local vars
Request information
GET
No GET data
POST
No POST data
FILES
No FILES data
COOKIES
Variable Value
sessionid
'1e7a11ca5a8631425ad03fd4973e57dc'
META
Variable Value
mod_wsgi.listener_port
'80'
HTTP_COOKIE
'sessionid=1e7a11ca5a8631425ad03fd4973e57dc'
mod_wsgi.listener_host
''
SERVER_SOFTWARE
'Apache/2.2.15 (CentOS)'
SCRIPT_NAME
u''
mod_wsgi.handler_script
''
SERVER_SIGNATURE
'<address>Apache/2.2.15 (CentOS) Server at 123.243.100.125 Port 80</address>\n'
REQUEST_METHOD
'GET'
PATH_INFO
u'/users/2/allenq/'
SERVER_PROTOCOL
'HTTP/1.1'
QUERY_STRING
''
HTTP_ACCEPT_CHARSET
'ISO-8859-1,utf-8;q=0.7,*;q=0.3'
HTTP_USER_AGENT
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4'
HTTP_CONNECTION
'keep-alive'
HTTP_REFERER
'http://123.243.100.125/questions/unanswered/'
SERVER_NAME
'123.243.100.125'
REMOTE_ADDR
'123.243.100.125'
mod_wsgi.request_handler
'wsgi-script'
wsgi.url_scheme
'http'
PATH_TRANSLATED
'/usr/local/src/osqa/osqa.wsgi/users/2/allenq/'
SERVER_PORT
'80'
wsgi.multiprocess
False
mod_wsgi.input_chunked
'0'
SERVER_ADDR
'192.168.0.10'
DOCUMENT_ROOT
'/usr/local/src/osqa/forum'
mod_wsgi.process_group
'osqa'
SCRIPT_FILENAME
'/usr/local/src/osqa/osqa.wsgi'
SERVER_ADMIN
'admin@your.server.com'
wsgi.input
<mod_wsgi.Input object at 0x7f1d982f5670>
HTTP_HOST
'123.243.100.125'
wsgi.multithread
True
mod_wsgi.callable_object
'application'
REQUEST_URI
'/users/2/allenq/'
HTTP_ACCEPT
'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
wsgi.version
(1, 1)
GATEWAY_INTERFACE
'CGI/1.1'
wsgi.run_once
False
wsgi.errors
<mod_wsgi.Log object at 0x7f1d982f5af0>
REMOTE_PORT
'11611'
HTTP_ACCEPT_LANGUAGE
'en-GB,en-US;q=0.8,en;q=0.6'
mod_wsgi.version
(3, 2)
mod_wsgi.application_group
'localhost.localdomain|'
mod_wsgi.script_reloading
'1'
wsgi.file_wrapper
''
HTTP_ACCEPT_ENCODING
'gzip,deflate,sdch'
Settings
Using settings module osqa.settings
Setting Value
USE_L10N
False
USE_THOUSAND_SEPARATOR
False
APP_PROTOCOL
'http'
LANGUAGE_CODE
'zh_CN'
ROOT_URLCONF
'urls'
MANAGERS
()
APP_URL
'http://127.0.0.1'
DEFAULT_CHARSET
'utf-8'
APP_DOMAIN
'127.0.0.1'
STATIC_ROOT
''
TEST_DATABASE_CHARSET
None
LOG_FILENAME
'django.osqa.log'
MESSAGE_STORAGE
'django.contrib.messages.storage.user_messages.LegacyFallbackStorage'
DATABASE_HOST
'127.0.0.1'
IGNORABLE_404_STARTS
('/cgi-bin/', '/_vti_bin', '/_vti_inf')
SEND_BROKEN_LINK_EMAILS
False
URL_VALIDATOR_USER_AGENT
'Django/1.3.4 (http://www.djangoproject.com)'
STATICFILES_FINDERS
('django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder')
SESSION_COOKIE_DOMAIN
None
SESSION_COOKIE_NAME
'sessionid'
ADMIN_FOR
()
TIME_INPUT_FORMATS
('%H:%M:%S', '%H:%M')
DATABASES
{'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2',
'HOST': '127.0.0.1',
'NAME': 'osqa',
'OPTIONS': {},
'PASSWORD': '********************',
'PORT': '',
'TEST_CHARSET': None,
'TEST_COLLATION': None,
'TEST_MIRROR': None,
'TEST_NAME': None,
'TIME_ZONE': 'Australia/Melbourne',
'USER': 'uosqa'}}
TEST_DATABASE_NAME
None
FILE_UPLOAD_PERMISSIONS
None
FILE_UPLOAD_HANDLERS
('django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler')
DEFAULT_CONTENT_TYPE
'text/html'
OSQA_DEFAULT_SKIN
'default'
APPEND_SLASH
True
FIRST_DAY_OF_WEEK
0
DATABASE_ROUTERS
[]
YEAR_MONTH_FORMAT
'F Y'
STATICFILES_STORAGE
'django.contrib.staticfiles.storage.StaticFilesStorage'
CACHES
{'default': {'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/usr/local/src/osqa/cache'}}
MODULES_FOLDER
'/usr/local/src/osqa/forum_modules'
SERVER_EMAIL
USE_I18N
True
THOUSAND_SEPARATOR
','
SECRET_KEY
'********************'
LANGUAGE_COOKIE_NAME
'django_language'
FILE_UPLOAD_TEMP_DIR
'/usr/local/src/osqa/tmp'
TRANSACTIONS_MANAGED
False
LOGGING_CONFIG
'django.utils.log.dictConfig'
TEMPLATE_LOADERS
['django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
'forum.modules.template_loader.module_templates_loader',
'forum.skins.load_template_source']
TEMPLATE_DEBUG
True
CSRF_COOKIE_NAME
'csrftoken'
TEST_DATABASE_COLLATION
None
EMAIL_HOST_PASSWORD
'********************'
CACHE_BACKEND
'file:///usr/local/src/osqa/cache'
SESSION_COOKIE_SECURE
False
CSRF_COOKIE_DOMAIN
None
FILE_CHARSET
'utf-8'
DEBUG
True
MODULES_PACKAGE
'forum_modules'
SESSION_FILE_PATH
None
DEFAULT_FILE_STORAGE
'django.core.files.storage.FileSystemStorage'
INSTALLED_APPS
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'django.contrib.humanize',
'django.contrib.sitemaps',
'django.contrib.markup',
'forum']
LANGUAGES
(('ar', 'Arabic'),
('az', 'Azerbaijani'),
('zh-cn', 'Simplified Chinese'),
('zh-tw', 'Traditional Chinese'))
DATABASE_ENGINE
'postgresql_psycopg2'
DATABASE_NAME
'osqa'
COMMENTS_FIRST_FEW
0
PREPEND_WWW
False
SESSION_COOKIE_HTTPONLY
False
DATABASE_PORT
''
DEBUG_PROPAGATE_EXCEPTIONS
False
MONTH_DAY_FORMAT
'F j'
LOGIN_URL
'/accounts/login/'
SESSION_EXPIRE_AT_BROWSER_CLOSE
False
TIME_FORMAT
'P'
DATE_INPUT_FORMATS
('%Y-%m-%d',
'%d %B, %Y')
AUTHENTICATION_BACKENDS
['django.contrib.auth.backends.ModelBackend']
FORCE_SCRIPT_NAME
''
PASSWORD_RESET_TIMEOUT_DAYS
'********************'
CACHE_MIDDLEWARE_ALIAS
'default'
SESSION_SAVE_EVERY_REQUEST
False
ADMIN_MEDIA_PREFIX
'/admin_media/'
NUMBER_GROUPING
0
SESSION_ENGINE
'django.contrib.sessions.backends.db'
CSRF_FAILURE_VIEW
'django.views.csrf.csrf_failure'
COMMENTS_SKETCHY_USERS_GROUP
None
LOGIN_REDIRECT_URL
'/accounts/profile/'
SESSION_COOKIE_PATH
'/'
LOGGING
{'disable_existing_loggers': False,
'handlers': {'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',
'level': 'ERROR'}},
'loggers': {'django.request': {'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True}},
'version': 1}
CACHE_MIDDLEWARE_KEY_PREFIX
''
LOCALE_PATHS
()
TEMPLATE_STRING_IF_INVALID
''
COMMENTS_ALLOW_PROFANITIES
False
LOGOUT_URL
'/accounts/logout/'
EMAIL_USE_TLS
False
TEMPLATE_DIRS
('/usr/local/src/osqa/forum/skins',)
FIXTURE_DIRS
()
EMAIL_HOST
'localhost'
DATE_FORMAT
'N j, Y'
MEDIA_ROOT
''
ADMINS
()
FORMAT_MODULE_PATH
None
DEFAULT_FROM_EMAIL
'webmaster@localhost'
STATICFILES_DIRS
()
MEDIA_URL
''
DATETIME_FORMAT
'N j, Y, P'
EMAIL_SUBJECT_PREFIX
'[Django] '
DJANGO_VERSION
1.3
SITE_ID
1
DISALLOWED_USER_AGENTS
()
ALLOWED_INCLUDE_ROOTS
()
DECIMAL_SEPARATOR
'.'
SHORT_DATE_FORMAT
'm/d/Y'
DATABASE_USER
'uosqa'
MODULE_LIST
[<module 'osqa.forum_modules.sximporter' from '/usr/local/src/osqa/forum_modules/sximporter/__init__.pyc'>,
<module 'osqa.forum_modules.pgfulltext' from '/usr/local/src/osqa/forum_modules/pgfulltext/__init__.pyc'>,
<module 'osqa.forum_modules.default_badges' from '/usr/local/src/osqa/forum_modules/default_badges/__init__.pyc'>,
<module 'osqa.forum_modules.akismet' from '/usr/local/src/osqa/forum_modules/akismet/__init__.pyc'>,
<module 'osqa.forum_modules.exporter' from '/usr/local/src/osqa/forum_modules/exporter/__init__.pyc'>,
<module 'osqa.forum_modules.localauth' from '/usr/local/src/osqa/forum_modules/localauth/__init__.pyc'>,
<module 'osqa.forum_modules.robotstxt' from '/usr/local/src/osqa/forum_modules/robotstxt/__init__.pyc'>,
<module 'osqa.forum_modules.facebookauth' from '/usr/local/src/osqa/forum_modules/facebookauth/__init__.pyc'>,
<module 'osqa.forum_modules.oauthauth' from '/usr/local/src/osqa/forum_modules/oauthauth/__init__.pyc'>]
TEST_RUNNER
'django.test.simple.DjangoTestSuiteRunner'
SITE_SRC_ROOT
'/usr/local/src/osqa'
TIME_ZONE
'Australia/Melbourne'
FILE_UPLOAD_MAX_MEMORY_SIZE
2621440
APP_BASE_URL
'http://127.0.0.1'
EMAIL_BACKEND
'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_TABLESPACE
''
TEMPLATE_CONTEXT_PROCESSORS
['django.core.context_processors.request',
'forum.context.application_settings',
'forum.user_messages.context_processors.user_messages',
'django.core.context_processors.auth']
SESSION_COOKIE_AGE
1209600
ONLINE_USERS
{}
SETTINGS_MODULE
'osqa.settings'
USE_ETAGS
False
DISABLED_MODULES
['books', 'recaptcha', 'project_badges']
LANGUAGES_BIDI
('he', 'ar', 'fa')
DEFAULT_INDEX_TABLESPACE
''
INTERNAL_IPS
('127.0.0.1',)
STATIC_URL
None
EMAIL_PORT
25
SHORT_DATETIME_FORMAT
'm/d/Y P'
ABSOLUTE_URL_OVERRIDES
{}
DATABASE_OPTIONS
{}
CACHE_MIDDLEWARE_SECONDS
600
BANNED_IPS
()
DEBUG_TOOLBAR_CONFIG
{'INTERCEPT_REDIRECTS': True}
DATETIME_INPUT_FORMATS
('%Y-%m-%d %H:%M:%S',
'%Y-%m-%d %H:%M',
'%Y-%m-%d',
'%m/%d/%Y %H:%M:%S',
'%m/%d/%Y %H:%M',
'%m/%d/%Y',
'%m/%d/%y %H:%M:%S',
'%m/%d/%y %H:%M',
'%m/%d/%y')
DATABASE_PASSWORD
'********************'
COMMENTS_MODERATORS_GROUP
None
PROFANITIES_LIST
'********************'
EMAIL_HOST_USER
''
COMMENTS_BANNED_USERS_GROUP
None
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 500 page.
編集: urls.py ファイル:
import startup
import os.path
from forum import settings
from django.conf.urls.defaults import *
from django.conf import settings as djsettings
from django.contrib import admin
from forum import views as app
from forum.sitemap import OsqaSitemap
from django.utils.translation import ugettext as _
import logging
admin.autodiscover()
sitemaps = {
'questions': OsqaSitemap
}
APP_PATH = os.path.dirname(__file__)
core_urls = (
url(r'^$', app.readers.index, name='index'),
url(r'^%s(.*)' % _('nimda/'), include(admin.site.urls)), url(r'^sitemap.xml$', 'forum.sitemap.index', {'sitemaps': sitemaps}),
url(r'^sitemap-(?P<section>.+)\.xml$', 'forum.sitemap.sitemap', {'sitemaps': sitemaps}),
url(r'^favicon\.ico$', app.meta.favicon),
url(r'^cstyle\.css$', app.meta.custom_css, name='custom_css'),
url(r'^m/(?P<skin>\w+)/media/(?P<path>.*)$', app.meta.media , name='osqa_media'),
url(r'^%s(?P<path>.*)$' % _('upfiles/'), 'django.views.static.serve', {'document_root': os.path.join(APP_PATH, 'upfiles').replace('\\', '/')}, name='uploaded_file',),
url(r'^%s$' % _('faq/'), app.meta.static, {'content': settings.FAQ_PAGE_TEXT, 'title': _('FAQ')}, name='faq'),
url(r'^%s$' % _('about/'), app.meta.static, {'content': settings.ABOUT_PAGE_TEXT, 'title': _('About')}, name='about'),
url(r'^%s$' % _('markdown_help/'), app.meta.markdown_help, name='markdown_help'), url(r'^opensearch\.xml$', app.meta.opensearch, name='opensearch'),
url(r'^opensearch\.xml$', app.meta.opensearch, name='opensearch'),
url(r'^%s$' % _('privacy/'), app.meta.privacy, name='privacy'),
url(r'^%s$' % _('logout/'), app.meta.logout, name='logout'),
url(r'^%s(?P<id>\d+)/%s$' % (_('answers/'), _('edit/')), app.writers.edit_answer, name='edit_answer'),
url(r'^%s(?P<id>\d+)/$' % _('revisions/'), app.readers.revisions, name='revisions'),
url(r'^%s$' % _('questions/'), app.readers.questions, name='questions'),
url(r'^%s%s$' % (_('questions/'), _('ask/')), app.writers.ask, name='ask'),
url(r'^%s%s$' % (_('questions/'), _('related_questions/')), app.commands.related_questions, name='related_questions'),
url(r'^%s%s$' % (_('questions/'), _('unanswered/')), app.readers.unanswered, name='unanswered'),
url(r'^%s(?P<mode>[\w\-]+)/(?P<user>\d+)/(?P<slug>.*)/$' % _('questions/'), app.readers.user_questions, name='user_questions'),
url(r'^%s(?P<id>\d+)/%s$' % (_('questions/'), _('edit/')), app.writers.edit_question, name='edit_question'),
url(r'^%s(?P<id>\d+)/%s$' % (_('questions/'), _('close/')), app.commands.close, kwargs=dict(close=True), name='close'),
url(r'^%s(?P<id>\d+)/%s$' % (_('questions/'), _('reopen/')), app.commands.close, kwargs=dict(close=False), name='reopen'),
url(r'^%s(?P<id>\d+)/%s$' % (_('questions/'), _('answer/')), app.writers.answer, name='answer'),
url(r'^%s(?P<action>\w+)/$' % _('pending-data/'), app.writers.manage_pending_data, name='manage_pending_data'),
url(r'^%s(?P<id>\d+)/(?P<vote_type>[a-z]+)/' % _('vote/'), app.commands.vote_post, name='vote_post'),
url(r'^%s(?P<id>\d+)/$' % _('like_comment/'), app.commands.like_comment, name='like_comment'),
url(r'^%s(?P<id>\d+)/' % _('comment/'), app.commands.comment, name='comment'),
url(r'^%s(?P<id>\d+)/$' % _('delete_comment/'), app.commands.delete_comment, name='delete_comment'),
url(r'^%s(?P<id>\d+)/$' % _('convert_comment/'), app.commands.convert_comment_to_answer, name='convert_comment'),
url(r'^%s(?P<id>\d+)/$' % _('accept_answer/'), app.commands.accept_answer, name='accept_answer'),
url(r'^%s(?P<id>\d+)/$' % _('answer_link/'), app.commands.answer_permanent_link, name='answer_permanent_link'),
url(r'^%s(?P<id>\d+)/$' % _('mark_favorite/'), app.commands.mark_favorite, name='mark_favorite'),
url(r'^%s%s(?P<user_id>\d+)/%s(?P<answer_id>\d+)/$' % (_('award_points/'), _('user/'), _('answer/')), app.commands.award_points, name='award_points'),
url(r'^%s(?P<id>\d+)/' % _('flag/'), app.commands.flag_post, name='flag_post'),
url(r'^%s(?P<id>\d+)/' % _('delete/'), app.commands.delete_post, name='delete_post'),
url(r'^%s(?P<id>\d+)/(?P<user>\d+)?$' % _('subscribe/'), app.commands.subscribe, name='subscribe'),
url(r'^%s(?P<id>\d+)/$' % _('subscribe/'), app.commands.subscribe, name='subscribe_simple'),
url(r'^%s' % _('matching_tags/'), app.commands.matching_tags, name='matching_tags'),
url(r'^%s' % _('matching_users/'), app.commands.matching_users, name='matching_users'),
url(r'^%s(?P<id>\d+)/' % _('node_markdown/'), app.commands.node_markdown, name='node_markdown'),
url(r'^%s(?P<id>\d+)/' % _('convert/'), app.commands.convert_to_comment, name='convert_to_comment'),
url(r'^%s(?P<id>\d+)/' % _('convert_to_question/'), app.writers.convert_to_question,name='convert_to_question'),
url(r'^%s(?P<id>\d+)/' % _('wikify/'), app.commands.wikify, name='wikify'),
url(r'^%s(?P<id>\d+)/(?P<slug>[\w-]*)$' % _('question/'), 'django.views.generic.simple.redirect_to', {'url': '/questions/%(id)s/%(slug)s'}),
url(r'^%s(?P<id>\d+)/?$' % _('questions/'), app.readers.question, name='question'),
url(r'^%s(?P<id>\d+)/(?P<slug>.*)/(?P<answer>\d+)$' % _('questions/'), app.readers.question),
url(r'^%s(?P<id>\d+)/(?P<slug>.*)$' % _('questions/'), app.readers.question, name='question'),
url(r'^%s$' % _('tags/'), app.readers.tags, name='tags'),
url(r'^%s(?P<tag>.*)/$' % _('tags/'), app.readers.tag, name='tag_questions'),
url(r'^%s%s(?P<tag>[^/]+)/$' % (_('mark-tag/'),_('interesting/')), app.commands.mark_tag, kwargs={'reason':'good','action':'add'}, name='mark_interesting_tag'),
url(r'^%s%s(?P<tag>[^/]+)/$' % (_('mark-tag/'),_('ignored/')), app.commands.mark_tag, kwargs={'reason':'bad','action':'add'}, name='mark_ignored_tag'),
url(r'^%s(?P<tag>[^/]+)/$' % _('unmark-tag/'), app.commands.mark_tag, kwargs={'action':'remove'}, name='mark_ignored_tag'),
url(r'^%s$' % _('users/'), app.users.users, name='users'),
# url(r'^%s$' % _('online_users/'), app.users.online_users, name='online_users'),
url(r'^%s(?P<id>\d+)/%s$' % (_('users/'), _('edit/')), app.users.edit_user, name='edit_user'),
url(r'^%s(?P<id>\d+)/%s$' % (_('users/'), _('award/')), app.users.award_points, name='user_award_points'),
url(r'^%s(?P<id>\d+)/%s$' % (_('users/'), _('suspend/')), app.users.suspend, name='user_suspend'),
url(r'^%s(?P<id>\d+)/%s(?P<action>[a-z]+)/(?P<status>[a-z]+)/$' % (_('users/'), _('powers/')), app.users.user_powers, name='user_powers'),
url(r'^%s(?P<id>\d+)/(?P<slug>.*)/%s$' % (_('users/'), _('subscriptions/')), app.users.user_subscriptions, name='user_subscriptions'),
url(r'^%s(?P<id>\d+)/(?P<slug>.*)/%s$' % (_('users/'), _('preferences/')), app.users.user_preferences, name='user_preferences'),
url(r'^%s(?P<id>\d+)/(?P<slug>.*)/%s$' % (_('users/'), _('favorites/')), app.users.user_favorites, name='user_favorites'),
url(r'^%s(?P<id>\d+)/(?P<slug>.*)/%s$' % (_('users/'), _('reputation/')), app.users.user_reputation, name='user_reputation'),
url(r'^%s(?P<id>\d+)/(?P<slug>.*)/%s$' % (_('users/'), _('votes/')), app.users.user_votes, name='user_votes'),
url(r'^%s(?P<id>\d+)/(?P<slug>.*)/%s$' % (_('users/'), _('recent/')), app.users.user_recent, name='user_recent'),
url(r'^%s(?P<id>\d+)/(?P<slug>.*)/$' % _('users/'), app.users.user_profile, name='user_profile'),
url(r'^%s$' % _('badges/'), app.meta.badges, name='badges'),
url(r'^%s(?P<id>\d+)/(?P<slug>[\w-]+)/?$' % _('badges/'), app.meta.badge, name='badge'),
# (r'^admin/doc/' % _('admin/doc'), include('django.contrib.admindocs.urls')),
url(r'^%s$' % _('upload/'), app.writers.upload, name='upload'),
url(r'^%s$' % _('search/'), app.readers.search, name='search'),
url(r'^%s$' % _('contact/'), app.meta.feedback, name='feedback'),
(r'^i18n/', include('django.conf.urls.i18n')),
url(r'^%s%s$' % (_('account/'), _('signin/')), app.auth.signin_page, name='auth_signin'),
url(r'^%s%s$' % (_('account/'), _('signout/')), app.auth.signout, name='user_signout'),
url(r'^%s(?P<provider>\w+)/%s$' % (_('account/'), _('signin/')), app.auth.prepare_provider_signin, name='auth_provider_signin'),
url(r'^%s(?P<provider>\w+)/%s$' % (_('account/'), _('done/')), app.auth.process_provider_signin, name='auth_provider_done'),
url(r'^%s%s$' % (_('account/'), _('register/')), app.auth.external_register, name='auth_external_register'),
url(r'^%s%s(?P<user>\d+)/(?P<code>.+)/$' % (_('account/'), _('validate/')), app.auth.validate_email, name='auth_validate_email'),
url(r'^%s%s$' % (_('account/'), _('tempsignin/')), app.auth.request_temp_login, name='auth_request_tempsignin'),
url(r'^%s%s(?P<user>\d+)/(?P<code>.+)/$' % (_('account/'), _('tempsignin/')), app.auth.temp_signin, name='auth_tempsignin'),
url(r'^%s(?P<id>\d+)/%s$' % (_('account/'), _('authsettings/')), app.auth.auth_settings, name='user_authsettings'),
url(r'^%s%s(?P<id>\d+)/%s$' % (_('account/'), _('providers/'), _('remove/')), app.auth.remove_external_provider, name='user_remove_external_provider'),
url(r'^%s%s%s$' % (_('account/'), _('providers/'), _('add/')), app.auth.signin_page, name='user_add_external_provider'),
url(r'^%s%s$' %(_('account/'), _('send-validation/')), app.auth.send_validation_email, name='send_validation_email'),
url(r'^%s$' % _('admin/'), app.admin.dashboard, name='admin_index'),
url(r'^%s%s$' % (_('admin/'), _('switch_interface/')), app.admin.interface_switch, name='admin_switch_interface'),
url(r'^%s%s$' % (_('admin/'), _('statistics/')), app.admin.statistics, name='admin_statistics'),
url(r'^%s%s$' % (_('admin/'), _('denormalize/')), app.admin.recalculate_denormalized, name='admin_denormalize'),
url(r'^%s%s$' % (_('admin/'), _('go_bootstrap/')), app.admin.go_bootstrap, name='admin_go_bootstrap'),
url(r'^%s%s$' % (_('admin/'), _('go_defaults/')), app.admin.go_defaults, name='admin_go_defaults'),
url(r'^%s%s(?P<set_name>\w+)/(?P<var_name>\w+)/$' % (_('admin/'), _('settings/')), app.admin.get_default, name='admin_default'),
url(r'^%s%s$' % (_('admin/'), _('maintenance/')), app.admin.maintenance, name='admin_maintenance'),
url(r'^%s%s$' % (_('admin/'), _('flagged_posts/')), app.admin.flagged_posts, name='admin_flagged_posts'),
url(r'^%s%s$' % (_('admin/'), _('static_pages/')), app.admin.static_pages, name='admin_static_pages'),
url(r'^%s%s%s$' % (_('admin/'), _('static_pages/'), _('new/')), app.admin.edit_page, name='admin_new_page'),
url(r'^%s%s%s(?P<id>\d+)/$' % (_('admin/'), _('static_pages/'), _('edit/')), app.admin.edit_page, name='admin_edit_page'),
url(r'^%s%s(?P<name>\w+)/$' % (_('admin/'), _('tools/')), app.admin.tools_page, name='admin_tools'),
url(r'^%s%s(?P<set_name>\w+)/$' % (_('admin/'), _('settings/')), app.admin.settings_set, name='admin_set'),
url(r'%s%s' % (_('admin/'), _('test_email_settings/')), app.admin.test_email_settings, name='test_email_settings'),
url(r'^feeds/rss[/]?$', app.readers.feed, name='latest_questions_feed'),
)
from forum.modules import get_modules_script
module_patterns = get_modules_script('urls')
urlpatterns = patterns('')
for pattern_file in module_patterns:
pattern = getattr(pattern_file, 'urlpatterns', None)
if pattern:
urlpatterns += pattern
module_defined = {}
for t in urlpatterns:
if hasattr(t, 'name') and t.name:
module_defined[t.name] = True
core_defined = []
for u in core_urls:
if not(hasattr(u, 'name') and u.name and (u.name in module_defined)):
core_defined.append(u)
def urlname(name):
if name in module_defined:
return None
return name
urlpatterns += patterns('', *core_defined)