def parse(self, response): # shared_stories has `object_id` not int, but like 252974534827155_1073741878 if 'object_id' in response and '_' in response['object_id']: del response['object_id'] if 'from' in response: response['author_json'] = response.pop('from') if 'to' in response and len(response['to']['data']): response['owners_json'] = [] for owner in response.pop('to')['data']: if owner not in response['owners_json']: response['owners_json'].append(owner) for field in ['likes', 'comments', 'shares']: if field in response: if 'count' in response[field]: response['%s_count' % field] = response[field]['count'] response['%s_json' % field] = response.pop(field) super(Post, self).parse(response) if self.author is None and self.author_json: self.author = get_or_create_from_small_resource(self.author_json) if self.owners.count() == 0 and self.owners_json: self._external_links_to_add['owners'] = [] for owner_json in self.owners_json: try: owner = get_or_create_from_small_resource(owner_json) except UnknownResourceType: continue if owner: self._external_links_to_add['owners'] += [PostOwner(post=self, owner=owner)]
def test_fetch_page_from_resource(self): Page.remote.fetch(PAGE_ID) page = get_or_create_from_small_resource(PAGE_RESOURCE_SHORT) self.assertEqual(page.name, PAGE_RESOURCE_SHORT['name']) self.assertEqual(page.category, PAGE_RESOURCE_SHORT['category']) page1 = Page.objects.all()[0] self.assertEqual(page1.website, "http://developers.facebook.com") page2 = get_or_create_from_small_resource(PAGE_RESOURCE_SHORT) self.assertEqual(page2.website, "http://developers.facebook.com") self.assertEqual(page2.category, PAGE_RESOURCE_SHORT['category'])
def test_fetch_page_from_resource(self): Page.remote.fetch(PAGE_ID) page = get_or_create_from_small_resource(PAGE_RESOURCE_SHORT) self.assertEqual(page.name, PAGE_RESOURCE_SHORT['name']) self.assertEqual(page.category, PAGE_RESOURCE_SHORT['category']) page1 = Page.objects.all()[0] self.assertEqual(page1.website, "http://developers.facebook.com") page2 = get_or_create_from_small_resource(PAGE_RESOURCE_SHORT) self.assertEqual(page2.website, "http://developers.facebook.com") self.assertEqual(page2.category, PAGE_RESOURCE_SHORT['category'])