[Migration] Get Podcasts / Episodes from PostgreSQL
[mygpo.git] / mygpo / web / urls.py
blobec7cbf1cc9884c2105a36d07ec6b5c436e47c6dc
1 from django.conf.urls import *
2 from django.contrib.auth.views import logout
3 from django.views.generic.base import TemplateView, RedirectView
5 from django_couchdb_utils.registration.views import activate, register
6 from django_couchdb_utils.registration.forms import RegistrationFormUniqueEmail
8 from mygpo.web.logo import CoverArt
11 urlpatterns = patterns('mygpo.web.views',
12 url(r'^$', 'home', name='home'),
13 url(r'^logo/(?P<size>\d+)/(?P<prefix>.{3})/(?P<filename>[^/]*)$', CoverArt.as_view(), name='logo'),
14 url(r'^history/$', 'history', name='history'),
15 url(r'^suggestions/$', 'suggestions', name='suggestions'),
16 url(r'^suggestions/rate$', 'rate_suggestions', name='suggestions-rate'),
17 url(r'^suggestions/blacklist/(?P<slug_id>[\w-]+)$', 'blacklist', name='suggestions-blacklist-slug-id'),
18 url(r'^tags/', 'mytags', name='tags'),
20 url(r'^online-help',
21 RedirectView.as_view(
22 url='http://gpoddernet.readthedocs.org/en/latest/user/index.html'),
23 name='help'),
25 url(r'^developer/',
26 TemplateView.as_view(template_name='developer.html')),
28 url(r'^contribute/',
29 TemplateView.as_view(template_name='contribute.html'),
30 name='contribute'),
32 url(r'^privacy/',
33 TemplateView.as_view(template_name='privacy_policy.html'),
34 name='privacy-policy'),
38 urlpatterns += patterns('mygpo.web.views.subscriptions',
39 url(r'^subscriptions/$', 'show_list', name='subscriptions'),
40 url(r'^download/subscriptions\.opml$', 'download_all', name='subscriptions-opml'),
41 url(r'^subscriptions/all.opml$', 'download_all', name='subscriptions-download'),
42 url(r'^user/(?P<username>[\w.-]+)/subscriptions$', 'for_user', name='shared-subscriptions'),
43 url(r'^user/(?P<username>[\w.-]+)/subscriptions\.opml$', 'for_user_opml', name='shared-subscriptions-opml'),
44 url(r'^user/(?P<username>[\w.-]+)/subscriptions/rss/$', 'subscriptions_feed', name='shared-subscriptions-rss'),
47 urlpatterns += patterns('mygpo.web.views.podcast',
48 url(r'^subscribe', 'subscribe_url', name='subscribe-by-url'),
50 # Podcast Views with UUIDs
51 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32})/?$',
52 'show_id',
53 name='podcast-id'),
55 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32})/subscribe$',
56 'subscribe_id',
57 name='subscribe-id'),
59 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32})/subscribe/\+all$',
60 'subscribe_all_id',
61 name='subscribe-all-id'),
63 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32})/unsubscribe/(?P<device_uid>[\w.-]+)',
64 'unsubscribe_id',
65 name='unsubscribe-id'),
67 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32})/unsubscribe/\+all$',
68 'unsubscribe_all_id',
69 name='unsubscribe-all-id'),
71 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32)/add-tag',
72 'add_tag_id',
73 name='add-tag-id'),
75 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32})/remove-tag',
76 'remove_tag_id',
77 name='remove-tag-id'),
79 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32})/set-public',
80 'set_public_id',
81 name='podcast-public-id',
82 kwargs={'public': True}),
84 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32})/set-private',
85 'set_public_id',
86 name='podcast-private-id',
87 kwargs={'public': False}),
89 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32})/-episodes',
90 'all_episodes_id',
91 name='podcast-all-episodes-id'),
93 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32})/-flattr',
94 'flattr_podcast_id',
95 name='podcast-flattr-id'),
97 url(r'^podcast/(?P<podcast_id>[0-9a-f]{32})/\+history',
98 'history_podcast_id',
99 name='podcast-history-id'),
102 # Podcast Views with Slugs
103 url(r'^podcast/(?P<slug>[\w-]+)/?$',
104 'show_slug',
105 name='podcast-slug'),
107 url(r'^podcast/(?P<slug>[\w-]+)/subscribe$',
108 'subscribe_slug',
109 name='subscribe-slug'),
111 url(r'^podcast/(?P<slug>[\w-]+)/subscribe/\+all$',
112 'subscribe_all_slug',
113 name='subscribe-all-slug'),
115 url(r'^podcast/(?P<slug>[\w-]+)/unsubscribe/(?P<device_uid>[\w.-]+)',
116 'unsubscribe_slug',
117 name='unsubscribe-slug'),
119 url(r'^podcast/(?P<slug>[\w-]+)/unsubscribe/\+all$',
120 'unsubscribe_all_slug',
121 name='unsubscribe-all-slug'),
123 url(r'^podcast/(?P<slug>[\w-]+)/add-tag',
124 'add_tag_slug',
125 name='add-tag-slug'),
127 url(r'^podcast/(?P<slug>[\w-]+)/remove-tag',
128 'remove_tag_slug',
129 name='remove-tag-slug'),
131 url(r'^podcast/(?P<slug>[\w-]+)/set-public',
132 'set_public_slug',
133 name='podcast-public-slug',
134 kwargs={'public': True}),
136 url(r'^podcast/(?P<slug>[\w-]+)/set-private',
137 'set_public_slug',
138 name='podcast-private-slug',
139 kwargs={'public': False}),
141 url(r'^podcast/(?P<slug>[\w-]+)/-episodes',
142 'all_episodes_slug',
143 name='podcast-all-episodes-slug'),
145 url(r'^podcast/(?P<slug>[\w-]+)/-flattr',
146 'flattr_podcast_slug',
147 name='podcast-flattr-slug'),
149 url(r'^podcast/(?P<slug>[\w-]+)/\+history',
150 'history_podcast_slug',
151 name='podcast-history-slug'),
155 urlpatterns += patterns('mygpo.web.views.episode',
157 url(r'^favorites/$',
158 'list_favorites',
159 name='favorites'),
161 # Episodes for UUIDs
162 url(r'^podcast/(?P<p_id>[0-9a-f]{32})/(?P<e_id>[0-9a-f]{32})$',
163 'show_id',
164 name='episode-id'),
166 url(r'^podcast/(?P<p_id>[0-9a-f]{32})/(?P<e_id>[0-9a-f]{32})/toggle-favorite',
167 'toggle_favorite_id',
168 name='episode-fav-id'),
170 url(r'^podcast/(?P<p_id>[0-9a-f]{32})/(?P<e_id>[0-9a-f]{32})/add-action',
171 'add_action_id',
172 name='add-episode-action-id'),
174 url(r'^podcast/(?P<p_id>[0-9a-f]{32})/(?P<e_id>[0-9a-f]{32})/-flattr',
175 'flattr_episode_id',
176 name='flattr-episode-id'),
178 url(r'^podcast/(?P<p_id>[0-9a-f]{32})/(?P<e_id>[0-9a-f]{32})/\+history',
179 'episode_history_id',
180 name='episode-history-id'),
183 # Episodes for Slugs
184 url(r'^podcast/(?P<p_slug>[\w-]+)/(?P<e_slug>[\w-]+)$',
185 'show_slug',
186 name='episode-slug'),
188 url(r'^podcast/(?P<p_slug>[\w-]+)/(?P<e_slug>[\w-]+)/toggle-favorite',
189 'toggle_favorite_slug',
190 name='episode-fav-slug'),
192 url(r'^podcast/(?P<p_slug>[\w-]+)/(?P<e_slug>[\w-]+)/add-action',
193 'add_action_slug',
194 name='add-episode-action-slug'),
196 url(r'^podcast/(?P<p_slug>[\w-]+)/(?P<e_slug>[\w-]+)/-flattr',
197 'flattr_episode_slug', name='flattr-episode-slug'),
199 url(r'^podcast/(?P<p_slug>[\w-]+)/(?P<e_slug>[\w-]+)/\+history',
200 'episode_history_slug',
201 name='episode-history-slug'),
204 from mygpo.web.views.settings import DefaultPrivacySettings, \
205 PodcastPrivacySettings, ProfileView, FlattrSettingsView, \
206 FlattrTokenView, FlattrLogout, AccountRemoveGoogle
208 urlpatterns += patterns('mygpo.web.views.settings',
209 url(r'^account/$', 'account', name='account'),
210 url(r'^account/privacy$', 'privacy', name='privacy'),
212 url(r'^account/profile$',
213 ProfileView.as_view(),
214 name='profile'),
216 url(r'^account/google/remove$',
217 AccountRemoveGoogle.as_view(),
218 name='account-google-remove'),
220 url(r'^account/flattr$',
221 FlattrSettingsView.as_view(),
222 name='flattr-settings'),
224 url(r'^account/flattr/token$',
225 FlattrTokenView.as_view(),
226 name='flattr-token'),
228 url(r'^account/flattr/logout$',
229 FlattrLogout.as_view(),
230 name='flattr-logout'),
232 url(r'^account/privacy/default-public$',
233 DefaultPrivacySettings.as_view(public=True),
234 name='privacy_default_public'),
236 url(r'^account/privacy/default-private$',
237 DefaultPrivacySettings.as_view(public=False),
238 name='privacy_default_private'),
240 url(r'^account/privacy/(?P<podcast_id>[\w]+)/public$',
241 PodcastPrivacySettings.as_view(public=True),
242 name='privacy_podcast_public'),
244 url(r'^account/privacy/(?P<podcast_id>[\w]+)/private$',
245 PodcastPrivacySettings.as_view(public=False),
246 name='privacy_podcast_private'),
248 url(r'^account/delete$', 'delete_account',name='delete-account'),
251 urlpatterns += patterns('mygpo.web.views.device',
252 url(r'^devices/$', 'overview', name='devices'),
253 url(r'^devices/create-device$', 'create', name='device-create'),
254 url(r'^device/(?P<uid>[\w.-]+)\.opml$', 'opml', name='device-opml'),
255 url(r'^device/(?P<uid>[\w.-]+)$', 'show', name='device'),
256 url(r'^device/(?P<uid>[\w.-]+)/symbian.opml$', 'symbian_opml', name='device-symbian-opml'),
257 url(r'^device/(?P<uid>[\w.-]+)/sync$', 'sync', name='device-sync'),
258 url(r'^device/(?P<uid>[\w.-]+)/unsync$', 'unsync', name='device-unsync'),
259 url(r'^device/(?P<uid>[\w.-]+)/delete$', 'delete', name='device-delete'),
260 url(r'^device/(?P<uid>[\w.-]+)/remove$', 'delete_permanently', name='device-delete-permanently'),
261 url(r'^device/(?P<uid>[\w.-]+)/undelete$', 'undelete', name='device-undelete'),
262 url(r'^device/(?P<uid>[\w.-]+)/history$', 'history', name='device-history'),
263 url(r'^device/(?P<uid>[\w.-]+)/edit$', 'edit', name='device-edit'),
264 url(r'^device/(?P<uid>[\w.-]+)/update$', 'update', name='device-update'),
265 url(r'^device/(?P<uid>[\w.-]+)/upload-opml$', 'upload_opml', name='device-upload-opml'),
269 from mygpo.web.views.users import LoginView, GoogleLogin, GoogleLoginCallback
271 urlpatterns += patterns('mygpo.web.views.users',
273 url(r'^login/$',
274 LoginView.as_view(),
275 name='login'),
277 url(r'^login/google$',
278 GoogleLogin.as_view(),
279 name='login-google'),
281 url(r'^login/oauth2callback$',
282 GoogleLoginCallback.as_view(),
283 name='login-google-callback'),
285 url(r'^logout/$', logout, {'next_page': '/'}, name='logout'),
286 url(r'^register/resend-activation$', 'resend_activation', name='resend-activation'),
287 url(r'^register/restore_password$', 'restore_password', name='restore-password'),
288 url(r'^register/$', register,
289 {'backend': 'django_couchdb_utils.registration.backends.default.DefaultBackend',
290 'form_class': RegistrationFormUniqueEmail}, name='register'),
292 url(r'^registration_complete/$',
293 TemplateView.as_view(template_name='registration/registration_complete.html')),
295 (r'^activate/(?P<activation_key>\w+)$', activate,
296 {'backend': 'django_couchdb_utils.registration.backends.default.DefaultBackend'}),