コード例 #1
0
ファイル: tests.py プロジェクト: BenoitZugmeyer/NewsBlur
    def test_google_reader_import(self):
        self.client.login(username="******", password="******")
        user = User.objects.get(username="******")
        f = open(os.path.join(os.path.dirname(__file__), "fixtures/google_reader.xml"))
        xml = f.read()
        f.close()

        reader_importer = GoogleReaderImporter(user, xml=xml)
        reader_importer.import_feeds()

        subs = UserSubscription.objects.filter(user=user)
        self.assertEquals(subs.count(), 66)

        usf = UserSubscriptionFolders.objects.get(user=user)
        print json.decode(usf.folders)
        self.assertEquals(
            json.decode(usf.folders),
            [
                {u"Tech": [4, 5, 2, 9, 10, 12, 13, 14, 20, 23, 24, 26, 27, 28, 31, 32, 33, 34, 48, 49, 62, 64]},
                1,
                2,
                3,
                6,
                {u"Blogs": [1, 3, 25, 29, 30, 39, 40, 41, 50, 55, 57, 58, 59, 60, 66]},
                {u"Blogs \u2014 Tumblrs": [5, 21, 37, 38, 53, 54, 63, 65]},
                {u"Blogs \u2014 The Bloglets": [6, 16, 22, 35, 51, 56]},
                {u"New York": [7, 8, 17, 18, 19, 36, 45, 47, 52, 61]},
                {u"Cooking": [11, 15, 42, 43, 46]},
                44,
            ],
        )
コード例 #2
0
ファイル: views.py プロジェクト: stfenjobs/PyTune3
def import_starred_stories_from_google_reader(request):
    code = 0
    feed_count = 0
    starred_count = 0
    delayed = False

    if request.user.is_authenticated():
        reader_importer = GoogleReaderImporter(request.user)
        try:
            starred_count = reader_importer.try_import_starred_stories()
        except TimeoutError:
            ProcessReaderStarredImport.delay(request.user.pk)
            feed_count = UserSubscription.objects.filter(
                user=request.user).count()
            logging.user(
                request,
                "~FR~SBGoogle Reader starred stories import took too long, found %s feeds, %s stories. Tasking..."
                % (feed_count, starred_count))
            delayed = True
            code = 2

        feed_count = UserSubscription.objects.filter(user=request.user).count()

    return dict(code=code,
                delayed=delayed,
                feed_count=feed_count,
                starred_count=starred_count)
コード例 #3
0
ファイル: views.py プロジェクト: zby1234/NewsBlur
def import_from_google_reader(request):
    code = 0
    feed_count = 0
    starred_count = 0
    delayed = False
    
    if request.user.is_authenticated():
        reader_importer = GoogleReaderImporter(request.user)
        auto_active = bool(request.REQUEST.get('auto_active') or False)
        
        try:
            code = reader_importer.try_import_feeds(auto_active=auto_active)
        except TimeoutError:
            ProcessReaderImport.delay(request.user.pk, auto_active=auto_active)
            feed_count = UserSubscription.objects.filter(user=request.user).count()
            logging.user(request, "~FR~SBGoogle Reader import took too long, found %s feeds. Tasking..." % feed_count)
            delayed = True
            code = 2
            
        if 'import_from_google_reader' in request.session:
            del request.session['import_from_google_reader']
    
        feed_count = UserSubscription.objects.filter(user=request.user).count()
        
    return dict(code=code, delayed=delayed, feed_count=feed_count, starred_count=starred_count)
コード例 #4
0
    def test_google_reader_import(self):
        self.client.login(username='******', password='******')
        user = User.objects.get(username='******')
        f = open(
            os.path.join(os.path.dirname(__file__),
                         'fixtures/google_reader.xml'))
        xml = f.read()
        f.close()

        reader_importer = GoogleReaderImporter(user, xml=xml)
        reader_importer.import_feeds()

        subs = UserSubscription.objects.filter(user=user)
        self.assertEquals(subs.count(), 66)

        usf = UserSubscriptionFolders.objects.get(user=user)
        # print json.decode(usf.folders)
        self.assertEquals(json.decode(usf.folders), [{
            u'Tech': [
                4, 5, 2, 9, 10, 12, 13, 14, 20, 23, 24, 26, 27, 28, 31, 32, 33,
                34, 48, 49, 62, 64
            ]
        }, 1, 2, 3, 6, {
            u'Blogs':
            [1, 3, 25, 29, 30, 39, 40, 41, 50, 55, 57, 58, 59, 60, 66]
        }, {
            u'Blogs \u2014 Tumblrs': [5, 21, 37, 38, 53, 54, 63, 65]
        }, {
            u'Blogs \u2014 The Bloglets': [6, 16, 22, 35, 51, 56]
        }, {
            u'New York': [7, 8, 17, 18, 19, 36, 45, 47, 52, 61]
        }, {
            u'Cooking': [11, 15, 42, 43, 46]
        }, 44])
コード例 #5
0
ファイル: views.py プロジェクト: AlphaCluster/NewsBlur
def import_from_google_reader(request):
    code = 0
    feed_count = 0
    starred_count = 0
    delayed = False
    
    if request.user.is_authenticated():
        reader_importer = GoogleReaderImporter(request.user)
        auto_active = bool(request.REQUEST.get('auto_active') or False)
        
        try:
            code = reader_importer.try_import_feeds(auto_active=auto_active)
        except TimeoutError:
            ProcessReaderImport.delay(request.user.pk, auto_active=auto_active)
            feed_count = UserSubscription.objects.filter(user=request.user).count()
            logging.user(request, "~FR~SBGoogle Reader import took too long, found %s feeds. Tasking..." % feed_count)
            delayed = True
            code = 2
            
        if 'import_from_google_reader' in request.session:
            del request.session['import_from_google_reader']
    
        feed_count = UserSubscription.objects.filter(user=request.user).count()
        
    return dict(code=code, delayed=delayed, feed_count=feed_count, starred_count=starred_count)
コード例 #6
0
ファイル: tasks.py プロジェクト: 1059232202/NewsBlur
    def run(self, user_id):
        user = User.objects.get(pk=user_id)
        logging.user(user, "~FR~SBGoogle Reader starred stories import (task) starting...")

        importer = GoogleReaderImporter(user=user)
        importer.import_starred_items(count=1000)
        
        feed_count = UserSubscription.objects.filter(user=user).count()
        starred_count = MStarredStory.objects.filter(user_id=user.pk).count()
        user.profile.send_import_reader_starred_finished_email(feed_count, starred_count)
        logging.user(user, "~FR~SBGoogle Reader starred stories import (task): ~SK%s~SN~SB~FR feeds, ~SK%s~SN~SB~FR starred stories" % (feed_count, starred_count))
コード例 #7
0
ファイル: tasks.py プロジェクト: 1059232202/NewsBlur
    def run(self, user_id, auto_active=False):
        user = User.objects.get(pk=user_id)
        logging.user(user, "~FR~SBGoogle Reader import (task) starting...")

        importer = GoogleReaderImporter(user=user)
        importer.import_feeds(auto_active=auto_active)
        importer.import_starred_items(count=10)
        
        feed_count = UserSubscription.objects.filter(user=user).count()
        user.profile.send_import_reader_finished_email(feed_count)
        logging.user(user, "~FR~SBGoogle Reader import (task): ~SK%s~SN~SB~FR feeds" % (feed_count))
コード例 #8
0
ファイル: views.py プロジェクト: saidimu/NewsBlur
def import_from_google_reader(request):
    code = 0

    if request.user.is_authenticated():
        reader_importer = GoogleReaderImporter(request.user)
        reader_importer.import_feeds()
        reader_importer.import_starred_items()
        code = 1
        if 'import_from_google_reader' in request.session:
            del request.session['import_from_google_reader']

    return dict(code=code)
コード例 #9
0
 def handle(self, *args, **options):
     if options['daemonize']:
         daemonize()
         
     settings.LOG_TO_STREAM = True
     
     try:
         user = User.objects.get(username__icontains=options['username'])
     except User.MultipleObjectsReturned:
         user = User.objects.get(username=options['username'])
     reader_importer = GoogleReaderImporter(user)
     reader_importer.import_starred_items(count=options['count'])
コード例 #10
0
    def handle(self, *args, **options):
        if options['daemonize']:
            daemonize()

        settings.LOG_TO_STREAM = True

        try:
            user = User.objects.get(username__icontains=options['username'])
        except User.MultipleObjectsReturned:
            user = User.objects.get(username=options['username'])
        reader_importer = GoogleReaderImporter(user)
        reader_importer.import_starred_items(count=options['count'])
コード例 #11
0
ファイル: views.py プロジェクト: stfenjobs/PyTune3
def reader_authorize(request):
    ip = request.META.get('HTTP_X_FORWARDED_FOR', None) or request.META.get(
        'REMOTE_ADDR', "")
    reader_importer = GoogleReaderImporter(request.user)
    if reader_importer.test():
        logging.user(
            request, "~BB~FW~SBSkipping Google Reader import, already tokened")
        return render_to_response('social/social_connect.xhtml', {},
                                  context_instance=RequestContext(request))

    domain = Site.objects.get_current().domain
    STEP2_URI = "http://%s%s" % (
        (domain + '.com') if not domain.endswith('.com') else domain,
        reverse('google-reader-callback'),
    )

    FLOW = OAuth2WebServerFlow(
        client_id=settings.GOOGLE_OAUTH2_CLIENTID,
        client_secret=settings.GOOGLE_OAUTH2_SECRET,
        scope="http://www.google.com/reader/api",
        redirect_uri=STEP2_URI,
        user_agent='PyTune Pro, www.pytune.com',
        approval_prompt="force",
    )
    logging.user(
        request, "~BB~FW~SBAuthorize Google Reader import - %s" %
        (request.META.get('HTTP_X_FORWARDED_FOR', None)
         or request.META.get('REMOTE_ADDR', ""), ))

    authorize_url = FLOW.step1_get_authorize_url(redirect_uri=STEP2_URI)
    response = render_to_response('social/social_connect.xhtml', {
        'next': authorize_url,
    },
                                  context_instance=RequestContext(request))

    # Save request token and delete old tokens
    auth_token_dict = dict()
    if request.user.is_authenticated():
        OAuthToken.objects.filter(user=request.user).delete()
        auth_token_dict['user'] = request.user
    else:
        OAuthToken.objects.filter(
            session_id=request.session.session_key).delete()
        OAuthToken.objects.filter(remote_ip=ip).delete()
    auth_token_dict['uuid'] = str(uuid.uuid4())
    auth_token_dict['session_id'] = request.session.session_key
    auth_token_dict['remote_ip'] = ip
    OAuthToken.objects.create(**auth_token_dict)

    response.set_cookie('pytune_reader_uuid', str(uuid.uuid4()))
    return response
コード例 #12
0
ファイル: tests.py プロジェクト: 0077cc/NewsBlur
    def test_google_reader_import(self):
        self.client.login(username='******', password='******')
        user = User.objects.get(username='******')
        f = open(os.path.join(os.path.dirname(__file__), 'fixtures/google_reader.xml'))
        xml = f.read()
        f.close()
        
        reader_importer = GoogleReaderImporter(user, xml=xml)
        reader_importer.import_feeds()

        subs = UserSubscription.objects.filter(user=user)
        self.assertEquals(subs.count(), 66)
        
        usf = UserSubscriptionFolders.objects.get(user=user)
        self.assertEquals(json.decode(usf.folders), [{'Blogs \xe2\x80\x94 The Bloglets': [6, 16, 22, 35, 51, 56]}, {'Blogs': [1, 3, 25, 29, 30, 39, 40, 41, 50, 55, 57, 58, 59, 60, 66]}, {'Cooking': [11, 15, 42, 43, 46]}, {'New York': [7, 8, 17, 18, 19, 36, 45, 47, 52, 61]}, {'Tech': [2, 4, 9, 10, 12, 13, 14, 20, 23, 24, 26, 27, 28, 31, 32, 33, 34, 48, 49, 62, 64]}, {'Blogs \xe2\x80\x94 Tumblrs': [5, 21, 37, 38, 53, 54, 63, 65]}, 44])
コード例 #13
0
ファイル: views.py プロジェクト: gforguru/NewsBlur
def reader_authorize(request):
    ip = request.META.get("HTTP_X_REAL_IP", None) or request.META.get("REMOTE_ADDR", "")
    reader_importer = GoogleReaderImporter(request.user)
    if reader_importer.test():
        logging.user(request, "~BB~FW~SBSkipping Google Reader import, already tokened")
        return render_to_response("social/social_connect.xhtml", {}, context_instance=RequestContext(request))

    domain = Site.objects.get_current().domain
    STEP2_URI = "http://%s%s" % (
        (domain + ".com") if not domain.endswith(".com") else domain,
        reverse("google-reader-callback"),
    )

    FLOW = OAuth2WebServerFlow(
        client_id=settings.GOOGLE_OAUTH2_CLIENTID,
        client_secret=settings.GOOGLE_OAUTH2_SECRET,
        scope="http://www.google.com/reader/api",
        redirect_uri=STEP2_URI,
        user_agent="NewsBlur Pro, www.newsblur.com",
        approval_prompt="force",
    )
    logging.user(
        request,
        "~BB~FW~SBAuthorize Google Reader import - %s"
        % (request.META.get("HTTP_X_REAL_IP", None) or request.META.get("REMOTE_ADDR", ""),),
    )

    authorize_url = FLOW.step1_get_authorize_url(redirect_uri=STEP2_URI)
    response = render_to_response(
        "social/social_connect.xhtml", {"next": authorize_url}, context_instance=RequestContext(request)
    )

    # Save request token and delete old tokens
    auth_token_dict = dict()
    if request.user.is_authenticated():
        OAuthToken.objects.filter(user=request.user).delete()
        auth_token_dict["user"] = request.user
    else:
        OAuthToken.objects.filter(session_id=request.session.session_key).delete()
        OAuthToken.objects.filter(remote_ip=ip).delete()
    auth_token_dict["uuid"] = str(uuid.uuid4())
    auth_token_dict["session_id"] = request.session.session_key
    auth_token_dict["remote_ip"] = ip
    OAuthToken.objects.create(**auth_token_dict)

    response.set_cookie("newsblur_reader_uuid", str(uuid.uuid4()))
    return response
コード例 #14
0
    def run(self, user_id):
        user = User.objects.get(pk=user_id)
        logging.user(
            user,
            "~FR~SBGoogle Reader starred stories import (task) starting...")

        importer = GoogleReaderImporter(user=user)
        importer.import_starred_items(count=1000)

        feed_count = UserSubscription.objects.filter(user=user).count()
        starred_count = MStarredStory.objects.filter(user_id=user.pk).count()
        user.profile.send_import_reader_starred_finished_email(
            feed_count, starred_count)
        logging.user(
            user,
            "~FR~SBGoogle Reader starred stories import (task): ~SK%s~SN~SB~FR feeds, ~SK%s~SN~SB~FR starred stories"
            % (feed_count, starred_count))
コード例 #15
0
ファイル: views.py プロジェクト: Einsteinish/PyTune2
def reader_authorize(request): 
    ip = request.META.get('HTTP_X_FORWARDED_FOR', None) or request.META.get('REMOTE_ADDR', "")
    reader_importer = GoogleReaderImporter(request.user)
    if reader_importer.test():
        logging.user(request, "~BB~FW~SBSkipping Google Reader import, already tokened")
        return render_to_response('social/social_connect.xhtml', {
        }, context_instance=RequestContext(request))

    domain = Site.objects.get_current().domain
    STEP2_URI = "http://%s%s" % (
        (domain + '.com') if not domain.endswith('.com') else domain,
        reverse('google-reader-callback'),
    )

    FLOW = OAuth2WebServerFlow(
        client_id=settings.GOOGLE_OAUTH2_CLIENTID,
        client_secret=settings.GOOGLE_OAUTH2_SECRET,
        scope="http://www.google.com/reader/api",
        redirect_uri=STEP2_URI,
        user_agent='PyTune Pro, www.pytune.com',
        approval_prompt="force",
        )
    logging.user(request, "~BB~FW~SBAuthorize Google Reader import - %s" % (
        request.META.get('HTTP_X_FORWARDED_FOR', None) or request.META.get('REMOTE_ADDR', ""),
    ))

    authorize_url = FLOW.step1_get_authorize_url(redirect_uri=STEP2_URI)
    response = render_to_response('social/social_connect.xhtml', {
        'next': authorize_url,
    }, context_instance=RequestContext(request))
    
    # Save request token and delete old tokens
    auth_token_dict = dict()
    if request.user.is_authenticated():
        OAuthToken.objects.filter(user=request.user).delete()
        auth_token_dict['user'] = request.user
    else:
        OAuthToken.objects.filter(session_id=request.session.session_key).delete()
        OAuthToken.objects.filter(remote_ip=ip).delete()
    auth_token_dict['uuid'] = str(uuid.uuid4())
    auth_token_dict['session_id'] = request.session.session_key
    auth_token_dict['remote_ip'] = ip
    OAuthToken.objects.create(**auth_token_dict)

    response.set_cookie('pytune_reader_uuid', str(uuid.uuid4()))
    return response
コード例 #16
0
ファイル: views.py プロジェクト: 0077cc/NewsBlur
def import_from_google_reader(request):
    code = 0
    feed_count = 0
    
    if request.user.is_authenticated():
        reader_importer = GoogleReaderImporter(request.user)
        auto_active = bool(request.REQUEST.get('auto_active') or False)
        try:
            reader_importer.import_feeds(auto_active=auto_active)
            reader_importer.import_starred_items()
        except AssertionError:
            code = -1
        else:
            code = 1
        if 'import_from_google_reader' in request.session:
            del request.session['import_from_google_reader']
    
        feed_count = UserSubscription.objects.filter(user=request.user).count()
        
    return dict(code=code, feed_count=feed_count)
コード例 #17
0
ファイル: views.py プロジェクト: AlphaCluster/NewsBlur
def import_starred_stories_from_google_reader(request):
    code = 0
    feed_count = 0
    starred_count = 0
    delayed = False
    
    if request.user.is_authenticated():
        reader_importer = GoogleReaderImporter(request.user)
        try:
            starred_count = reader_importer.try_import_starred_stories()
        except TimeoutError:
            ProcessReaderStarredImport.delay(request.user.pk)
            feed_count = UserSubscription.objects.filter(user=request.user).count()
            logging.user(request, "~FR~SBGoogle Reader starred stories import took too long, found %s feeds, %s stories. Tasking..." % (feed_count, starred_count))
            delayed = True
            code = 2
    
        feed_count = UserSubscription.objects.filter(user=request.user).count()
        
    return dict(code=code, delayed=delayed, feed_count=feed_count, starred_count=starred_count)
コード例 #18
0
ファイル: views.py プロジェクト: AnushPrem/NewsBlur
def import_from_google_reader(request):
    scope = "http://www.google.com/reader/api"
    sub_url = "%s/0/subscription/list" % scope
    code = 0

    if request.user.is_authenticated():
        user_tokens = OAuthToken.objects.filter(user=request.user)
        if user_tokens.count():
            user_token = user_tokens[0]
            consumer = oauth.Consumer(settings.OAUTH_KEY, settings.OAUTH_SECRET)
            token = oauth.Token(user_token.access_token, user_token.access_token_secret)
            client = oauth.Client(consumer, token)

            resp, content = client.request(sub_url, 'GET')
            reader_importer = GoogleReaderImporter(content, request.user)
            reader_importer.process()
            code = 1
            if 'import_from_google_reader' in request.session:
                del request.session['import_from_google_reader']

    return dict(code=code)
コード例 #19
0
ファイル: views.py プロジェクト: heliostatic/NewsBlur
def import_from_google_reader(request):
    scope = "http://www.google.com/reader/api"
    sub_url = "%s/0/subscription/list" % scope
    code = 0

    if request.user.is_authenticated():
        user_tokens = OAuthToken.objects.filter(user=request.user)
        if user_tokens.count():
            user_token = user_tokens[0]
            consumer = oauth.Consumer(settings.OAUTH_KEY,
                                      settings.OAUTH_SECRET)
            token = oauth.Token(user_token.access_token,
                                user_token.access_token_secret)
            client = oauth.Client(consumer, token)

            resp, content = client.request(sub_url, 'GET')
            reader_importer = GoogleReaderImporter(content, request.user)
            reader_importer.process()
            code = 1
            if 'import_from_google_reader' in request.session:
                del request.session['import_from_google_reader']

    return dict(code=code)
コード例 #20
0
    def run(self, user_id, auto_active=False):
        user = User.objects.get(pk=user_id)
        logging.user(user, "~FR~SBGoogle Reader import (task) starting...")

        importer = GoogleReaderImporter(user=user)
        importer.import_feeds(auto_active=auto_active)
        importer.import_starred_items(count=10)

        feed_count = UserSubscription.objects.filter(user=user).count()
        user.profile.send_import_reader_finished_email(feed_count)
        logging.user(
            user, "~FR~SBGoogle Reader import (task): ~SK%s~SN~SB~FR feeds" %
            (feed_count))
コード例 #21
0
def import_from_google_reader(request):
    code = 0

    if request.user.is_authenticated():
        reader_importer = GoogleReaderImporter(request.user)
        try:
            reader_importer.import_feeds()
            reader_importer.import_starred_items()
        except AssertionError:
            code = -1
        else:
            code = 1
        if 'import_from_google_reader' in request.session:
            del request.session['import_from_google_reader']

    return dict(code=code)
コード例 #22
0
ファイル: views.py プロジェクト: xujianrj/NewsBlur
def import_from_google_reader(request):
    code = 0
    feed_count = 0
    
    if request.user.is_authenticated():
        reader_importer = GoogleReaderImporter(request.user)
        auto_active = bool(request.REQUEST.get('auto_active') or False)
        try:
            reader_importer.import_feeds(auto_active=auto_active)
            reader_importer.import_starred_items()
        except AssertionError:
            code = -1
        else:
            code = 1
        if 'import_from_google_reader' in request.session:
            del request.session['import_from_google_reader']
    
        feed_count = UserSubscription.objects.filter(user=request.user).count()
        
    return dict(code=code, feed_count=feed_count)
コード例 #23
0
ファイル: models.py プロジェクト: 343max/NewsBlur
 def import_reader_starred_items(self, count=20):
     importer = GoogleReaderImporter(self.user)
     importer.import_starred_items(count=count)
コード例 #24
0
 def import_reader_starred_items(self, count=20):
     importer = GoogleReaderImporter(self.user)
     importer.import_starred_items(count=count)