57 lines
1.8 KiB
Plaintext
57 lines
1.8 KiB
Plaintext
[%- 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 %]
|