3 # Copyright (C) 2012 FinalsClub Foundation
5 from django.contrib import admin
6 from django.conf.urls.defaults import patterns, include, url
7 from django.views.generic import ListView
8 from django.views.generic.simple import direct_to_template
10 from karmaworld.apps.ajaxuploader.views import ajax_uploader
11 from karmaworld.apps.courses.models import Course
12 from karmaworld.apps.courses.views import AboutView
13 from karmaworld.apps.courses.views import CourseDetailView
14 from karmaworld.apps.courses.views import CourseSaveView
15 from karmaworld.apps.courses.views import CourseAjaxList
16 from karmaworld.apps.courses.views import school_list
17 from karmaworld.apps.notes.views import NoteView
18 from karmaworld.apps.notes.views import raw_file
20 # See: https://docs.djangoproject.com/en/dev/ref/contrib/admin/#hooking-adminsite-instances-into-your-urlconf
23 # See: https://docs.djangoproject.com/en/dev/topics/http/urls/
24 urlpatterns = patterns('',
25 ## Administrative URLpatterns
26 # Admin panel and documentation:
27 url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
28 url(r'^admin/', include(admin.site.urls)),
29 # Grappelli django-admin improvment suite
30 url(r'^grappelli/', include('grappelli.urls')),
32 ## Single-serving page URLpatterns
33 url(r'^terms/$', direct_to_template, { 'template': 'terms.html' }, name='terms'),
34 url(r'^about/$', AboutView.as_view(), name='about'),
36 # VIEW for viewing a Note's gdrive generated html, used as iframe
37 url(r'^raw/(?P<pk>\d+)$', raw_file, name='note_raw'),
39 # VIEW for displaying a single Course
40 url(r'^(?P<school_slug>[^/]+)/(?P<slug>[-A-Za-z0-9_]+)$', \
41 CourseDetailView.as_view(), name='course_detail'),
43 # note file as id, for notes without titles yet
44 url(r'^(?P<school_slug>[^/]+)/(?P<course_slug>[^/]+)/(?P<pk>[\d^/]+)$', \
45 NoteView.as_view(), name='note_detail_pk'),
46 # note file by note.slug
47 url(r'^(?P<school_slug>[^/]+)/(?P<course_slug>[^/]+)/(?P<slug>[^/]+)$', \
48 NoteView.as_view(), name='note_detail'),
50 # ---- JSON views ----#
52 url(r'^ajax-upload$', ajax_uploader, name='ajax_upload'),
53 # return json list of schools
54 url(r'^school/list/$', school_list, name='json_school_list'),
55 url(r'^course/post/$', CourseSaveView.as_view(), name='api_course_post'),
56 url(r'^course/list/$', CourseAjaxList.as_view(), name='api_course_list'),
58 # ---- end JSON views ----#
60 url(r'^$', ListView.as_view(model=Course), name='home'),