Пример #1
0
def add_url(request):
    code = 0
    url = request.POST['url']
    folder = request.POST['folder']
    feed = None
    
    logging.info(" ---> [%s] Adding URL: %s (in %s)" % (request.user, url, folder))
    
    if url:
        url = urlnorm.normalize(url)
        # See if it exists as a duplicate first
        duplicate_feed = DuplicateFeed.objects.filter(duplicate_address=url)
        if duplicate_feed:
            feed = [duplicate_feed[0].feed]
        else:
            feed = Feed.objects.filter(feed_address=url)
    
    if feed:
        feed = feed[0]
    else:
        try:
            feed = fetch_address_from_page(url)
        except:
            code = -2
            message = "This feed has been added, but something went wrong"\
                      " when downloading it. Maybe the server's busy."
                
    if not feed:    
        code = -1
        message = "That URL does not point to an RSS feed or a website that has an RSS feed."
    else:
        us, _ = UserSubscription.objects.get_or_create(
            feed=feed, 
            user=request.user,
            defaults={
                'needs_unread_recalc': True,
                'active': True,
            }
        )
        code = 1
        message = ""
        
        user_sub_folders_object, created = UserSubscriptionFolders.objects.get_or_create(user=request.user,
            defaults={'folders': '[]'}
        )
        if created:
            user_sub_folders = []
        else:
            user_sub_folders = json.decode(user_sub_folders_object.folders)
        user_sub_folders = _add_object_to_folder(feed.pk, folder, user_sub_folders)
        user_sub_folders_object.folders = json.encode(user_sub_folders)
        user_sub_folders_object.save()
    
    return dict(code=code, message=message)
Пример #2
0
def add_url(request):
    code = 0
    url = request.POST["url"]
    folder = request.POST["folder"]
    feed = None

    logging.info(" ---> [%s] ~FRAdding URL: ~SB%s (in %s)" % (request.user, url, folder))

    if url:
        url = urlnorm.normalize(url)
        # See if it exists as a duplicate first
        duplicate_feed = DuplicateFeed.objects.filter(duplicate_address=url).order_by("pk")
        if duplicate_feed:
            feed = [duplicate_feed[0].feed]
        else:
            feed = Feed.objects.filter(feed_address=url).order_by("pk")

    if feed:
        feed = feed[0]
    else:
        try:
            feed = fetch_address_from_page(url)
        except:
            code = -2
            message = (
                "This feed has been added, but something went wrong" " when downloading it. Maybe the server's busy."
            )

    if not feed:
        code = -1
        message = "That URL does not point to an RSS feed or a website that has an RSS feed."
    else:
        us, _ = UserSubscription.objects.get_or_create(
            feed=feed, user=request.user, defaults={"needs_unread_recalc": True, "active": True}
        )
        code = 1
        message = ""

        user_sub_folders_object, created = UserSubscriptionFolders.objects.get_or_create(
            user=request.user, defaults={"folders": "[]"}
        )
        if created:
            user_sub_folders = []
        else:
            user_sub_folders = json.decode(user_sub_folders_object.folders)
        user_sub_folders = _add_object_to_folder(feed.pk, folder, user_sub_folders)
        user_sub_folders_object.folders = json.encode(user_sub_folders)
        user_sub_folders_object.save()

        if feed.last_update < datetime.datetime.utcnow() - datetime.timedelta(days=1):
            feed.update()

    return dict(code=code, message=message)
Пример #3
0
    def add_subscription(cls,
                         user,
                         feed_address,
                         folder=None,
                         bookmarklet=False):
        feed = None
        us = None

        logging.info(" ---> [%s] ~FRAdding URL: ~SB%s (in %s)" %
                     (user, feed_address, folder))

        if feed_address:
            feed_address = urlnorm.normalize(feed_address)
            # See if it exists as a duplicate first
            duplicate_feed = DuplicateFeed.objects.filter(
                duplicate_address=feed_address).order_by('pk')
            if duplicate_feed:
                feed = [duplicate_feed[0].feed]
            else:
                feed = Feed.objects.filter(
                    feed_address=feed_address).order_by('pk')

        if feed:
            feed = feed[0]
        else:
            try:
                feed = fetch_address_from_page(feed_address)
            except:
                code = -2
                message = "This feed has been added, but something went wrong"\
                          " when downloading it. Maybe the server's busy."

        if not feed:
            code = -1
            if bookmarklet:
                message = "This site does not have an RSS feed. Nothing is linked to from this page."
            else:
                message = "This site does not point to an RSS feed or a website with an RSS feed."
        else:
            us, subscription_created = cls.objects.get_or_create(
                feed=feed,
                user=user,
                defaults={
                    'needs_unread_recalc': True,
                    'active': True,
                })
            code = 1
            message = ""

        if us and not subscription_created:
            code = -3
            message = "You are already subscribed to this site."
        elif us:
            user_sub_folders_object, created = UserSubscriptionFolders.objects.get_or_create(
                user=user, defaults={'folders': '[]'})
            if created:
                user_sub_folders = []
            else:
                user_sub_folders = json.decode(user_sub_folders_object.folders)
            user_sub_folders = add_object_to_folder(feed.pk, folder,
                                                    user_sub_folders)
            user_sub_folders_object.folders = json.encode(user_sub_folders)
            user_sub_folders_object.save()

            feed.setup_feed_for_premium_subscribers()

            if feed.last_update < datetime.datetime.utcnow(
            ) - datetime.timedelta(days=1):
                feed.update()

        print code, message, us
        return code, message, us
Пример #4
0
    def add_subscription(cls, user, feed_address, folder=None, bookmarklet=False):
        feed = None
        us = None
    
        logging.info(" ---> [%s] ~FRAdding URL: ~SB%s (in %s)" % (user, feed_address, folder))
    
        if feed_address:
            feed_address = urlnorm.normalize(feed_address)
            # See if it exists as a duplicate first
            duplicate_feed = DuplicateFeed.objects.filter(duplicate_address=feed_address).order_by('pk')
            if duplicate_feed:
                feed = [duplicate_feed[0].feed]
            else:
                feed = Feed.objects.filter(feed_address=feed_address).order_by('pk')

        if feed:
            feed = feed[0]
        else:
            try:
                feed = fetch_address_from_page(feed_address)
            except:
                code    = -2
                message = "This feed has been added, but something went wrong"\
                          " when downloading it. Maybe the server's busy."

        if not feed:    
            code = -1
            if bookmarklet:
                message = "This site does not have an RSS feed. Nothing is linked to from this page."
            else:
                message = "This site does not point to an RSS feed or a website with an RSS feed."
        else:
            us, subscription_created = cls.objects.get_or_create(
                feed=feed, 
                user=user,
                defaults={
                    'needs_unread_recalc': True,
                    'active': True,
                }
            )
            code = 1
            message = ""
    
        if us and not subscription_created:
            code = -3
            message = "You are already subscribed to this site."
        elif us:
            user_sub_folders_object, created = UserSubscriptionFolders.objects.get_or_create(
                user=user,
                defaults={'folders': '[]'}
            )
            if created:
                user_sub_folders = []
            else:
                user_sub_folders = json.decode(user_sub_folders_object.folders)
            user_sub_folders = add_object_to_folder(feed.pk, folder, user_sub_folders)
            user_sub_folders_object.folders = json.encode(user_sub_folders)
            user_sub_folders_object.save()
        
            feed.setup_feed_for_premium_subscribers()
        
            if feed.last_update < datetime.datetime.utcnow() - datetime.timedelta(days=1):
                feed.update()

        print code, message, us
        return code, message, us