NewsBlur-viq/apps/opml_import/views.py

44 lines
1.7 KiB
Python
Raw Normal View History

2009-06-16 03:08:55 +00:00
from django.shortcuts import render_to_response, get_list_or_404, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.template import RequestContext
from apps.rss_feeds.models import Feed, Story
from apps.reader.models import UserSubscription, ReadStories, UserSubscriptionFolders
from utils.json import json_encode
import utils.opml as opml
2009-06-16 03:08:55 +00:00
from django.contrib.auth.models import User
from django.http import HttpResponse, HttpRequest
from django.core import serializers
from pprint import pprint
import datetime
def opml_import(request):
context = None
return render_to_response('opml_import/import.xhtml', context,
context_instance=RequestContext(request))
def process(request):
context = None
outline = opml.from_string(request.POST['opml'])
2009-06-16 03:08:55 +00:00
feeds = []
for folder in outline:
for feed in folder:
feed_data = dict(feed_address=feed.xmlUrl, feed_link=feed.htmlUrl, feed_title=feed.title)
feeds.append(feed_data)
new_feed = Feed(**feed_data)
try:
new_feed.save()
except:
new_feed = Feed.objects.get(**feed_data)
us = UserSubscription(feed=new_feed, user=request.user)
try:
us.save()
except:
us = UserSubscription.objects.get(feed=new_feed, user=request.user)
user_sub_folder = UserSubscriptionFolders(user=request.user, feed=new_feed, user_sub=us, folder=folder.text)
try:
user_sub_folder.save()
except:
pass
2009-06-16 03:08:55 +00:00
data = json_encode(feeds)
return HttpResponse(data, mimetype='application/json')