[%- if _choice_types %] from sqlalchemy_utils import ChoiceType [%- endif %] [%- if _password_types %] from werkzeug.security import generate_password_hash [%- endif %] [% for inherit_import in inherits_imports %] [[ inherit_import ]] [% endfor %] class [[ name ]](db.Model, ModelController[% for inherit in inherits %], [[ inherit ]][% endfor %]): [%- include "_model_choice_header_py" %] [%- include "_model_searchable_header_py" %] _file_columns = [ [%- for column in columns %][%- if column.is_file %]"[[ column.name ]]", [%- endif %] [%- endfor %] ] model_acls = [[ acls ]] [% for column in columns %] [%- if column._type == 'relationship' %] [%- include "_relationship_py" %] [%- else %] [[ column.name ]] = db.Column([[ column._type ]], [%- if column.default %]default="[[ column.default ]]",[%- endif %] [%- if column.index %]index=True,[%- endif %]) [%- if column.type == 'password' %] @property def [[ column.name ]]__password(self): raise AttributeError('password is not a readable attribute') @[[ column.name ]]__password.setter def [[ column.name ]]__password(self, password): self.password_hash = generate_password_hash(password) [% endif %] [%- endif %] [%- endfor %] [%- if extra_code %] [[ extra_code ]] [%- endif %] [%- if display %] def __repr__(self): [%- if display.tertiary %] return "{} ({} - {})".format(self.[[ display.primary ]], self.[[ display.secondary ]], self.[[ display.tertiary]]) [%- elif display.secondary %] return "{} ({})".format(self.[[ display.primary ]], self.[[ display.secondary ]]) [%- else %] return "{}".format(self.[[ display.primary ]]) [%- endif %] [%- endif %]