class UJSONRendererTests(TestCase): def setUp(self): self.renderer = UJSONRenderer() self.data = { 'a': [1, 2, 3], 'b': True, 'c': 1.23, 'd': 'test', 'e': {'foo': 'bar'}, } def test_basic_data_structures_rendered_correctly(self): rendered = self.renderer.render(self.data) reloaded = ujson.loads(rendered) self.assertEqual(reloaded, self.data) def test_renderer_works_correctly_when_media_type_and_context_provided(self): rendered = self.renderer.render( data=self.data, accepted_media_type='application/json', renderer_context={}, ) reloaded = ujson.loads(rendered) self.assertEqual(reloaded, self.data)
def setUp(self): self.renderer = UJSONRenderer() self.data = { 'a': [1, 2, 3], 'b': True, 'c': 1.23, 'd': 'test', 'e': {'foo': 'bar'}, }
def _do_export(category_name, queryset, serializer): # Filter out already exported data according to the export manager export_info, _ = ExportManager.objects.get_or_create(export_category=category_name) time_format = '%Y-%m-%d_%H.%M.%S' # Filter out all rows that have already been exported queryset = queryset.filter(pk__gt=export_info.last_row).order_by('pk') while queryset.count(): # Limit to 1 week at a time first_record = queryset.filter(pk__gt=export_info.last_row).first() logs_to_export = queryset.filter( pk__gt=export_info.last_row, timestamp__lte=first_record.timestamp + timedelta(weeks=1) ) last_record = logs_to_export.last() # Set up the folder if necessary filename = os.path.join( settings.BASE_DIR, EXPORT_FOLDER, category_name, '{}_{}_to_{}.json'.format( category_name, first_record.timestamp.strftime(time_format), last_record.timestamp.strftime(time_format), ) ) if not os.path.isdir(os.path.dirname(filename)): os.makedirs(os.path.dirname(filename)) serialized = serializer(logs_to_export, many=True) rendered = UJSONRenderer().render(serialized.data) with open(filename, 'w') as outfile: outfile.write(rendered) export_info.last_row = last_record.pk export_info.save() # Update queryset to filter out just-exported entries queryset = queryset.filter(pk__gt=export_info.last_row)
print("Test both:") samples = [] for i in range(0, 10): start = datetime.now() data = renderers.JSONRenderer().render( serializers.ListSerializer(MyModel.objects.all(), child=ToReprSerializer(ordered=False)).data) samples.append(datetime.now() - start) print("Avg: %s" % (sum(samples, timedelta()) / 10)) print("Test both + ujson:") samples = [] for i in range(0, 10): start = datetime.now() data = UJSONRenderer().render( serializers.ListSerializer(MyModel.objects.all(), child=ToReprSerializer(ordered=False)).data) samples.append(datetime.now() - start) print("Avg: %s" % (sum(samples, timedelta()) / 10)) class ToDictSerializer(fast_serializer.Mixin, serializers.ModelSerializer): to_representation = fast_serializer.dict_to_representation class Meta: model = MyModel print("Test both + ujson + dict:") samples = [] for i in range(0, 10):
def uut(): return UJSONRenderer()