diff --git a/pinry/core/api.py b/pinry/core/api.py index 3a30557..12d90ab 100644 --- a/pinry/core/api.py +++ b/pinry/core/api.py @@ -114,7 +114,7 @@ class PinResource(ModelResource): return super(PinResource, self).save_m2m(bundle) class Meta: - fields = ['id', 'url', 'description'] + fields = ['id', 'url', 'origin', 'description'] ordering = ['id'] queryset = Pin.objects.all() resource_name = 'pin' diff --git a/pinry/core/models.py b/pinry/core/models.py index cc14090..b648c3a 100644 --- a/pinry/core/models.py +++ b/pinry/core/models.py @@ -29,7 +29,8 @@ class Image(BaseImage): class Pin(models.Model): submitter = models.ForeignKey(User) - url = models.TextField(blank=True, null=True) + url = models.URLField(null=True) + origin = models.URLField(null=True) description = models.TextField(blank=True, null=True) image = models.ForeignKey(Image, related_name='pin') published = models.DateTimeField(auto_now_add=True) diff --git a/pinry/core/tests.py b/pinry/core/tests.py index 06069ad..e683d77 100644 --- a/pinry/core/tests.py +++ b/pinry/core/tests.py @@ -104,6 +104,37 @@ class PinResourceTest(ResourceTestCase): pin = Pin.objects.get(url=url) self.assertEqual(pin.tags.count(), 0) + @mock.patch('urllib2.urlopen', mock_urlopen) + def test_post_create_url_with_empty_origin(self): + url = 'http://testserver/mocked/screenshot.png' + post_data = { + 'submitter': '/api/v1/user/1/', + 'url': url, + 'description': 'That\'s an Apple!', + 'origin': None + } + response = self.api_client.post('/api/v1/pin/', data=post_data) + self.assertHttpCreated(response) + self.assertEqual(Pin.objects.count(), 3) + self.assertEqual(Image.objects.count(), 3) + self.assertEqual(Pin.objects.get(url=url).origin, None) + + @mock.patch('urllib2.urlopen', mock_urlopen) + def test_post_create_url_with_origin(self): + origin = 'http://testserver/mocked/' + url = origin + 'screenshot.png' + post_data = { + 'submitter': '/api/v1/user/1/', + 'url': url, + 'description': 'That\'s an Apple!', + 'origin': origin + } + response = self.api_client.post('/api/v1/pin/', data=post_data) + self.assertHttpCreated(response) + self.assertEqual(Pin.objects.count(), 3) + self.assertEqual(Image.objects.count(), 3) + self.assertEqual(Pin.objects.get(url=url).origin, origin) + def test_post_create_obj(self): user = User.objects.get(pk=1) image = Image.objects.get(pk=1) @@ -201,6 +232,7 @@ class PinResourceTest(ResourceTestCase): }, }, u'url': self.pin_1.url, + u'origin': self.pin_1.origin, u'description': self.pin_1.description, u'tags': [u'creative-commons'], })