Example #1
0
  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