def save(self, internal=False, *args, **kwargs): if internal: with transaction.commit_on_success(): with reversion.create_revision(): super(Listing, self).save(*args, **kwargs) for a in self._amenity_list: #add actually does a save internally, hitting the db self.amenities.add(a) serializer = JSONSerializer() for event in self._uncommitted_events: #we don't need to store the instance because it's not really part of the parameters #and django-reversion will keep a snapshop kwargs_to_save = {k: v for k, v in event.kwargs.items() if k != 'instance'} data = serializer.serialize(kwargs_to_save) reversion.add_meta(RevisionEvent, name=event.event_fq_name, version=event.version, data=data) self.send_events() else: from scrapy_test.aggregates.listing.services import listing_service listing_service.save_or_update(self)
def test_serializer_serializes_model_correctly(): serializer = JSONSerializer() test_class = FakeTestClass(name='Some Name', id=1, url='http://www.test.com', trusted_geo_data=False) dict_data = {'test_model': test_class} serialized_data = serializer.serialize(dict_data) deserialized_data = json.loads(serialized_data) assert deserialized_data["test_model"]["model"] == u'django_utils.faketestclass'
def test_serializer_serializes_queryset_correctly(): serializer = JSONSerializer() test_class = FakeTestClass(name='Some Name', id=1, url='http://www.test.com', trusted_geo_data=False) test_class.save() test_class = FakeTestClass(name='Some Name 2', id=2, url='http://www2.test.com', trusted_geo_data=True) test_class.save() dict_data = {'test_models': FakeTestClass.objects.all()} serialized_data = serializer.serialize(dict_data) deserialized_data = json.loads(serialized_data) assert deserialized_data["test_models"][0]["model"] == u'django_utils.faketestclass'
def test_serializer_serializes_dict_with_model(): serializer = JSONSerializer() test_class = FakeTestClass(name='Some Name', id=1, url='http://www.test.com', trusted_geo_data=False) dict_data = {'attrs': {'city': u'Brooklyn', 'posted_date': datetime.datetime(2013, 8, 29, 12, 55, tzinfo=tzoffset(u'EDT', -14400)), 'description': u'Beautiful 3 Bedroom 2 Full bath\n\nAmazing Finishes\n\nHuge ' u'Backyard\n\n100% no fee By owner\n\nAll Bedrooms can fit King and Queen ' u'sized beds\n\nSteps to the G train\n\nLaundry in the Building\n\nClose to ' u'All your needs\n\nNo brokers Please\n\nCall or Text Danny @ 646 338 ' u'3852\n\n3526+56+5', 'title': u'$2695 / 3br - 3 Bedroom 2 Full bath + Massive Backyard~Prime Location (bedstuy / ' u'clinton hill)', 'url': u'http://newyork.craigslist.org/brk/abo/4033538277.html', 'broker_fee': False, 'price': 2695.0, 'state': u'NY', 'contact_phone_number': u'(646) 338-3852', 'address': u'Nostrand Avenue & Vernon Avenue', 'lat': 40.6942608, 'bedroom_count': 3, 'lng': -73.9523367, 'formatted_address': u'Nostrand Avenue & Vernon Avenue, Brooklyn, NY 11205, USA', 'contact_name': u'bedstuy / clinton hill', 'listing_source': test_class, 'zip_code': u'11205'}} serialized_data = serializer.serialize(dict_data) deserialized_data = json.loads(serialized_data) x = deserialized_data