Example #1
0
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)
Example #2
0
 def setUp(self):
     self.renderer = UJSONRenderer()
     self.data = {
         'a': [1, 2, 3],
         'b': True,
         'c': 1.23,
         'd': 'test',
         'e': {'foo': 'bar'},
     }
Example #3
0
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)
Example #4
0
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()