Skip to content

Instantly share code, notes, and snippets.

@libbkmz
Last active December 13, 2015 21:08
Show Gist options
  • Save libbkmz/4975143 to your computer and use it in GitHub Desktop.
Save libbkmz/4975143 to your computer and use it in GitHub Desktop.
from flask.ext.wtf import Form, TextField, PasswordField, TextAreaField, validators
from flask.ext.admin.form import Select2TagsWidget, Select2Field, Select2TagsField
from wtforms.ext.sqlalchemy.fields import QuerySelectField
from blog.models import Post, User
class UserEditForm(Form):
login = TextField('Login name', [validators.required()])
name = TextField('Your\'s name ', [validators.optional()])
email = TextField('Email address',
[validators.Email(),
validators.required(),
validators.EqualTo('email_2', message='Emails must match')
])
email_2 = TextField('Confirm email', [validators.Email()])
# password = PasswordField('Choose good password', )
password = Select2TagsField("test", )
class PostEditForm(Form):
title = TextField("")
text = TextAreaField("Text")
tags = Select2TagsField(default="", )
author = QuerySelectField(query_factory=lambda: User.query.all() )
from flask.ext import admin
from flask.ext.admin.contrib.sqlamodel import ModelView
from blog.models import Post, User
from blog.admin.forms import UserEditForm, PostEditForm
class PostsModelView(ModelView):
form = PostEditForm
def __init__(self, session, **kwargs):
# You can pass name and other parameters if you want to
super(PostsModelView, self).__init__(Post, session, **kwargs)
class UsersModelView(ModelView):
column_list = ('login', 'name', 'email')
form = UserEditForm
def __init__(self, session, **kwargs):
# You can pass name and other parameters if you want to
super(UsersModelView, self).__init__(User, session, **kwargs)
# @admin.expose('/')
# def index(self):
# return self.render('admin/posts.html')
Traceback (most recent call last):
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/flask/app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/flask/app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/flask/app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/flask/app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/flask_admin/base.py", line 56, in inner
return f(self, **kwargs)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/flask_admin/base.py", line 56, in inner
return f(self, **kwargs)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/flask_admin/base.py", line 56, in inner
return f(self, **kwargs)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/flask_admin/model/base.py", line 897, in create_view
if self.create_model(form):
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/flask_admin/contrib/sqlamodel/view.py", line 668, in create_model
flash(gettext('Failed to create model. %(error)s', error=str(ex)), 'error')
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/exc.py", line 222, in __str__
repr(self.statement), repr(params_repr)))
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/sql/util.py", line 260, in __repr__
return repr(self.params)
File "/home/bkmz/Dev/web/flask-blog/blog/blog/models.py", line 23, in __repr__
return '<User %r>' % (self.name)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/attributes.py", line 251, in __get__
return self.impl.get(instance_state(instance), dict_)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/attributes.py", line 543, in get
value = callable_(passive)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/state.py", line 376, in __call__
self.manager.deferred_scalar_loader(self, toload)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/loading.py", line 600, in load_scalar_attributes
only_load_props=attribute_names)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/loading.py", line 225, in load_on_ident
return q.one()
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2209, in one
ret = list(self)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2252, in __iter__
return self._execute_and_instances(context)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2265, in _execute_and_instances
close_with_result=True)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2256, in _connection_from_session
**kw)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 771, in connection
close_with_result=close_with_result)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 775, in _connection_for_bind
return self.transaction._connection_for_bind(engine)
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 260, in _connection_for_bind
self._assert_is_active()
File "/home/bkmz/Dev/web/flask-blog/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 174, in _assert_is_active
% self._rollback_exception
InvalidRequestError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (InterfaceError) Error binding parameter 3 - probably unsupported type. u'INSERT INTO posts (title, text, tags, author) VALUES (?, ?, ?, ?)' (...)
from flask.ext.sqlalchemy import SQLAlchemy
from blog import app
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
login = db.Column(db.String(), unique=True)
name = db.Column(db.String(), unique=True)
email = db.Column(db.String(), unique=True)
password = db.Column(db.String(), )
salt = db.Column(db.String(16), )
def __init__(self, name=None, email=None, password="123"):
self.name = name
self.email = email
self.password = password
def __repr__(self):
return '<User %r>' % (self.name)
class Post(db.Model):
__tablename__ = 'posts'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String())
text = db.Column(db.Text(), )
tags = db.Column(db.String(), )
author = db.Column(db.Integer(), db.ForeignKey('users.id'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment