1 from django
.core
.urlresolvers
import reverse
2 from django
.http
import HttpResponseRedirect
3 from django
.shortcuts
import render
4 from django
.contrib
.sites
.models
import RequestSite
5 from django
.contrib
.auth
.decorators
import login_required
6 from django
.views
.decorators
.vary
import vary_on_cookie
7 from django
.views
.decorators
.cache
import cache_control
8 from django
.views
.generic
.base
import View
9 from django
.utils
.decorators
import method_decorator
11 from mygpo
.podcasts
.models
import Podcast
12 from mygpo
.publisher
.models
import PublishedPodcast
13 from mygpo
.userfeeds
.feeds
import FavoriteFeed
14 from mygpo
.data
.feeddownloader
import PodcastUpdater
17 logger
= logging
.getLogger(__name__
)
20 class FavoritesPublic(View
):
24 @method_decorator(vary_on_cookie
)
25 @method_decorator(cache_control(private
=True))
26 @method_decorator(login_required
)
27 def post(self
, request
):
30 request
.user
.profile
.favorite_feeds_token
= ''
31 request
.user
.profile
.save()
34 request
.user
.profile
.create_new_token('favorite_feeds_token')
35 request
.user
.profile
.save()
37 token
= request
.user
.favorite_feeds_token
39 return HttpResponseRedirect(reverse('share-favorites'))
43 class ShareFavorites(View
):
45 @method_decorator(vary_on_cookie
)
46 @method_decorator(cache_control(private
=True))
47 @method_decorator(login_required
)
48 def get(self
, request
):
51 favfeed
= FavoriteFeed(user
)
52 site
= RequestSite(request
)
53 feed_url
= favfeed
.get_public_url(site
.domain
)
55 podcast
= Podcast
.objects
.filter(urls__url
=feed_url
).first()
57 token
= user
.profile
.favorite_feeds_token
59 return render(request
, 'share/favorites.html', {
66 class PublicSubscriptions(View
):
70 @method_decorator(vary_on_cookie
)
71 @method_decorator(cache_control(private
=True))
72 @method_decorator(login_required
)
73 def post(self
, request
):
76 user
.profile
.subscriptions_token
= ''
78 user
.profile
.create_new_token('subscriptions_token')
82 return HttpResponseRedirect(reverse('share'))
85 class FavoritesFeedCreateEntry(View
):
86 """ Creates a Podcast object for the user's favorites feed """
88 @method_decorator(vary_on_cookie
)
89 @method_decorator(cache_control(private
=True))
90 @method_decorator(login_required
)
91 def post(self
, request
):
94 feed
= FavoriteFeed(user
)
95 site
= RequestSite(request
)
96 feed_url
= feed
.get_public_url(site
.domain
)
98 podcast
= Podcast
.objects
.get_or_create_for_url(feed_url
)
100 PublishedPodcast
.objects
.get_or_create(
105 updater
= PodcastUpdater()
106 updater
.update(feed_url
)
108 return HttpResponseRedirect(reverse('share-favorites'))
112 def overview(request
):
114 site
= RequestSite(request
)
116 subscriptions_token
= user
.profile
.get_token('subscriptions_token')
117 userpage_token
= user
.profile
.get_token('userpage_token')
118 favfeed_token
= user
.profile
.get_token('favorite_feeds_token')
120 favfeed
= FavoriteFeed(user
)
121 favfeed_url
= favfeed
.get_public_url(site
.domain
)
122 favfeed_podcast
= Podcast
.objects
.filter(urls__url
=favfeed_url
).first()
124 return render(request
, 'share/overview.html', {
126 'subscriptions_token': subscriptions_token
,
127 'userpage_token': userpage_token
,
128 'favfeed_token': favfeed_token
,
129 'favfeed_podcast': favfeed_podcast
,
134 def set_token_public(request
, token_name
, public
):
139 setattr(user
.profile
, token_name
, '')
143 user
.profile
.create_new_token(token_name
)
146 return HttpResponseRedirect(reverse('share'))