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
69b13fbe
Commit
69b13fbe
authored
Mar 13, 2017
by
Serge S. Koval
Committed by
GitHub
Mar 13, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1445 from rochacbruno/master
Added TinyDB - TinyMongo Example.
parents
23dddb0e
590bebcf
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
162 additions
and
0 deletions
+162
-0
README.rst
examples/tinymongo/README.rst
+24
-0
app.py
examples/tinymongo/app.py
+135
-0
requirements.txt
examples/tinymongo/requirements.txt
+3
-0
No files found.
examples/tinymongo/README.rst
0 → 100644
View file @
69b13fbe
TinyMongo model backend integration example.
TinyMongo is the Pymongo for TinyDB and it stores data in JSON files.
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/tinymongo/requirements.txt'
4. Run the application::
python examples/tinymongo/app.py
examples/tinymongo/app.py
0 → 100644
View file @
69b13fbe
"""
Example of Flask-Admin using TinyDB with TinyMongo
refer to README.txt for instructions
Author: Bruno Rocha <@rochacbruno>
Based in PyMongo Example and TinyMongo
"""
import
flask_admin
as
admin
from
flask
import
Flask
from
flask_admin.contrib.pymongo
import
ModelView
,
filters
from
flask_admin.form
import
Select2Widget
from
flask_admin.model.fields
import
InlineFieldList
,
InlineFormField
from
wtforms
import
fields
,
form
from
tinymongo
import
TinyMongoClient
# Create application
app
=
Flask
(
__name__
)
# Create dummy secrey key so we can use sessions
app
.
config
[
'SECRET_KEY'
]
=
'123456790'
# Create models in a JSON file localted at
DATAFOLDER
=
'/tmp/flask_admin_test'
conn
=
TinyMongoClient
(
DATAFOLDER
)
db
=
conn
.
test
# create some users for testing
# for i in range(30):
# db.user.insert({'name': 'Mike %s' % i})
# 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
page_size
=
20
can_set_page_size
=
True
# 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
)
# Contribute user_name to the models
for
item
in
data
:
item
[
'user_name'
]
=
db
.
user
.
find_one
(
{
'_id'
:
item
[
'user_id'
]}
)[
'name'
]
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: TinyMongo - TinyDB'
)
# 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 @
69b13fbe
Flask
Flask-Admin
git+https://github.com/schapman1974/tinymongo.git#egg=tinymongo
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