Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
flask-admin
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Python-Dev
flask-admin
Commits
7dd0a393
Commit
7dd0a393
authored
Mar 13, 2017
by
Bruno Rocha
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added example working with rochacbruno/tinyMongo
parent
23dddb0e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
150 additions
and
0 deletions
+150
-0
README.rst
examples/tinymongo/README.rst
+22
-0
app.py
examples/tinymongo/app.py
+125
-0
requirements.txt
examples/tinymongo/requirements.txt
+3
-0
No files found.
examples/tinymongo/README.rst
0 → 100644
View file @
7dd0a393
PyMongo model backend integration example.
To run this example:
1. Clone the repository::
git clone https://github.com/flask-admin/flask-admin.git
cd flask-admin
2. Create and activate a virtual environment::
virtualenv env
source env/bin/activate
3. Install requirements::
pip install -r 'examples/pymongo/requirements.txt'
4. Run the application::
python examples/pymongo/app.py
examples/tinymongo/app.py
0 → 100644
View file @
7dd0a393
from
tinymongo
import
TinyMongoClient
from
bson.objectid
import
ObjectId
from
flask
import
Flask
import
flask_admin
as
admin
from
wtforms
import
form
,
fields
from
flask_admin.form
import
Select2Widget
from
flask_admin.contrib.pymongo
import
ModelView
,
filters
from
flask_admin.model.fields
import
InlineFormField
,
InlineFieldList
# Create application
app
=
Flask
(
__name__
)
# Create dummy secrey key so we can use sessions
app
.
config
[
'SECRET_KEY'
]
=
'123456790'
# Create models
conn
=
TinyMongoClient
(
'/tmp/flask_admin_test'
)
db
=
conn
.
test
# User admin
class
InnerForm
(
form
.
Form
):
name
=
fields
.
StringField
(
'Name'
)
test
=
fields
.
StringField
(
'Test'
)
class
UserForm
(
form
.
Form
):
foo
=
fields
.
StringField
(
'foo'
)
name
=
fields
.
StringField
(
'Name'
)
email
=
fields
.
StringField
(
'Email'
)
password
=
fields
.
StringField
(
'Password'
)
# Inner form
inner
=
InlineFormField
(
InnerForm
)
# Form list
form_list
=
InlineFieldList
(
InlineFormField
(
InnerForm
))
class
UserView
(
ModelView
):
column_list
=
(
'name'
,
'email'
,
'password'
,
'foo'
)
column_sortable_list
=
(
'name'
,
'email'
,
'password'
)
form
=
UserForm
# Tweet view
class
TweetForm
(
form
.
Form
):
name
=
fields
.
StringField
(
'Name'
)
user_id
=
fields
.
SelectField
(
'User'
,
widget
=
Select2Widget
())
text
=
fields
.
StringField
(
'Text'
)
testie
=
fields
.
BooleanField
(
'Test'
)
class
TweetView
(
ModelView
):
column_list
=
(
'name'
,
'user_name'
,
'text'
)
column_sortable_list
=
(
'name'
,
'text'
)
column_filters
=
(
filters
.
FilterEqual
(
'name'
,
'Name'
),
filters
.
FilterNotEqual
(
'name'
,
'Name'
),
filters
.
FilterLike
(
'name'
,
'Name'
),
filters
.
FilterNotLike
(
'name'
,
'Name'
),
filters
.
BooleanEqualFilter
(
'testie'
,
'Testie'
))
column_searchable_list
=
(
'name'
,
'text'
)
form
=
TweetForm
def
get_list
(
self
,
*
args
,
**
kwargs
):
count
,
data
=
super
(
TweetView
,
self
)
.
get_list
(
*
args
,
**
kwargs
)
# Grab user names
query
=
{
'_id'
:
{
'$in'
:
[
x
[
'user_id'
]
for
x
in
data
]}}
users
=
db
.
user
.
find
(
query
,
fields
=
(
'name'
,))
# Contribute user names to the models
users_map
=
dict
((
x
[
'_id'
],
x
[
'name'
])
for
x
in
users
)
for
item
in
data
:
item
[
'user_name'
]
=
users_map
.
get
(
item
[
'user_id'
])
return
count
,
data
# Contribute list of user choices to the forms
def
_feed_user_choices
(
self
,
form
):
users
=
db
.
user
.
find
(
fields
=
(
'name'
,))
form
.
user_id
.
choices
=
[(
str
(
x
[
'_id'
]),
x
[
'name'
])
for
x
in
users
]
return
form
def
create_form
(
self
):
form
=
super
(
TweetView
,
self
)
.
create_form
()
return
self
.
_feed_user_choices
(
form
)
def
edit_form
(
self
,
obj
):
form
=
super
(
TweetView
,
self
)
.
edit_form
(
obj
)
return
self
.
_feed_user_choices
(
form
)
# Correct user_id reference before saving
def
on_model_change
(
self
,
form
,
model
):
user_id
=
model
.
get
(
'user_id'
)
model
[
'user_id'
]
=
user_id
return
model
# Flask views
@
app
.
route
(
'/'
)
def
index
():
return
'<a href="/admin/">Click me to get to Admin!</a>'
if
__name__
==
'__main__'
:
# Create admin
admin
=
admin
.
Admin
(
app
,
name
=
'Example: PyMongo'
)
# Add views
admin
.
add_view
(
UserView
(
db
.
user
,
'User'
))
admin
.
add_view
(
TweetView
(
db
.
tweet
,
'Tweets'
))
# Start app
app
.
run
(
debug
=
True
)
examples/tinymongo/requirements.txt
0 → 100644
View file @
7dd0a393
Flask
Flask-Admin
pymongo==2.4.1
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment