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
87599455
Commit
87599455
authored
May 30, 2012
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #26 from plaes/doc-improvements
Some doc improvements (with patch to fix issue #25)
parents
2792627e
fbfd27d9
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
53 additions
and
36 deletions
+53
-36
index.rst
doc/api/index.rst
+0
-0
mod_base.rst
doc/api/mod_base.rst
+0
-0
mod_contrib_fileadmin.rst
doc/api/mod_contrib_fileadmin.rst
+0
-0
mod_contrib_sqlamodel.rst
doc/api/mod_contrib_sqlamodel.rst
+0
-0
mod_form.rst
doc/api/mod_form.rst
+0
-0
mod_model.rst
doc/api/mod_model.rst
+0
-0
mod_tools.rst
doc/api/mod_tools.rst
+0
-0
index.rst
doc/index.rst
+1
-1
quickstart.rst
doc/quickstart.rst
+15
-0
base.py
flask_admin/base.py
+17
-16
base.py
flask_admin/model/base.py
+20
-19
No files found.
doc/api.rst
→
doc/api
/index
.rst
View file @
87599455
File moved
doc/mod_base.rst
→
doc/
api/
mod_base.rst
View file @
87599455
File moved
doc/mod_contrib_fileadmin.rst
→
doc/
api/
mod_contrib_fileadmin.rst
View file @
87599455
File moved
doc/mod_contrib_sqlamodel.rst
→
doc/
api/
mod_contrib_sqlamodel.rst
View file @
87599455
File moved
doc/mod_form.rst
→
doc/
api/
mod_form.rst
View file @
87599455
File moved
doc/mod_model.rst
→
doc/
api/
mod_model.rst
View file @
87599455
File moved
doc/mod_tools.rst
→
doc/
api/
mod_tools.rst
View file @
87599455
File moved
doc/index.rst
View file @
87599455
...
@@ -8,7 +8,7 @@ Flask-Admin is simple and extensible administrative interface framework for `Fla
...
@@ -8,7 +8,7 @@ Flask-Admin is simple and extensible administrative interface framework for `Fla
quickstart
quickstart
model_guidelines
model_guidelines
api
api
/index
Indices and tables
Indices and tables
...
...
doc/quickstart.rst
View file @
87599455
...
@@ -242,6 +242,21 @@ you can do something like this::
...
@@ -242,6 +242,21 @@ you can do something like this::
admin = Admin(app)
admin = Admin(app)
admin.add_view(MyView(db.session))
admin.add_view(MyView(db.session))
Overriding form elements can be a bit trickier, but it is still possible. Here's an example of
how to set up a form that includes a column named ``status`` that allows only predefined values and
therefore should use a ``SelectField``::
from wtforms.fields import SelectField
class MyView(ModelView):
form_overrides = dict(status=SelectField)
form_args = dict(
# Pass the choices to the `SelectField`
status=dict(
choices=[(0, 'waiting'), (1, 'in_progress'), (2, 'finished')]
))
It is relatively easy to add support for different database backends (Mongo, etc) by inheriting from :class:`~flask.ext.admin.model.BaseModelView`.
It is relatively easy to add support for different database backends (Mongo, etc) by inheriting from :class:`~flask.ext.admin.model.BaseModelView`.
class and implementing database-related methods.
class and implementing database-related methods.
...
...
flask_admin/base.py
View file @
87599455
...
@@ -195,9 +195,9 @@ class BaseView(object):
...
@@ -195,9 +195,9 @@ class BaseView(object):
class
AdminIndexView
(
BaseView
):
class
AdminIndexView
(
BaseView
):
"""
"""
Administrative interface entry page. You can see it by going to the /admin/
URL.
Default administrative interface index page when visiting the ``/admin/``
URL.
You can override this page by passing your own view class to the `Admin
` constructor::
It can be overridden by passing your own view class to the ``Admin`
` constructor::
class MyHomeView(AdminIndexView):
class MyHomeView(AdminIndexView):
@expose('/')
@expose('/')
...
@@ -206,11 +206,12 @@ class AdminIndexView(BaseView):
...
@@ -206,11 +206,12 @@ class AdminIndexView(BaseView):
admin = Admin(index_view=MyHomeView)
admin = Admin(index_view=MyHomeView)
By default, has following rules:
Default values for the index page are following:
1. If name is not provided, will use 'Home'
2. If endpoint is not provided, will use 'admin'
* If name is not provided, 'Home' will be used.
3. If url is not provided, will use '/admin'
* If endpoint is not provided, will use ``admin``
4. Automatically associates with static folder.
* Default URL route is ``/admin``.
* Automatically associates with static folder.
"""
"""
def
__init__
(
self
,
name
=
None
,
category
=
None
,
endpoint
=
None
,
url
=
None
):
def
__init__
(
self
,
name
=
None
,
category
=
None
,
endpoint
=
None
,
url
=
None
):
super
(
AdminIndexView
,
self
)
.
__init__
(
name
or
babel
.
lazy_gettext
(
'Home'
),
super
(
AdminIndexView
,
self
)
.
__init__
(
name
or
babel
.
lazy_gettext
(
'Home'
),
...
@@ -339,25 +340,25 @@ class Admin(object):
...
@@ -339,25 +340,25 @@ class Admin(object):
def
locale_selector
(
self
,
f
):
def
locale_selector
(
self
,
f
):
"""
"""
Install
locale selector for current admin
instance.
Install
s locale selector for current ``Admin``
instance.
Example::
Example::
admin = Admin(app)
@admin.locale_selector
def admin_locale_selector():
def admin_locale_selector():
return request.args.get('lang', 'en')
return request.args.get('lang', 'en')
Another example:
admin = Admin(app)
admin.locale_selector(admin_locale_selector)
def admin_locale_selector():
It is also possible to use the ``@admin`` decorator::
return request.args.get('lang', 'en')
admin = Admin(app)
admin = Admin(app)
admin.locale_selector(admin_locale_selector)
And if you want to subclass ``Admin``, you can do something like:
@admin.locale_selector
def admin_locale_selector():
return request.args.get('lang', 'en')
Or by subclassing the ``Admin``::
class MyAdmin(Admin):
class MyAdmin(Admin):
def locale_selector(self):
def locale_selector(self):
...
...
flask_admin/model/base.py
View file @
87599455
...
@@ -93,8 +93,8 @@ class BaseModelView(BaseView):
...
@@ -93,8 +93,8 @@ class BaseModelView(BaseView):
class MyModelView(BaseModelView):
class MyModelView(BaseModelView):
sortable_columns = ('name', ('user', 'user.username'))
sortable_columns = ('name', ('user', 'user.username'))
For SQLAlchemy models, you can pass attribute instead of the string
When using SQLAlchemy models, model attributes can be used instead
too
::
of the string
::
class MyModelView(BaseModelView):
class MyModelView(BaseModelView):
sortable_columns = ('name', ('user', User.username))
sortable_columns = ('name', ('user', User.username))
...
@@ -106,7 +106,7 @@ class BaseModelView(BaseView):
...
@@ -106,7 +106,7 @@ class BaseModelView(BaseView):
text-only fields are searchable, but it is up for a model
text-only fields are searchable, but it is up for a model
implementation to make decision.
implementation to make decision.
For e
xample::
E
xample::
class MyModelView(BaseModelView):
class MyModelView(BaseModelView):
searchable_columns = ('name', 'email')
searchable_columns = ('name', 'email')
...
@@ -118,7 +118,7 @@ class BaseModelView(BaseView):
...
@@ -118,7 +118,7 @@ class BaseModelView(BaseView):
Can contain either field names or instances of :class:`~flask.ext.admin.model.filters.BaseFilter` classes.
Can contain either field names or instances of :class:`~flask.ext.admin.model.filters.BaseFilter` classes.
For example
:
Example:
:
class MyModelView(BaseModelView):
class MyModelView(BaseModelView):
column_filters = ('user', 'email')
column_filters = ('user', 'email')
...
@@ -128,7 +128,7 @@ class BaseModelView(BaseView):
...
@@ -128,7 +128,7 @@ class BaseModelView(BaseView):
"""
"""
Form class. Override if you want to use custom form for your model.
Form class. Override if you want to use custom form for your model.
For example:
For example:
:
class MyForm(wtf.Form):
class MyForm(wtf.Form):
pass
pass
...
@@ -137,12 +137,26 @@ class BaseModelView(BaseView):
...
@@ -137,12 +137,26 @@ class BaseModelView(BaseView):
form = MyForm
form = MyForm
"""
"""
form_args
=
None
"""
Dictionary of form field arguments. Refer to WTForms documentation for
list of possible options.
Example::
class MyModelView(BaseModelView):
form_args = dict(
name=dict(label='First Name', validators=[wtf.required()])
)
"""
form_columns
=
None
form_columns
=
None
"""
"""
Collection of the model field names for the form. If set to `None` will
Collection of the model field names for the form. If set to `None` will
get them from the model.
get them from the model.
For example
:
Example:
:
class MyModelView(BaseModelView):
class MyModelView(BaseModelView):
list_columns = ('name', 'email')
list_columns = ('name', 'email')
...
@@ -158,19 +172,6 @@ class BaseModelView(BaseView):
...
@@ -158,19 +172,6 @@ class BaseModelView(BaseView):
excluded_form_columns = ('last_name', 'email')
excluded_form_columns = ('last_name', 'email')
"""
"""
form_args
=
None
"""
Dictionary of form field arguments. Refer to WTForm documentation for
list of possible options.
Example::
class MyModelView(BaseModelView):
form_args = dict(
name=dict(label='First Name', validators=[wtf.required()])
)
"""
form_overrides
=
None
form_overrides
=
None
"""
"""
Dictionary of form column overrides.
Dictionary of form column overrides.
...
...
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