mirror of
https://github.com/pinry/pinry.git
synced 2025-11-14 09:05:41 +01:00
Add "origin" field to the Pin model
"origin" is an optional field that stores the URI for the site that the image has been saved from, it's going to be used only from bookmarklet. Fixes #63
This commit is contained in:
@@ -114,7 +114,7 @@ class PinResource(ModelResource):
|
|||||||
return super(PinResource, self).save_m2m(bundle)
|
return super(PinResource, self).save_m2m(bundle)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
fields = ['id', 'url', 'description']
|
fields = ['id', 'url', 'origin', 'description']
|
||||||
ordering = ['id']
|
ordering = ['id']
|
||||||
queryset = Pin.objects.all()
|
queryset = Pin.objects.all()
|
||||||
resource_name = 'pin'
|
resource_name = 'pin'
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ class Image(BaseImage):
|
|||||||
|
|
||||||
class Pin(models.Model):
|
class Pin(models.Model):
|
||||||
submitter = models.ForeignKey(User)
|
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)
|
description = models.TextField(blank=True, null=True)
|
||||||
image = models.ForeignKey(Image, related_name='pin')
|
image = models.ForeignKey(Image, related_name='pin')
|
||||||
published = models.DateTimeField(auto_now_add=True)
|
published = models.DateTimeField(auto_now_add=True)
|
||||||
|
|||||||
@@ -104,6 +104,37 @@ class PinResourceTest(ResourceTestCase):
|
|||||||
pin = Pin.objects.get(url=url)
|
pin = Pin.objects.get(url=url)
|
||||||
self.assertEqual(pin.tags.count(), 0)
|
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):
|
def test_post_create_obj(self):
|
||||||
user = User.objects.get(pk=1)
|
user = User.objects.get(pk=1)
|
||||||
image = Image.objects.get(pk=1)
|
image = Image.objects.get(pk=1)
|
||||||
@@ -201,6 +232,7 @@ class PinResourceTest(ResourceTestCase):
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
u'url': self.pin_1.url,
|
u'url': self.pin_1.url,
|
||||||
|
u'origin': self.pin_1.origin,
|
||||||
u'description': self.pin_1.description,
|
u'description': self.pin_1.description,
|
||||||
u'tags': [u'creative-commons'],
|
u'tags': [u'creative-commons'],
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user