Last active
December 13, 2015 21:08
-
-
Save libbkmz/4975143 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() ) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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') |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 (?, ?, ?, ?)' (...) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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