예제 #1
0
    def test_to_comma_separated(self):
        self.assertEqual(
            to_comma_separated([]), '')

        self.assertEqual(
            to_comma_separated([1]), '1')

        self.assertEqual(
            to_comma_separated([1, 2, 3]), '1,2,3')
예제 #2
0
def api(request):
    # print 'GET', request.GET
    # print 'POST', request.POST
    api_key = request.POST.get('api_key')
    try:
        user = ApiKey.objects.get(md5=api_key).user
    except ApiKey.DoesNotExist:
        return HttpResponseForbidden("Invalid API key")

    last_refreshed = Feed.objects.for_user(user).aggregate(
        updated=Max('last_updated'))['updated']

    response = {
        "api_version": 3,
        "auth": 1,
        "last_refreshed_on_time": last_refreshed,
    }

    if 'groups' in request.GET:
        groups = [group.to_dict() for group in Group.objects.for_user(user)]
        response['groups'] = groups

    if 'feeds' in request.GET:
        feeds = [feed.to_dict() for feed in Feed.objects.for_user(user)]
        feeds_groups = [
            group.to_feedgroup_dict() for group in Group.objects.for_user(user)
        ]
        response['feeds'] = feeds
        response['feeds_groups'] = feeds_groups

    if 'links' in request.GET:
        # not supported
        response['links'] = []

    if 'items' in request.GET:
        items = []
        if 'since_id' in request.GET:
            since_id = get_int(request.GET['since_id'])
            items = Item.objects.for_user(user).filter(
                pk__gt=since_id).order_by('pk')[:50]

        elif 'max_id' in request.GET:
            max_id = get_int(request.GET['max_id'])
            items = Item.objects.for_user(user).filter(
                pk__lt=max_id).order_by('-pk')[:50]

        elif 'with_ids' in request.GET:
            ids = get_list(request.GET['with_ids'])
            items = Item.objects.for_user(user).filter(pk__in=ids)

        response['items'] = [item.to_dict() for item in items]

    if 'unread_item_ids' in request.GET:
        response['unread_item_ids'] = to_comma_separated(
            Item.objects.for_user(user).filter(is_read=False).values_list(
                'pk', flat=True))

    mark_form = MarkForm(request.POST or None)
    mark_form.do_action()

    # print "returning"
    # import pprint
    # pprint.pprint(response)

    return json_response(response)
예제 #3
0
def api(request):
    # print 'GET', request.GET
    # print 'POST', request.POST
    api_key = request.POST.get('api_key')
    try:
        user = ApiKey.objects.get(md5=api_key).user
    except ApiKey.DoesNotExist:
        return HttpResponseForbidden("Invalid API key")

    last_refreshed = Feed.objects.for_user(user).aggregate(
        updated=Max('last_updated'))['updated']

    response = {
        "api_version": 3,
        "auth": 1,
        "last_refreshed_on_time": last_refreshed,
    }

    if 'groups' in request.GET:
        groups = [group.to_dict() for group in Group.objects.for_user(user)]
        response['groups'] = groups

    if 'feeds' in request.GET:
        feeds = [feed.to_dict() for feed in Feed.objects.for_user(user)]
        feeds_groups = [group.to_feedgroup_dict()
            for group in Group.objects.for_user(user)]
        response['feeds'] = feeds
        response['feeds_groups'] = feeds_groups

    if 'links' in request.GET:
        # not supported
        response['links'] = []

    if 'items' in request.GET:
        items = []
        if 'since_id' in request.GET:
            since_id = get_int(request.GET['since_id'])
            items = Item.objects.for_user(user).filter(
                pk__gt=since_id).order_by('pk')[:50]

        elif 'max_id' in request.GET:
            max_id = get_int(request.GET['max_id'])
            items = Item.objects.for_user(user).filter(
                pk__lt=max_id).order_by('-pk')[:50]

        elif 'with_ids' in request.GET:
            ids = get_list(request.GET['with_ids'])
            items = Item.objects.for_user(user).filter(pk__in=ids)

        response['items'] = [item.to_dict() for item in items]

    if 'unread_item_ids' in request.GET:
        response['unread_item_ids'] = to_comma_separated(
            Item.objects.for_user(user).filter(
                is_read=False).values_list('pk', flat=True))

    mark_form = MarkForm(request.POST or None)
    mark_form.do_action()

    # print "returning"
    # import pprint
    # pprint.pprint(response)

    return json_response(response)