Ejemplo n.º 1
0
    def _prepare(cls):
        """
        Creates some methods once self._meta has been populated.
        """
        opts = cls._meta
        opts._prepare(cls)

        if opts.order_with_respect_to:
            cls.get_next_in_order = curry(cls._get_next_or_previous_in_order, is_next=True)
            cls.get_previous_in_order = curry(cls._get_next_or_previous_in_order, is_next=False)
            # defer creating accessors on the foreign class until we are
            # certain it has been created
            def make_foreign_order_accessors(field, model, cls):
                setattr(field.rel.to, "get_%s_order" % cls.__name__.lower(), curry(method_get_order, cls))
                setattr(field.rel.to, "set_%s_order" % cls.__name__.lower(), curry(method_set_order, cls))

            add_lazy_relation(
                cls, opts.order_with_respect_to, opts.order_with_respect_to.rel.to, make_foreign_order_accessors
            )

        # Give the class a docstring -- its definition.
        if cls.__doc__ is None:
            cls.__doc__ = "%s(%s)" % (cls.__name__, ", ".join([f.attname for f in opts.fields]))

        if hasattr(cls, "get_absolute_url"):
            cls.get_absolute_url = update_wrapper(
                curry(get_absolute_url, opts, cls.get_absolute_url), cls.get_absolute_url
            )

        signals.class_prepared.send(sender=cls)
Ejemplo n.º 2
0
 def contribute_to_class(self, cls, name):
     super(DateField,self).contribute_to_class(cls, name)
     if not self.null:
         setattr(cls, 'get_next_by_%s' % self.name,
             curry(cls._get_next_or_previous_by_FIELD, field=self,
                   is_next=True))
         setattr(cls, 'get_previous_by_%s' % self.name,
             curry(cls._get_next_or_previous_by_FIELD, field=self,
                   is_next=False))
Ejemplo n.º 3
0
 def contribute_to_class(self, cls, name):
     self.set_attributes_from_name(name)
     self.model = cls
     cls._meta.add_field(self)
     if self.choices:
         setattr(cls, 'get_%s_display' % self.name,
                 curry(cls._get_FIELD_display, field=self))
Ejemplo n.º 4
0
 def make_foreign_order_accessors(field, model, cls):
     setattr(field.rel.to, "get_%s_order" % cls.__name__.lower(), curry(method_get_order, cls))
     setattr(field.rel.to, "set_%s_order" % cls.__name__.lower(), curry(method_set_order, cls))
Ejemplo n.º 5
0
    # Check that the deserialized object contains data in only the serialized fields.
    self.assertEqual(result.object.field1, 'first')
    self.assertEqual(result.object.field2, '')
    self.assertEqual(result.object.field3, 'third')

def streamTest(format, self):
    obj = ComplexModel(field1='first',field2='second',field3='third')
    obj.save_base(raw=True)

    # Serialize the test database to a stream
    for stream in (six.StringIO(), HttpResponse()):
        serializers.serialize(format, [obj], indent=2, stream=stream)

        # Serialize normally for a comparison
        string_data = serializers.serialize(format, [obj], indent=2)

        # Check that the two are the same
        if isinstance(stream, six.StringIO):
            self.assertEqual(string_data, stream.getvalue())
        else:
            self.assertEqual(string_data, stream.content.decode('utf-8'))
        stream.close()

for format in serializers.get_serializer_formats():
    setattr(SerializerTests, 'test_' + format + '_serializer', curry(serializerTest, format))
    setattr(SerializerTests, 'test_' + format + '_natural_key_serializer', curry(naturalKeySerializerTest, format))
    setattr(SerializerTests, 'test_' + format + '_serializer_fields', curry(fieldsTest, format))
    if format != 'python':
        setattr(SerializerTests, 'test_' + format + '_serializer_stream', curry(streamTest, format))