{%- if include_header -%}
# NOTE:
#
#   This is an automatically generated Elasticgit Model definition
#   from an Avro schema. Do not manually edit this file unless you
#   absolutely know what you are doing.
#
# namespace: {{schema.namespace}}
#
# VERSION INFO:
#
#   package:          {{version_info.package}}
#   package_version:  {{version_info.package_version}}
#   language_version: {{version_info.language_version}}
#

from elasticgit import models
{% endif %}

class {{model_class_for(schema.name)}}(models.Model):
    {% for field in schema.fields %}
    {{field.name}} = models.{{ field_class_for(field) }}(
        {%- if field.doc -%}u"""{{ field.doc }}"""{% else %}"""{{ field.name }}"""{% endif %}
        {%- if field.default is defined -%}, default={{ default_value(field) }}{% endif %}
        {%- if is_complex(field) -%}, fields=(
            {%- set sub_type = field['type'] %}
            {%- if sub_type['type'] == 'array' %}
                {% for item in sub_type['items'] %}{% if item != 'null' %}
                    models.{{field_class_for_core_type([item])}}('{{item}}'),{% endif %}{%- endfor %}
            {%- elif sub_type['type'] == 'record' %}
                {% for field in sub_type['fields'] %}
                    models.{{field_class_for_core_type(field.type)}}('{{field.name}}', name='{{field.name}}'),{%- endfor %}
            {% endif %}
        ){% endif %}
        {%- if field.aliases -%}, fallbacks=[{% for alias in field.aliases -%}
            models.SingleFieldFallback('{{alias}}'),
            {%- endfor %}]{% endif %}){% endfor %}

