web/lib/django/core/serializers/__init__.py
changeset 29 cc9b7e14412b
parent 0 0d40e90630ef
equal deleted inserted replaced
28:b758351d191f 29:cc9b7e14412b
    34     pass
    34     pass
    35 
    35 
    36 _serializers = {}
    36 _serializers = {}
    37 
    37 
    38 def register_serializer(format, serializer_module, serializers=None):
    38 def register_serializer(format, serializer_module, serializers=None):
    39     """"Register a new serializer. 
    39     """"Register a new serializer.
    40     
    40 
    41     ``serializer_module`` should be the fully qualified module name
    41     ``serializer_module`` should be the fully qualified module name
    42     for the serializer.
    42     for the serializer.
    43     
    43 
    44     If ``serializers`` is provided, the registration will be added
    44     If ``serializers`` is provided, the registration will be added
    45     to the provided dictionary.
    45     to the provided dictionary.
    46     
    46 
    47     If ``serializers`` is not provided, the registration will be made
    47     If ``serializers`` is not provided, the registration will be made
    48     directly into the global register of serializers. Adding serializers
    48     directly into the global register of serializers. Adding serializers
    49     directly is not a thread-safe operation.
    49     directly is not a thread-safe operation.
    50     """
    50     """
    51     module = importlib.import_module(serializer_module)
    51     module = importlib.import_module(serializer_module)
    52     if serializers is None:
    52     if serializers is None:
    53         _serializers[format] = module
    53         _serializers[format] = module
    54     else:
    54     else:
    55         serializers[format] = module
    55         serializers[format] = module
    56         
    56 
    57 def unregister_serializer(format):
    57 def unregister_serializer(format):
    58     "Unregister a given serializer. This is not a thread-safe operation."
    58     "Unregister a given serializer. This is not a thread-safe operation."
    59     del _serializers[format]
    59     del _serializers[format]
    60 
    60 
    61 def get_serializer(format):
    61 def get_serializer(format):
    85     """
    85     """
    86     s = get_serializer(format)()
    86     s = get_serializer(format)()
    87     s.serialize(queryset, **options)
    87     s.serialize(queryset, **options)
    88     return s.getvalue()
    88     return s.getvalue()
    89 
    89 
    90 def deserialize(format, stream_or_string):
    90 def deserialize(format, stream_or_string, **options):
    91     """
    91     """
    92     Deserialize a stream or a string. Returns an iterator that yields ``(obj,
    92     Deserialize a stream or a string. Returns an iterator that yields ``(obj,
    93     m2m_relation_dict)``, where ``obj`` is a instantiated -- but *unsaved* --
    93     m2m_relation_dict)``, where ``obj`` is a instantiated -- but *unsaved* --
    94     object, and ``m2m_relation_dict`` is a dictionary of ``{m2m_field_name :
    94     object, and ``m2m_relation_dict`` is a dictionary of ``{m2m_field_name :
    95     list_of_related_objects}``.
    95     list_of_related_objects}``.
    96     """
    96     """
    97     d = get_deserializer(format)
    97     d = get_deserializer(format)
    98     return d(stream_or_string)
    98     return d(stream_or_string, **options)
    99 
    99 
   100 def _load_serializers():
   100 def _load_serializers():
   101     """
   101     """
   102     Register built-in and settings-defined serializers. This is done lazily so
   102     Register built-in and settings-defined serializers. This is done lazily so
   103     that user code has a chance to (e.g.) set up custom settings without
   103     that user code has a chance to (e.g.) set up custom settings without