# The hardcoded entries cannot be inferred from the models. To get rid of in the long run
# 

from .xosbase import XOSBase,XOSBaseManager,XOSBaseDeletionManager,PlModelMixIn,ModelLink
from .contenttype import ContentType
from .site import Site
from .user import User

{% for m in proto.messages -%}
{% if not m.options.skip_init -%}
from .{{ m.name | lower }} import {{ m.name }} 
{% endif -%}
{% endfor -%}
