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
|
2009-07-28 02:27:27 +00:00
|
|
|
from django.core.cache import cache
|
|
|
|
from apps.rss_feeds.models import Feed
|
|
|
|
from apps.reader.models import UserSubscription, UserSubscriptionFolders
|
2009-06-16 03:08:55 +00:00
|
|
|
from utils.json import json_encode
|
2009-06-18 12:54:20 +00:00
|
|
|
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
|
2009-07-28 22:51:16 +00:00
|
|
|
from django.db import IntegrityError
|
2009-06-16 03:08:55 +00:00
|
|
|
import datetime
|
|
|
|
|
|
|
|
|
2009-07-25 00:16:55 +00:00
|
|
|
def opml_upload(request):
|
|
|
|
xml_opml = None
|
|
|
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
if 'file' in request.FILES:
|
|
|
|
file = request.FILES['file']
|
|
|
|
xml_opml = file.read()
|
|
|
|
|
|
|
|
data = opml_import(xml_opml, request.user).encode('utf-8')
|
|
|
|
return HttpResponse(data, mimetype='text/plain')
|
2009-06-16 03:08:55 +00:00
|
|
|
|
2009-07-25 00:16:55 +00:00
|
|
|
def opml_import(xml_opml, user):
|
2009-06-18 12:54:20 +00:00
|
|
|
context = None
|
2009-07-25 00:16:55 +00:00
|
|
|
outline = opml.from_string(xml_opml)
|
2009-06-16 03:08:55 +00:00
|
|
|
feeds = []
|
2009-07-25 00:16:55 +00:00
|
|
|
message = "OK"
|
|
|
|
code = 1
|
2009-06-18 12:54:20 +00:00
|
|
|
for folder in outline:
|
2009-07-25 00:16:55 +00:00
|
|
|
print folder.text
|
2009-06-18 12:54:20 +00:00
|
|
|
for feed in folder:
|
2009-07-28 22:51:16 +00:00
|
|
|
print '\t%s' % (feed.title,)
|
2009-06-18 12:54:20 +00:00
|
|
|
feed_data = dict(feed_address=feed.xmlUrl, feed_link=feed.htmlUrl, feed_title=feed.title)
|
|
|
|
feeds.append(feed_data)
|
2010-01-17 22:11:17 -05:00
|
|
|
new_feed, _ = Feed.objects.get_or_create(feed_address=feed.xmlUrl, defaults=feed_data)
|
|
|
|
us, _ = UserSubscription.objects.get_or_create(feed=new_feed, user=user)
|
|
|
|
user_sub_folder, _ = UserSubscriptionFolders.objects.get_or_create(user=user, feed=new_feed, user_sub=us, defaults=dict(folder=folder.text))
|
2009-07-25 00:16:55 +00:00
|
|
|
data = json_encode(dict(message=message, code=code, payload=dict(feeds=feeds, feed_count=len(feeds))))
|
2009-07-28 02:27:27 +00:00
|
|
|
cache.delete('usersub:%s' % user)
|
|
|
|
|
2009-07-25 00:16:55 +00:00
|
|
|
return data
|