from django.conf import settings
from django.conf.urls import *
from django.views.generic.edit import UpdateView
from django.views.generic.list import ListView
from django.contrib import admin

from .core.views import *  # flat import
from .core.views_other import *
from .core.views_caves import *
from .core.views_survex import *
from .core.models import *

admin.autodiscover()

# type url probably means it's used.

#    HOW DOES THIS WORK:
#    url( <regular expression that matches the thing in the web browser>,
#   <reference to python function in 'core' folder>,
#    <name optional argument for URL reversing (doesn't do much)>)

actualurlpatterns = patterns('',
    
    url(r'^troggle$',            views_other.frontpage,      name="frontpage"),
    
    url(r'^caves/?$',    views_caves.caveindex,      name="caveindex"),
    url(r'^people/?$',   views_logbooks.personindex, name="personindex"),

    url(r'^newqmnumber/?$',              views_other.ajax_QM_number, ),
    url(r'^lbo_suggestions/?$',              logbook_entry_suggestions),   #broken 
    #(r'^person/(?P<person_id>\d*)/?$', views_logbooks.person),
    url(r'^person/(?P<first_name>[A-Z]*[a-z\-\'&;]*)[^a-zA-Z]*(?P<last_name>[a-z\-\']*[^a-zA-Z]*[A-Z]*[a-z\-&;]*)/?', views_logbooks.person, name="person"),
    #url(r'^person/(\w+_\w+)$',       views_logbooks.person,      name="person"),
    
    url(r'^expedition/(\d+)$',  views_logbooks.expedition,  name="expedition"),
    url(r'^expeditions/?$',  views_logbooks.ExpeditionListView.as_view(), name="expeditions"),
    url(r'^personexpedition/(?P<first_name>[A-Z]*[a-z&;]*)[^a-zA-Z]*(?P<last_name>[A-Z]*[a-zA-Z&;]*)/(?P<year>\d+)/?$', views_logbooks.personexpedition, name="personexpedition"),
    url(r'^logbookentry/(?P<date>.*)/(?P<slug>.*)/?$', views_logbooks.logbookentry,name="logbookentry"),
    url(r'^newlogbookentry/(?P<expeditionyear>.*)$', views_logbooks.newLogbookEntry,     name="newLogBookEntry"),
    url(r'^editlogbookentry/(?P<expeditionyear>[^/]*)/(?P<pdate>[^/]*)/(?P<pslug>[^/]*)/$', views_logbooks.newLogbookEntry,     name="editLogBookEntry"), # working !
    url(r'^deletelogbookentry/(?P<expeditionyear>[^/]*)/(?P<date>[^/]*)/(?P<slug>[^/]*)/$', views_logbooks.deleteLogbookEntry, name="deleteLogBookEntry"),
    url(r'^newfile', views_other.newFile, name="newFile"), # oddly broken, needs investigating more

    url(r'^getEntrances/(?P<caveslug>.*)', views_caves.get_entrances, name = "get_entrances"), #works
    url(r'^getQMs/(?P<caveslug>.*)', views_caves.get_qms, name = "get_qms"), # no template "get_qms"?
    url(r'^getPeople/(?P<expeditionslug>.*)', views_logbooks.get_people, name = "get_people"), # fails
    url(r'^getLogBookEntries/(?P<expeditionslug>.*)', views_logbooks.get_logbook_entries, name = "get_logbook_entries"), #works

    url(r'^cave/new/$', views_caves.edit_cave, name="newcave"),
    url(r'^cave/(?P<cave_id>[^/]+)/?$', views_caves.cave, name="cave"),
    url(r'^caveslug/([^/]+)/?$', views_caves.caveSlug, name="caveSlug"),
    url(r'^cave/entrance/([^/]+)/?$', views_caves.caveEntrance),
    url(r'^cave/description/([^/]+)/?$', views_caves.caveDescription),
    url(r'^cave/qms/([^/]+)/?$', views_caves.caveQMs), # blank page
    url(r'^cave/logbook/([^/]+)/?$', views_caves.caveLogbook),
    url(r'^entrance/(?P<caveslug>[^/]+)/(?P<slug>[^/]+)/edit/', views_caves.editEntrance, name = "editentrance"),
    url(r'^entrance/new/(?P<caveslug>[^/]+)/', views_caves.editEntrance, name = "newentrance"),
    #url(r'^cavedescription/(?P<cavedescription_name>[^/]+)/?$', views_caves.cave_description, name="cavedescription"),
    #url(r'^cavedescription/?$', object_list, {'queryset':CaveDescription.objects.all(),'template_name':'object_list.html'}, name="cavedescriptions"),
    #url(r'^cavehref/(.+)$',     views_caves.cave,       name="cave"),url(r'cave'),
    url(r'^cave/3d/(?P<cave_id>[^/]+).3d$', views_caves.cave3d, name="cave3d"),

    url(r'^jgtfile/(.*)$',      view_surveys.jgtfile,       name="jgtfile"),
    url(r'^jgtuploadfile$',     view_surveys.jgtuploadfile, name="jgtuploadfile"),

    url(r'^cave/(?P<cave_id>[^/]+)/?(?P<ent_letter>[^/])$', ent),
    url(r'^cave/(?P<slug>[^/]+)/edit/$', views_caves.edit_cave, name="edit_cave"),
    #(r'^cavesearch', caveSearch),

    url(r'^cave/(?P<cave_id>[^/]+)/(?P<year>\d\d\d\d)-(?P<qm_id>\d*)(?P<grade>[ABCDX]?)?$', views_caves.qm, name="qm"),
    
    url(r'^prospecting_guide/$', views_caves.prospecting),    

    url(r'^logbooksearch/(.*)/?$', views_logbooks.logbookSearch),

    url(r'^statistics/?$', views_other.stats, name="stats"),

#    url(r'^survey/?$', surveyindex, name="survey"), #url referred to troggle menu..
#    url(r'^survey/(?P<year>\d\d\d\d)\#(?P<wallet_number>\d*)$', survey, name="survey"), #Survey object

# Is all this lot out of date ? Maybe the logbooks work?
    url(r'^controlpanel/?$', views_other.controlPanel, name="controlpanel"),
    url(r'^logbook(?P<year>\d\d\d\d)\.(?P<extension>.*)/?$',views_other.downloadLogbook),
    url(r'^logbook/?$',views_other.downloadLogbook, name="downloadlogbook"),
    url(r'^cave/(?P<cave_id>[^/]+)/qm\.csv/?$', views_other.downloadQMs, name="downloadqms"),        
    (r'^downloadqms$', views_other.downloadQMs),

    (r'^admin/doc/?', include('django.contrib.admindocs.urls')),
    #url(r'^admin/(.*)', admin.site.get_urls, name="admin"),
    (r'^admin/', include(admin.site.urls)),

    # don't know why this needs troggle/ in here.  nice to get it out
    url(r'^troggle/media-admin/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ADMIN_DIR, 'show_indexes':True}),

    (r'^accounts/', include('registration.backends.default.urls')),
    (r'^profiles/', include('profiles.urls')),

#   (r'^personform/(.*)$', personForm),

    (r'^expofiles/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': settings.EXPOFILES, 'show_indexes': True}),
    (r'^static/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': settings.STATIC_ROOT, 'show_indexes': True}),
    (r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
    (r'^tinymce_media/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': settings.TINY_MCE_MEDIA_ROOT, 'show_indexes': True}),
                
        
    url(r'^survexblock/(.+)$',                     views_caves.survexblock, name="survexblock"),
    url(r'^survexfile/(?P<survex_file>.*?)\.svx$', views_survex.svx,        name="svx"),
    url(r'^survexfile/(?P<survex_file>.*?)\.3d$',  views_survex.threed,     name="threed"),
    url(r'^survexfile/(?P<survex_file>.*?)\.log$', views_survex.svxraw),
    url(r'^survexfile/(?P<survex_file>.*?)\.err$', views_survex.err),

    url(r'^survexfile/caves/$',                       views_survex.survexcaveslist,  name="survexcaveslist"),
    url(r'^survexfile/(?P<survex_cave>.*)$',          views_survex.survexcavesingle, name="survexcavessingle"),
    url(r'^survexfileraw/(?P<survex_file>.*?)\.svx$', views_survex.svxraw,           name="svxraw"),

    (r'^survey_files/listdir/(?P<path>.*)$',       view_surveys.listdir),
    (r'^survey_files/download/(?P<path>.*)$',      view_surveys.download),
    #(r'^survey_files/upload/(?P<path>.*)$', view_surveys.upload),

    #(r'^survey_scans/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.SURVEY_SCANS, 'show_indexes':True}),
    url(r'^survey_scans/$',                        view_surveys.surveyscansfolders, name="surveyscansfolders"), 
    url(r'^survey_scans/(?P<path>[^/]+)/$',        view_surveys.surveyscansfolder,  name="surveyscansfolder"), 
    url(r'^survey_scans/(?P<path>[^/]+)/(?P<file>[^/]+(?:png|jpg|jpeg))$', 
                                                   view_surveys.surveyscansingle,   name="surveyscansingle"), 

    url(r'^tunneldata/$',                          view_surveys.tunneldata,         name="tunneldata"), 
    url(r'^tunneldataraw/(?P<path>.+?\.xml)$',     view_surveys.tunnelfile,         name="tunnelfile"), 
    url(r'^tunneldataraw/(?P<path>.+?\.xml)/upload$',view_surveys.tunnelfileupload, name="tunnelfileupload"), 

    #url(r'^tunneldatainfo/(?P<path>.+?\.xml)$',    view_surveys.tunnelfileinfo,     name="tunnelfileinfo"), 

    #(r'^photos/(?P<path>.*)$', 'django.views.static.serve',
        #{'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}),

    url(r'^prospecting/(?P<name>[^.]+).png$', prospecting_image, name="prospecting_image"),

#    (r'^gallery/(?P<path>.*)$', 'django.views.static.serve',
#        {'document_root': settings.PHOTOS_ROOT, 'show_indexes':True}),

    url(r'^pathsreport.*$',                        views_logbooks.pathsreport,  name="pathsreport"),
    
    url(r'^(.*)_edit$', 'flatpages.views.editflatpage', name="editflatpage"),
    url(r'^(.*)$', 'flatpages.views.flatpage', name="flatpage"),
)

#Allow prefix to all urls
urlpatterns = patterns ('',
    ('^%s' % settings.DIR_ROOT, include(actualurlpatterns))
)