[Web] add missing import
[mygpo.git] / mygpo / share / views.py
blob813b1c07ea8499c9ef60d7d367901dd75b785986
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
16 import logging
17 logger = logging.getLogger(__name__)
20 class FavoritesPublic(View):
22 public = True
24 @method_decorator(vary_on_cookie)
25 @method_decorator(cache_control(private=True))
26 @method_decorator(login_required)
27 def post(self, request):
29 if self.public:
30 request.user.profile.favorite_feeds_token = ''
31 request.user.profile.save()
33 else:
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):
49 user = request.user
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', {
60 'feed_token': token,
61 'site': site,
62 'podcast': podcast,
66 class PublicSubscriptions(View):
68 public = True
70 @method_decorator(vary_on_cookie)
71 @method_decorator(cache_control(private=True))
72 @method_decorator(login_required)
73 def post(self, request):
75 if self.public:
76 user.profile.subscriptions_token = ''
77 else:
78 user.profile.create_new_token('subscriptions_token')
80 user.profile.save()
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):
92 user = request.user
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(
101 podcast=podcast,
102 publisher=user,
105 updater = PodcastUpdater()
106 updater.update(feed_url)
108 return HttpResponseRedirect(reverse('share-favorites'))
111 @login_required
112 def overview(request):
113 user = request.user
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', {
125 'site': site,
126 'subscriptions_token': subscriptions_token,
127 'userpage_token': userpage_token,
128 'favfeed_token': favfeed_token,
129 'favfeed_podcast': favfeed_podcast,
133 @login_required
134 def set_token_public(request, token_name, public):
136 user = request.user
138 if public:
139 setattr(user.profile, token_name, '')
140 user.profile.save()
142 else:
143 user.profile.create_new_token(token_name)
144 user.profile.save()
146 return HttpResponseRedirect(reverse('share'))