"""Root Site URL Processing
"""
from os.path import isdir
from django.conf import settings
from pycon import core
from django.views.generic.simple import direct_to_template, redirect_to
from django.conf.urls.defaults import *
from usermgr.views import login, logout
from restructuredtext import __path__ as rstpath
from restructuredtext.views import rststatic, rstpage, rstrecent, rstindex
from cachemgr.views import cache_list

urlpatterns = patterns('',
    ## redirect the root to /root/about/ to make the menu behave like we want.
    ('^%s$'%settings.ROOT_URL[1:], redirect_to, {'url': settings.ROOT_URL + 'about/'}),
     ('^$', redirect_to, {'url': settings.ROOT_URL + 'about/'}),

    #('^%sdocs/(?P<rel_path>.*)$'%settings.ROOT_URL[1:], rststatic, {'document_root': 'website/static/docs/'}),

    ('^%scache/$'%settings.ROOT_URL[1:], cache_list),

# rss feed redirect
    ('^%snews/$'%settings.ROOT_URL[1:], direct_to_template, {'template': 'pycon/home.html'}),

# public wiki
    ('^%swiki/recent/$'%settings.ROOT_URL[1:], rstrecent, {'login_type': 'anonymous',
                                                           'url': '/wiki/',
                                                           'base': settings.ROOT_URL}),
    ('^%swiki/index/$'%settings.ROOT_URL[1:], rstindex, {'login_type': 'anonymous',
                                                           'url': '/wiki/',
                                                           'base': settings.ROOT_URL}),
    (r'^%swiki/(?P<rel_path>help)/$' % settings.ROOT_URL[1:], rststatic,
                                 {'document_root': '%s/media/doc/' % rstpath[0]}),
    ('^%s(?P<url>wiki/.*)$'%settings.ROOT_URL[1:], rstpage, {'login_type': 'anonymous',
                                                             'help_url': settings.ROOT_URL + 'wiki/help/'}),

# Account Management
    ('^%s?$'%settings.LOGIN_URL[1:],   login),
    ('^%s?$'%settings.LOGOUT_URL[1:],  logout,
        {'template_name':'registration/logged_out2.html'}),
    ('^%s'%settings.PROFILE_URL[1:],        include('pycon.usermgr.urls')),

## Site Applications
#    ('^%sconference/proposals/'%settings.ROOT_URL[1:], include('pycon.propmgr.urls')),
#    url('^%sconference/talks/'%settings.ROOT_URL[1:],     'pycon.propmgr.views.accepted_talks', name='accepted-talks'),
    ('^%ssurvey/'%settings.ROOT_URL[1:],    include('pycon.survey.urls')),

#    ('^%sconference/schedule/'%settings.ROOT_URL[1:],  include('pycon.schedule.urls')),
    #('^%sjobboard/'%settings.ROOT_URL[1:],  include('jobboard.urls')),
#    ('^%sregistration/'%settings.ROOT_URL[1:],  include('pycon.attendeereg.urls')),
#    ('^%smailer/'%settings.ROOT_URL[1:],  include('pycon.mailer.urls')),
#    ('^%sbadges/'%settings.ROOT_URL[1:],  include('pycon.badges.urls')),


# Django Admin:
    ('^%s' % settings.ADMIN_URL[1:],    include('django.contrib.admin.urls')),

# root level site features
#    ('^%s$' % settings.OPTIONS_URL[1:], 'pycon.views.set_option'),
    #(r'^.*$',             'pycon.views.appindex'),

)

### urls for serving up static data in a dev environment
if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^%sdojo/(?P<path>.*)$' % settings.MEDIA_URL[1:], 'django.views.static.serve',
                                 {'document_root': '%s/dojo/' % settings.DEV_INSTALL_ROOT}),
    )
    urlpatterns += patterns('',
        (r'^%stalkdata/(?P<path>.*)$' % settings.MEDIA_URL[1:], 'django.views.static.serve',
                                 {'document_root': '%s/common/talkdata/' % settings.DEV_INSTALL_ROOT}),
    )
    media_pattern = '^' + settings.MEDIA_URL[1:] + '%s/(?P<path>.*)$'
    media_apps = (app for app in settings.INSTALLED_APPS
                    if (isdir(settings.DEV_INSTALL_ROOT + "/" + app.replace('.', '/') + '/media')))
    for app in media_apps:
        media_dir = settings.DEV_INSTALL_ROOT + "/" + app.replace('.', '/') + '/media/'
        if '.' in app: app = app.split('.')[-1]
        urlpatterns += patterns('', (media_pattern % app, 'django.views.static.serve',
                                     {'document_root': media_dir}),)

    urlpatterns += patterns('',
        ('^common/(?P<path>.*)$', 'django.views.static.serve',
                     {'document_root': settings.DEV_INSTALL_ROOT + '/common/'}),
    )

urlpatterns += patterns('',
# Catch all turning the rest of the site into a wiki (but requires staff access)
    ('^%srecent/$'%settings.ROOT_URL[1:], rstrecent, {'login_type': 'staff',
                                                      'url': settings.ROOT_URL,}),
    ('^%sindex/$'%settings.ROOT_URL[1:], rstindex,   {'login_type': 'staff',
                                                      'url': settings.ROOT_URL,}),
    ('^%s.*$'%settings.ROOT_URL[1:], rstpage, {'login_type': 'staff',
                                               'help_url': settings.ROOT_URL + 'site/howto/'}),
    )
