diff --git a/pinry/api/api.py b/pinry/api/api.py new file mode 100644 index 0000000..60e62e3 --- /dev/null +++ b/pinry/api/api.py @@ -0,0 +1,16 @@ +from tastypie.resources import ModelResource +from tastypie import fields + +from pinry.pins.models import Pin + + +class PinResource(ModelResource): + thumbnail = fields.CharField(readonly=True) + + class Meta: + queryset = Pin.objects.all() + resource_name = 'pin' + include_resource_uri = False + + def dehydrate_thumbnail(self, bundle): + return Pin.objects.only('image').get(pk=bundle.data['id']).image.url_200x1000 diff --git a/pinry/api/tests.py b/pinry/api/tests.py index abdee6a..47938a2 100644 --- a/pinry/api/tests.py +++ b/pinry/api/tests.py @@ -6,10 +6,7 @@ from django.core.urlresolvers import reverse class RecentPinsTest(TestCase): def setUp(self): self.client = Client() - self.url = reverse('api:pins-recent', args=[0]) - - def test_url(self): - self.assertEqual(self.url, '/api/pins/recent/0/') + self.url = '/api/pin/?format=json' def test_status_code(self): response = self.client.get(self.url) diff --git a/pinry/api/urls.py b/pinry/api/urls.py index 65c6980..f79ca97 100644 --- a/pinry/api/urls.py +++ b/pinry/api/urls.py @@ -1,6 +1,8 @@ from django.conf.urls import patterns, include, url +from .api import PinResource +pin_resource = PinResource() urlpatterns = patterns('', - url(r'^pins/recent/(?P\d*)/$', 'pinry.api.views.pins_recent', name='pins-recent'), + url(r'', include(pin_resource.urls)), ) diff --git a/pinry/api/views.py b/pinry/api/views.py deleted file mode 100644 index 3220d10..0000000 --- a/pinry/api/views.py +++ /dev/null @@ -1,21 +0,0 @@ -from django.utils import simplejson -from django.http import HttpResponse - -from pinry.pins.models import Pin - - -def pins_recent(request, page=1): - start_pin = abs(int(page) - 1) * 25 - end_pin = int(page) * 25 - - pins = Pin.objects.order_by('-id')[start_pin:end_pin] - recent_pins = [] - for pin in pins: - recent_pins.append({ - 'id': pin.id, - 'thumbnail': pin.image.url_200x1000, - 'original': pin.image.url, - 'description': pin.description, - }) - - return HttpResponse(simplejson.dumps(recent_pins), mimetype="application/json") diff --git a/pinry/core/static/core/js/pinry.js b/pinry/core/static/core/js/pinry.js index b7037bd..b01a5e6 100644 --- a/pinry/core/static/core/js/pinry.js +++ b/pinry/core/static/core/js/pinry.js @@ -2,8 +2,8 @@ * Based on Wookmark's endless scroll. */ $(window).ready(function () { - var apiURL = '/api/pins/recent/' - var page = 1; + var apiURL = '/api/pin/?format=json&offset=' + var page = 0; var handler = null; var isLoading = false; @@ -40,7 +40,7 @@ $(window).ready(function () { $('#loader').show(); $.ajax({ - url: apiURL+page, + url: apiURL+(page*20), success: onLoadData }); }; @@ -49,6 +49,7 @@ $(window).ready(function () { * Receives data from the API, creates HTML for images and updates the layout */ function onLoadData(data) { + data = data.objects; isLoading = false; $('#loader').hide(); @@ -59,7 +60,7 @@ $(window).ready(function () { for(; i'; + html += ''; html += ''; html += ''; html += '

'+image.description+'

'; diff --git a/pinry/pins/models.py b/pinry/pins/models.py index b602c2b..31110c7 100644 --- a/pinry/pins/models.py +++ b/pinry/pins/models.py @@ -23,3 +23,6 @@ class Pin(models.Model): temp_img.flush() self.image.save(self.url.split('/')[-1], File(temp_img)) super(Pin, self).save() + + class Meta: + ordering = ['-id'] diff --git a/pinry/settings/__init__.py b/pinry/settings/__init__.py index 0988c65..52d0cd0 100644 --- a/pinry/settings/__init__.py +++ b/pinry/settings/__init__.py @@ -49,6 +49,7 @@ MESSAGE_TAGS = { messages.SUCCESS: 'alert alert-success', messages.INFO: 'alert alert-info', } +API_LIMIT_PER_PAGE = 20 INSTALLED_APPS = ( 'django.contrib.auth', diff --git a/requirements/development.txt b/requirements/development.txt index b6b40f7..6aa2712 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -1,4 +1,5 @@ Django==1.4 South==0.7.4 PIL==1.1.7 +django-tastypie==0.9.11 git+git://github.com/vannoppen/django-thumbs.git@v1.0.0#egg=django-thumbs diff --git a/requirements/jenkins.txt b/requirements/jenkins.txt index afa6ffa..00defd8 100644 --- a/requirements/jenkins.txt +++ b/requirements/jenkins.txt @@ -1,6 +1,7 @@ Django==1.4 South==0.7.4 PIL==1.1.7 +django-tastypie==0.9.11 git+git://github.com/vannoppen/django-thumbs.git@v1.0.0#egg=django-thumbs django-jenkins==0.12.1