2011-07-11 18:44:47 -07:00
|
|
|
import re
|
2011-04-09 11:13:02 -04:00
|
|
|
import datetime
|
2011-03-13 16:24:49 -04:00
|
|
|
from utils import log as logging
|
2011-03-19 18:35:44 -04:00
|
|
|
from django.http import HttpResponse
|
2011-03-13 16:24:49 -04:00
|
|
|
from django.template import RequestContext
|
2011-04-07 10:30:05 -04:00
|
|
|
from django.shortcuts import render_to_response, get_object_or_404
|
2011-03-13 16:24:49 -04:00
|
|
|
from apps.recommendations.models import RecommendedFeed
|
|
|
|
from apps.reader.models import UserSubscription
|
2011-05-14 12:50:11 -04:00
|
|
|
from apps.rss_feeds.models import Feed, MFeedIcon
|
2011-04-07 10:30:05 -04:00
|
|
|
from utils import json_functions as json
|
2011-07-11 18:22:28 -07:00
|
|
|
from utils.user_functions import get_user, ajax_login_required, admin_only
|
2011-03-13 16:24:49 -04:00
|
|
|
|
|
|
|
|
|
|
|
def load_recommended_feed(request):
|
2011-07-11 18:22:28 -07:00
|
|
|
user = get_user(request)
|
|
|
|
page = int(request.REQUEST.get('page', 0))
|
|
|
|
usersub = None
|
|
|
|
refresh = request.REQUEST.get('refresh')
|
|
|
|
now = datetime.datetime.now
|
|
|
|
unmoderated = request.REQUEST.get('unmoderated', False) == 'true'
|
2011-03-13 16:24:49 -04:00
|
|
|
|
2011-07-11 18:22:28 -07:00
|
|
|
if unmoderated:
|
|
|
|
recommended_feeds = RecommendedFeed.objects.filter(is_public=False, declined_date__isnull=True)[page:page+2]
|
|
|
|
else:
|
|
|
|
recommended_feeds = RecommendedFeed.objects.filter(is_public=True, approved_date__lte=now)[page:page+2]
|
2011-03-22 19:30:50 -04:00
|
|
|
if recommended_feeds and request.user.is_authenticated():
|
2011-03-13 16:24:49 -04:00
|
|
|
usersub = UserSubscription.objects.filter(user=user, feed=recommended_feeds[0].feed)
|
2011-05-11 12:27:28 -04:00
|
|
|
if refresh != 'true' and page > 0:
|
2011-09-16 09:26:22 -07:00
|
|
|
logging.user(request, "~FBBrowse recommended feed: ~SBPage #%s" % (page+1))
|
2011-03-13 16:24:49 -04:00
|
|
|
|
2011-03-16 19:20:38 -04:00
|
|
|
recommended_feed = recommended_feeds and recommended_feeds[0]
|
2011-05-14 12:50:11 -04:00
|
|
|
feed_icon = MFeedIcon.objects(feed_id=recommended_feed.feed.pk)
|
2011-03-16 19:20:38 -04:00
|
|
|
|
|
|
|
if recommended_feed:
|
|
|
|
return render_to_response('recommendations/render_recommended_feed.xhtml', {
|
|
|
|
'recommended_feed' : recommended_feed,
|
|
|
|
'description' : recommended_feed.description or recommended_feed.feed.data.feed_tagline,
|
|
|
|
'usersub' : usersub,
|
2011-05-14 12:50:11 -04:00
|
|
|
'feed_icon' : feed_icon and feed_icon[0],
|
2011-03-16 19:20:38 -04:00
|
|
|
'has_next_page' : len(recommended_feeds) > 1,
|
|
|
|
'has_previous_page' : page != 0,
|
2011-07-11 18:22:28 -07:00
|
|
|
'unmoderated' : unmoderated,
|
2011-07-11 18:44:47 -07:00
|
|
|
'today' : datetime.datetime.now(),
|
2011-03-19 18:35:44 -04:00
|
|
|
}, context_instance=RequestContext(request))
|
|
|
|
else:
|
2011-04-07 10:30:05 -04:00
|
|
|
return HttpResponse("")
|
|
|
|
|
|
|
|
@json.json_view
|
2011-04-24 14:13:01 -04:00
|
|
|
def load_feed_info(request, feed_id):
|
2011-04-07 10:30:05 -04:00
|
|
|
feed = get_object_or_404(Feed, pk=feed_id)
|
|
|
|
previous_recommendation = None
|
2011-04-24 14:13:01 -04:00
|
|
|
if request.user.is_authenticated():
|
|
|
|
recommended_feed = RecommendedFeed.objects.filter(user=request.user, feed=feed)
|
|
|
|
if recommended_feed:
|
|
|
|
previous_recommendation = recommended_feed[0].created_date
|
2011-04-07 10:30:05 -04:00
|
|
|
|
|
|
|
return {
|
2011-04-07 10:36:25 -04:00
|
|
|
'subscriber_count': feed.num_subscribers,
|
2011-04-07 10:30:05 -04:00
|
|
|
'tagline': feed.data.feed_tagline,
|
|
|
|
'previous_recommendation': previous_recommendation
|
|
|
|
}
|
|
|
|
|
|
|
|
@ajax_login_required
|
|
|
|
@json.json_view
|
|
|
|
def save_recommended_feed(request):
|
|
|
|
feed_id = request.POST['feed_id']
|
|
|
|
feed = get_object_or_404(Feed, pk=int(feed_id))
|
|
|
|
tagline = request.POST['tagline']
|
|
|
|
twitter = request.POST.get('twitter')
|
|
|
|
code = 1
|
|
|
|
|
|
|
|
recommended_feed, created = RecommendedFeed.objects.get_or_create(
|
|
|
|
feed=feed,
|
|
|
|
user=request.user,
|
|
|
|
defaults=dict(
|
|
|
|
description=tagline,
|
|
|
|
twitter=twitter
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
2011-07-11 18:22:28 -07:00
|
|
|
return dict(code=code if created else -1)
|
|
|
|
|
|
|
|
@admin_only
|
|
|
|
@ajax_login_required
|
|
|
|
def approve_feed(request):
|
|
|
|
feed_id = request.POST['feed_id']
|
|
|
|
feed = get_object_or_404(Feed, pk=int(feed_id))
|
2011-07-11 18:44:47 -07:00
|
|
|
date = request.POST['date']
|
2011-07-11 18:22:28 -07:00
|
|
|
recommended_feed = RecommendedFeed.objects.filter(feed=feed)[0]
|
|
|
|
|
2011-07-11 18:44:47 -07:00
|
|
|
year, month, day = re.search(r'(\d{4})-(\d{1,2})-(\d{1,2})', date).groups()
|
2011-07-11 18:22:28 -07:00
|
|
|
recommended_feed.is_public = True
|
2011-07-11 18:44:47 -07:00
|
|
|
recommended_feed.approved_date = datetime.date(int(year), int(month), int(day))
|
2011-07-11 18:22:28 -07:00
|
|
|
recommended_feed.save()
|
|
|
|
|
|
|
|
return load_recommended_feed(request)
|
|
|
|
|
|
|
|
@admin_only
|
|
|
|
@ajax_login_required
|
|
|
|
def decline_feed(request):
|
|
|
|
feed_id = request.POST['feed_id']
|
|
|
|
feed = get_object_or_404(Feed, pk=int(feed_id))
|
|
|
|
recommended_feeds = RecommendedFeed.objects.filter(feed=feed)
|
|
|
|
|
|
|
|
for recommended_feed in recommended_feeds:
|
|
|
|
recommended_feed.is_public = False
|
|
|
|
recommended_feed.declined_date = datetime.datetime.now()
|
|
|
|
recommended_feed.save()
|
|
|
|
|
|
|
|
return load_recommended_feed(request)
|