Commit 222261a9 authored by Alex Kerney's avatar Alex Kerney

Bringing Flask-Admin inline with the current Flask extension import naming...

Bringing Flask-Admin inline with the current Flask extension import naming guidelines. Namely flask_admin rather than flask.ext.admin per https://github.com/mitsuhiko/flask/issues/1135 as the old flask.ext.* method is being deprecated for Flask 1.0.
parent 9f9fee13
``flask.ext.admin.actions``
``flask_admin.actions``
===========================
.. automodule:: flask.ext.admin.actions
.. automodule:: flask_admin.actions
.. autofunction:: action
......
``flask.ext.admin.base``
``flask_admin.base``
========================
.. automodule:: flask.ext.admin.base
.. automodule:: flask_admin.base
Base View
---------
......
``flask.ext.admin.contrib.fileadmin``
``flask_admin.contrib.fileadmin``
=====================================
.. automodule:: flask.ext.admin.contrib.fileadmin
.. automodule:: flask_admin.contrib.fileadmin
.. autoclass:: FileAdmin
:members:
......
``flask.ext.admin.contrib.mongoengine``
``flask_admin.contrib.mongoengine``
=======================================
MongoEngine model backend implementation.
.. automodule:: flask.ext.admin.contrib.mongoengine
.. automodule:: flask_admin.contrib.mongoengine
.. autoclass:: ModelView
:members:
......@@ -12,7 +12,7 @@ MongoEngine model backend implementation.
filter_converter, model_form_converter
allowed_search_types, form_subdocuments
Class inherits configuration options from :class:`~flask.ext.admin.model.BaseModelView` and they're not displayed here.
Class inherits configuration options from :class:`~flask_admin.model.BaseModelView` and they're not displayed here.
.. autoattribute:: column_filters
.. autoattribute:: column_type_formatters
......
``flask.ext.admin.contrib.mongoengine.fields``
``flask_admin.contrib.mongoengine.fields``
==============================================
.. automodule:: flask.ext.admin.contrib.mongoengine.fields
.. automodule:: flask_admin.contrib.mongoengine.fields
.. autoclass:: ModelFormField
:members:
......@@ -11,4 +11,3 @@
.. autoclass:: MongoImageField
:members:
``flask.ext.admin.contrib.peewee``
``flask_admin.contrib.peewee``
==================================
Peewee model backend implementation.
.. automodule:: flask.ext.admin.contrib.peewee
.. automodule:: flask_admin.contrib.peewee
.. autoclass:: ModelView
:members:
......@@ -11,7 +11,7 @@ Peewee model backend implementation.
:exclude-members: column_filters, filter_converter, model_form_converter,
inline_model_form_converter, fast_mass_delete, inline_models
Class inherits configuration options from :class:`~flask.ext.admin.model.BaseModelView` and they're not displayed here.
Class inherits configuration options from :class:`~flask_admin.model.BaseModelView` and they're not displayed here.
.. autoattribute:: column_filters
.. autoattribute:: filter_converter
......
``flask.ext.admin.contrib.pymongo``
``flask_admin.contrib.pymongo``
===================================
PyMongo model backend implementation.
.. automodule:: flask.ext.admin.contrib.pymongo
.. automodule:: flask_admin.contrib.pymongo
.. autoclass:: ModelView
:members:
:inherited-members:
:exclude-members: column_filters
Class inherits configuration options from :class:`~flask.ext.admin.model.BaseModelView` and they're not displayed here.
Class inherits configuration options from :class:`~flask_admin.model.BaseModelView` and they're not displayed here.
.. autoattribute:: column_filters
``flask.ext.admin.contrib.sqla``
``flask_admin.contrib.sqla``
================================
SQLAlchemy model backend implementation.
.. automodule:: flask.ext.admin.contrib.sqla
.. automodule:: flask_admin.contrib.sqla
.. autoclass:: ModelView
:members:
......@@ -15,7 +15,7 @@ SQLAlchemy model backend implementation.
inline_models, form_choices,
form_optional_types
Class inherits configuration options from :class:`~flask.ext.admin.model.BaseModelView` and they're not displayed here.
Class inherits configuration options from :class:`~flask_admin.model.BaseModelView` and they're not displayed here.
.. autoattribute:: column_auto_select_related
.. autoattribute:: column_select_related_list
......
``flask.ext.admin.form``
``flask_admin.form``
========================
.. automodule:: flask.ext.admin.form
.. automodule:: flask_admin.form
.. autoclass:: BaseForm
:members:
``flask.ext.admin.form.fields``
===============================
``flask_admin.form.fields``
===========================
.. automodule:: flask.ext.admin.form.fields
.. automodule:: flask_admin.form.fields
.. autoclass:: TimeField
:members:
......
``flask.ext.admin.form.rules``
==============================
``flask_admin.form.rules``
==========================
.. automodule:: flask.ext.admin.form.rules
.. automodule:: flask_admin.form.rules
.. autoclass:: BaseRule
:members: __init__
......@@ -35,4 +35,3 @@
.. autoclass:: FieldSet
:members: __init__
``flask.ext.admin.form.upload``
``flask_admin.form.upload``
===============================
.. automodule:: flask.ext.admin.form.upload
.. automodule:: flask_admin.form.upload
.. autoclass:: FileUploadField
:members: __init__
......
``flask.ext.admin.helpers``
``flask_admin.helpers``
===========================
.. automodule:: flask.ext.admin.helpers
.. automodule:: flask_admin.helpers
.. autofunction:: get_current_view
......@@ -17,4 +17,3 @@
.. autofunction:: resolve_ctx
.. autofunction:: get_render_ctx
``flask.ext.admin.model``
``flask_admin.model``
=========================
.. automodule:: flask.ext.admin.model
.. automodule:: flask_admin.model
.. autoclass:: BaseModelView
:members:
......
``flask.ext.admin.model.template``
``flask_admin.model.template``
==================================
.. automodule:: flask.ext.admin.model.template
.. automodule:: flask_admin.model.template
.. autofunction:: macro
``flask.ext.admin.tools``
``flask_admin.tools``
=========================
.. automodule:: flask.ext.admin.tools
.. automodule:: flask_admin.tools
.. autofunction:: import_module
.. autofunction:: import_attribute
.. autofunction:: module_not_found
.. autofunction:: rec_getattr
......@@ -42,7 +42,7 @@ changes necessary to other code. ``ModelView`` should be imported from
``geoa`` rather than the one imported from ``sqla``::
from geoalchemy2 import Geometry
from flask.ext.admin.contrib.geoa import ModelView
from flask_admin.contrib.geoa import ModelView
# .. flask initialization
db = SQLAlchemy(app)
......
......@@ -11,7 +11,7 @@ with PyMongo:
1. Provide list of columns by setting `column_list` property
2. Provide form to use by setting `form` property
3. When instantiating :class:`flask.ext.admin.contrib.pymongo.ModelView` class, you have to provide PyMongo collection object
3. When instantiating :class:`flask_admin.contrib.pymongo.ModelView` class, you have to provide PyMongo collection object
This is minimal PyMongo view::
......
......@@ -22,9 +22,9 @@ If you use Flask-SQLAlchemy, this is how you initialize Flask-Admin
and get session from the `SQLAlchemy` object::
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.admin import Admin
from flask.ext.admin.contrib.sqla import ModelView
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
app = Flask(__name__)
# .. read settings
......@@ -73,7 +73,7 @@ Customizing administrative interface
List view can be customized in different ways.
First of all, you can use various class-level properties to configure
what should be displayed and how. For example, :attr:`~flask.ext.admin.contrib.sqla.ModelView.column_list` can be used to show some of
what should be displayed and how. For example, :attr:`~flask_admin.contrib.sqla.ModelView.column_list` can be used to show some of
the column or include extra columns from related models.
For example::
......@@ -89,7 +89,7 @@ For example::
# Add filters for name and email columns
column_filters = ('name', 'email')
Alternatively, you can override some of the :class:`~flask.ext.admin.contrib.sqla.ModelView` methods and implement your custom logic.
Alternatively, you can override some of the :class:`~flask_admin.contrib.sqla.ModelView` methods and implement your custom logic.
For example, if you need to contribute additional field to the generated form,
you can do something like this::
......
......@@ -43,9 +43,9 @@ Let's write a bit of code to create a simple CRUD interface for the `Post` SQLAl
Flask-SQLAlchemy extension, but you don't have to use it (you could also use the SQLAlchemy declarative extension)::
from flask import Flask
from flask.ext.admin import Admin
from flask.ext.admin.contrib.sqla import ModelView
from flask.ext.sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app)
......@@ -91,17 +91,17 @@ SQLAlchemy backend. You can also see which *django-admin* properties they corres
Django Flask-Admin
=========================================== ==============================================
actions :doc:`api/mod_actions`
exclude :attr:`~flask.ext.admin.model.BaseModelView.form_excluded_columns`
fields :attr:`~flask.ext.admin.model.BaseModelView.form_columns`
form :attr:`~flask.ext.admin.model.BaseModelView.form`
formfield_overrides :attr:`~flask.ext.admin.model.BaseModelView.form_args`
inlines :attr:`~flask.ext.admin.contrib.sqlalchemy.ModelView.inline_models`
list_display :attr:`~flask.ext.admin.model.BaseModelView.column_list`
list_filter :attr:`~flask.ext.admin.contrib.sqlalchemy.ModelView.column_filters`
list_per_page :attr:`~flask.ext.admin.model.BaseModelView.page_size`
search_fields :attr:`~flask.ext.admin.model.BaseModelView.column_searchable_list`
add_form_template :attr:`~flask.ext.admin.model.BaseModelView.create_template`
change_form_template :attr:`~flask.ext.admin.model.BaseModelView.change_form_template`
exclude :attr:`~flask_admin.model.BaseModelView.form_excluded_columns`
fields :attr:`~flask_admin.model.BaseModelView.form_columns`
form :attr:`~flask_admin.model.BaseModelView.form`
formfield_overrides :attr:`~flask_admin.model.BaseModelView.form_args`
inlines :attr:`~flask_admin.contrib.sqlalchemy.ModelView.inline_models`
list_display :attr:`~flask_admin.model.BaseModelView.column_list`
list_filter :attr:`~flask_admin.contrib.sqlalchemy.ModelView.column_filters`
list_per_page :attr:`~flask_admin.model.BaseModelView.page_size`
search_fields :attr:`~flask_admin.model.BaseModelView.column_searchable_list`
add_form_template :attr:`~flask_admin.model.BaseModelView.create_template`
change_form_template :attr:`~flask_admin.model.BaseModelView.change_form_template`
=========================================== ==============================================
You might want to check :doc:`api/mod_model` for basic model configuration options (reused by all model
......@@ -158,4 +158,3 @@ Tips and hints
5. There's a so called "index view". By default it is empty, but you can put any information you need there. It is displayed
under the *Home* menu option.
......@@ -27,12 +27,12 @@ property one of your admin views::
In this example, only three fields will be rendered and `email` field will be above other two fields.
Whenever Flask-Admin sees a string value in `form_create_rules`, it automatically assumes that it is a
form field reference and creates a :class:`flask.ext.admin.form.rules.Field` class instance for that field.
form field reference and creates a :class:`flask_admin.form.rules.Field` class instance for that field.
Lets say we want to display some text between the `email` and `first_name` fields. This can be accomplished by
using the :class:`flask.ext.admin.form.rules.Text` class::
using the :class:`flask_admin.form.rules.Text` class::
from flask.ext.admin.form import rules
from flask_admin.form import rules
class RuleView(sqla.ModelView):
form_create_rules = ('email', rules.Text('Foobar'), 'first_name', 'last_name')
......@@ -40,25 +40,25 @@ using the :class:`flask.ext.admin.form.rules.Text` class::
Built-in rules
--------------
Flask-Admin comes with few built-in rules that can be found in the :mod:`flask.ext.admin.form.rules` module:
Flask-Admin comes with few built-in rules that can be found in the :mod:`flask_admin.form.rules` module:
======================================================= ========================================================
Form Rendering Rule Description
======================================================= ========================================================
:class:`flask.ext.admin.form.rules.BaseRule` All rules derive from this class
:class:`flask.ext.admin.form.rules.NestedRule` Allows rule nesting, useful for HTML containers
:class:`flask.ext.admin.form.rules.Text` Simple text rendering rule
:class:`flask.ext.admin.form.rules.HTML` Same as `Text` rule, but does not escape the text
:class:`flask.ext.admin.form.rules.Macro` Calls macro from current Jinja2 context
:class:`flask.ext.admin.form.rules.Container` Wraps child rules into container rendered by macro
:class:`flask.ext.admin.form.rules.Field` Renders single form field
:class:`flask.ext.admin.form.rules.Header` Renders form header
:class:`flask.ext.admin.form.rules.FieldSet` Renders form header and child rules
:class:`flask_admin.form.rules.BaseRule` All rules derive from this class
:class:`flask_admin.form.rules.NestedRule` Allows rule nesting, useful for HTML containers
:class:`flask_admin.form.rules.Text` Simple text rendering rule
:class:`flask_admin.form.rules.HTML` Same as `Text` rule, but does not escape the text
:class:`flask_admin.form.rules.Macro` Calls macro from current Jinja2 context
:class:`flask_admin.form.rules.Container` Wraps child rules into container rendered by macro
:class:`flask_admin.form.rules.Field` Renders single form field
:class:`flask_admin.form.rules.Header` Renders form header
:class:`flask_admin.form.rules.FieldSet` Renders form header and child rules
======================================================= ========================================================
Enabling CSRF Validation
---------------
Adding CSRF validation will require overriding the :class:`flask.ext.admin.form.BaseForm` by using :attr:`flask.ext.admin.model.BaseModelView.form_base_class`.
------------------------
Adding CSRF validation will require overriding the :class:`flask_admin.form.BaseForm` by using :attr:`flask_admin.model.BaseModelView.form_base_class`.
WTForms >=2::
......@@ -66,8 +66,8 @@ WTForms >=2::
from wtforms.meta import DefaultMeta
from flask import session
from datetime import timedelta
from flask.ext.admin import form
from flask.ext.admin.contrib import sqla
from flask_admin import form
from flask_admin.contrib import sqla
class SecureForm(form.BaseForm):
class Meta(DefaultMeta):
......@@ -122,5 +122,5 @@ For WTForms 1, you can use use Flask-WTF's Form class::
Further reading
---------------
For additional documentation, check :mod:`flask.ext.admin.form.rules` module source code (it is quite short) and
For additional documentation, check :mod:`flask_admin.form.rules` module source code (it is quite short) and
look at the `forms example <https://github.com/mrjoes/flask-admin/tree/master/examples/forms>`_ on GitHub.
......@@ -21,7 +21,7 @@ How to enable localization
2. Initialize Flask-BabelEx by creating instance of `Babel` class::
from flask import app
from flask.ext.babelex import Babel
from flask_babel import Babel
app = Flask(__name__)
babel = Babel(app)
......
......@@ -14,7 +14,7 @@ and implementing the set of scaffolding methods listed below.
Extending BaseModelView
-------------------------
Start off by defining a new class, which derives from from :class:`~flask.ext.admin.model.BaseModelView`::
Start off by defining a new class, which derives from from :class:`~flask_admin.model.BaseModelView`::
class MyDbModel(BaseModelView):
pass
......@@ -24,11 +24,11 @@ Extending BaseModelView
Now, implement the following scaffolding methods for the new class:
1. :meth:`~flask.ext.admin.model.BaseModelView.get_pk_value`
1. :meth:`~flask_admin.model.BaseModelView.get_pk_value`
This method returns a primary key value from
the model instance. In the SQLAlchemy backend, it gets the primary key from the model
using :meth:`~flask.ext.admin.contrib.sqla.ModelView.scaffold_pk`, caches it
using :meth:`~flask_admin.contrib.sqla.ModelView.scaffold_pk`, caches it
and then returns the value from the model whenever requested.
For example::
......@@ -37,7 +37,7 @@ Extending BaseModelView
def get_pk_value(self, model):
return self.model.id
2. :meth:`~flask.ext.admin.model.BaseModelView.scaffold_list_columns`
2. :meth:`~flask_admin.model.BaseModelView.scaffold_list_columns`
Returns a list of columns to be displayed in a list view. For example::
......@@ -52,7 +52,7 @@ Extending BaseModelView
return columns
3. :meth:`~flask.ext.admin.model.BaseModelView.scaffold_sortable_columns`
3. :meth:`~flask_admin.model.BaseModelView.scaffold_sortable_columns`
Returns a dictionary of sortable columns. The keys in the dictionary should correspond to the model's
field names. The values should be those variables that will be used for sorting.
......@@ -64,7 +64,7 @@ Extending BaseModelView
If your backend does not support sorting, return
`None` or an empty dictionary.
4. :meth:`~flask.ext.admin.model.BaseModelView.init_search`
4. :meth:`~flask_admin.model.BaseModelView.init_search`
Initialize search functionality. If your backend supports
full-text search, do initializations and return `True`.
......@@ -76,7 +76,7 @@ Extending BaseModelView
it will add a join, etc) and caches this information for
future use.
5. :meth:`~flask.ext.admin.model.BaseModelView.scaffold_form`
5. :meth:`~flask_admin.model.BaseModelView.scaffold_form`
Generate `WTForms` form class from the model.
......@@ -90,7 +90,7 @@ Extending BaseModelView
# Do something
return MyForm
6. :meth:`~flask.ext.admin.model.BaseModelView.get_list`
6. :meth:`~flask_admin.model.BaseModelView.get_list`
This method should return list of model instances with paging,
sorting, etc applied.
......@@ -120,27 +120,27 @@ Extending BaseModelView
6. Return count, list as a tuple
7. :meth:`~flask.ext.admin.model.BaseModelView.get_one`
7. :meth:`~flask_admin.model.BaseModelView.get_one`
Return a model instance by its primary key.
8. :meth:`~flask.ext.admin.model.BaseModelView.create_model`
8. :meth:`~flask_admin.model.BaseModelView.create_model`
Create a new instance of the model from the `Form` object.
9. :meth:`~flask.ext.admin.model.BaseModelView.update_model`
9. :meth:`~flask_admin.model.BaseModelView.update_model`
Update the model instance with data from the form.
10. :meth:`~flask.ext.admin.model.BaseModelView.delete_model`
10. :meth:`~flask_admin.model.BaseModelView.delete_model`
Delete the specified model instance from the data store.
11. :meth:`~flask.ext.admin.model.BaseModelView.is_valid_filter`
11. :meth:`~flask_admin.model.BaseModelView.is_valid_filter`
Verify whether the given object is a valid filter.
12. :meth:`~flask.ext.admin.model.BaseModelView.scaffold_filters`
12. :meth:`~flask_admin.model.BaseModelView.scaffold_filters`
Return a list of filter objects for one model field.
......@@ -166,17 +166,17 @@ Implementing filters
filters from SQLAlchemy models in a non-SQLAlchemy backend.
This also means that different backends might have different set of available filters.
The filter is a class derived from :class:`~flask.ext.admin.model.filters.BaseFilter` which implements at least two methods:
The filter is a class derived from :class:`~flask_admin.model.filters.BaseFilter` which implements at least two methods:
1. :meth:`~flask.ext.admin.model.filters.BaseFilter.apply`
2. :meth:`~flask.ext.admin.model.filters.BaseFilter.operation`
1. :meth:`~flask_admin.model.filters.BaseFilter.apply`
2. :meth:`~flask_admin.model.filters.BaseFilter.operation`
`apply` method accepts two parameters: `query` object and a value from the client. Here you can add
filtering logic for the filter type.
Lets take SQLAlchemy model backend as an example:
All SQLAlchemy filters derive from :class:`~flask.ext.admin.contrib.sqla.filters.BaseSQLAFilter` class.
All SQLAlchemy filters derive from :class:`~flask_admin.contrib.sqla.filters.BaseSQLAFilter` class.
Each filter implements one simple filter SQL operation (like, not like, greater, etc) and accepts a column as
input parameter.
......
......@@ -41,12 +41,12 @@ or extend existing functionality by adding more views.
Initialization
--------------
To start using Flask-Admin, you have to create a :class:`~flask.ext.admin.base.Admin` class instance and associate it
To start using Flask-Admin, you have to create a :class:`~flask_admin.base.Admin` class instance and associate it
with the Flask
application instance::
from flask import Flask
from flask.ext.admin import Admin
from flask_admin import Admin
app = Flask(__name__)
......@@ -62,12 +62,12 @@ you should see an empty "Home" page with a navigation bar on top
:target: ../_images/quickstart_1.png
You can change the application name by passing a value for the *name* parameter to the
:class:`~flask.ext.admin.base.Admin` class constructor::
:class:`~flask_admin.base.Admin` class constructor::
admin = Admin(app, name='My App')
As an alternative to passing a Flask application object to the Admin constructor, you can also call the
:meth:`~flask.ext.admin.base.Admin.init_app` function, after the Admin instance has been initialized::
:meth:`~flask_admin.base.Admin.init_app` function, after the Admin instance has been initialized::
admin = Admin(name='My App')
# Add views here
......@@ -77,10 +77,10 @@ Adding views
------------
Now, lets add an administrative view. The next example will result in two items appearing in the navbar menu: *Home*
and *Hello*. To do this, you need to derive from the :class:`~flask.ext.admin.base.BaseView` class::
and *Hello*. To do this, you need to derive from the :class:`~flask_admin.base.BaseView` class::
from flask import Flask
from flask.ext.admin import Admin, BaseView, expose
from flask_admin import Admin, BaseView, expose
class MyView(BaseView):
@expose('/')
......@@ -130,7 +130,7 @@ the Admin instance. The category specifies the name of the top-level menu item,
with it, will be accessible from a drop-down menu. For example::
from flask import Flask
from flask.ext.admin import Admin, BaseView, expose
from flask_admin import Admin, BaseView, expose
class MyView(BaseView):
@expose('/')
......@@ -185,7 +185,7 @@ Model views allow you to add dedicated admin pages for each of the models in you
instances of the *ModelView* class, which you can import from one of Flask-Admin's built-in ORM backends. An example
is the SQLAlchemy backend, which you can use as follows::
from flask.ext.admin.contrib.sqla import ModelView
from flask_admin.contrib.sqla import ModelView
# Flask and Flask-SQLAlchemy initialization here
......@@ -204,7 +204,7 @@ class, or you can override its methods.
For example, if you want to disable model creation and only show certain columns in the list view, you can do
something like::
from flask.ext.admin.contrib.sqla import ModelView
from flask_admin.contrib.sqla import ModelView
# Flask and Flask-SQLAlchemy initialization here
......@@ -238,10 +238,10 @@ therefore should use a *SelectField*::
It is relatively easy to add support for different database backends (Mongo, etc) by inheriting from
:class:`~flask.ext.admin.model.BaseModelView`.
:class:`~flask_admin.model.BaseModelView`.
class and implementing database-related methods.
Please refer to :mod:`flask.ext.admin.contrib.sqla` documentation on how to customize the behavior of model-based
Please refer to :mod:`flask_admin.contrib.sqla` documentation on how to customize the behavior of model-based
administrative views.
File Admin
......@@ -252,7 +252,7 @@ Flask-Admin comes with another handy battery - file admin. It gives you the abil
Here is simple example::
from flask.ext.admin.contrib.fileadmin import FileAdmin
from flask_admin.contrib.fileadmin import FileAdmin
import os.path as op
......@@ -270,7 +270,7 @@ Sample screenshot:
:target: ../_images/quickstart_5.png
You can disable uploads, disable file or directory deletion, restrict file uploads to certain types and so on.
Check :mod:`flask.ext.admin.contrib.fileadmin` documentation on how to do it.
Check :mod:`flask_admin.contrib.fileadmin` documentation on how to do it.
Generating URLs
---------------
......@@ -354,4 +354,3 @@ Browse through them in the GitHub repo, and then run them locally to get yoursel
- `Redis terminal <https://github.com/MrJoes/Flask-Admin/tree/master/examples/rediscli>`_
If you use Redis for caching, then check this example to see how easy it is to add a Redis terminal to your Admin
interface, so you can reach your Redis instance straight from a browser.
......@@ -122,7 +122,7 @@ admin_view Current administrative view
admin_base_template Base template name
_gettext Babel gettext
_ngettext Babel ngettext
h Helpers from :mod:`~flask.ext.admin.helpers` module
h Helpers from :mod:`~flask_admin.helpers` module
==================== ================================
......
......@@ -24,13 +24,13 @@ General tips
3. To customize the overall look and feel of the default model forms, you have two options: Either, you could
override the default create/edit templates. Or, alternatively, you could make use of the form rendering rules
(:mod:`flask.ext.admin.form.rules`) that were introduced in version 1.0.7.
(:mod:`flask_admin.form.rules`) that were introduced in version 1.0.7.
4. To simplify the management of file uploads, Flask-Admin comes with a dedicated tool, for which you can find
documentation at: :mod:`flask.ext.admin.form.upload`.
documentation at: :mod:`flask_admin.form.upload`.
5. If you don't want to the use the built-in Flask-Admin form scaffolding logic, you are free to roll your own
by simply overriding :meth:`~flask.ext.admin.model.base.scaffold_form`. For example, if you use
by simply overriding :meth:`~flask_admin.model.base.scaffold_form`. For example, if you use
`WTForms-Alchemy <https://github.com/kvesteri/wtforms-alchemy>`_, you could put your form generation code
into a `scaffold_form` method in your `ModelView` class.
......
from flask import Flask, url_for, redirect, render_template, request
from flask.ext.mongoengine import MongoEngine
from flask_mongoengine import MongoEngine
from wtforms import form, fields, validators
from flask.ext import admin, login
from flask.ext.admin.contrib.mongoengine import ModelView
from flask.ext.admin import helpers
import flask_admin as admin
import flask_login as login
from flask_admin.contrib.mongoengine import ModelView
from flask_admin import helpers
# Create application
app = Flask(__name__)
......
import os
from flask import Flask, url_for, redirect, render_template, request
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from wtforms import form, fields, validators
from flask.ext import admin, login
from flask.ext.admin.contrib import sqla
from flask.ext.admin import helpers, expose
import flask_admin as admin
import flask_login as login
from flask_admin.contrib import sqla
from flask_admin import helpers, expose
from werkzeug.security import generate_password_hash, check_password_hash
......
from flask import Flask, request, session
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from flask.ext import admin
from flask.ext.babelex import Babel
import flask_admin as admin
from flask_babel import Babel
from flask.ext.admin.contrib import sqla
from flask_admin.contrib import sqla
# Create application
app = Flask(__name__)
......
......@@ -3,8 +3,8 @@ import os.path as op
from flask import Flask
from flask.ext import admin
from flask.ext.admin.contrib import fileadmin
import flask_admin as admin
from flask_admin.contrib import fileadmin
# Create flask app
......
......@@ -2,14 +2,14 @@ import os
import os.path as op
from flask import Flask, url_for
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.event import listens_for
from jinja2 import Markup
from flask.ext.admin import Admin, form
from flask.ext.admin.form import rules
from flask.ext.admin.contrib import sqla
from flask_admin import Admin, form
from flask_admin.form import rules
from flask_admin.contrib import sqla
# Create application
......
import os
import os.path as op
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from flask.ext import admin
from flask.ext.admin.contrib.sqla import ModelView
import flask_admin as admin
from flask_admin.contrib.sqla import ModelView
# Create application
......
import os
import os.path as op
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from flask.ext import admin
from flask.ext.admin.contrib.sqla import ModelView
import flask_admin as admin
from flask_admin.contrib.sqla import ModelView
# Create application
......
from flask import Flask, redirect, url_for
from flask.ext import login
from flask.ext.login import current_user, UserMixin
from flask.ext.admin.base import MenuLink, Admin, BaseView, expose
from flask_login import current_user, UserMixin
from flask_admin.base import MenuLink, Admin, BaseView, expose
# Create fake user class for authentication
......
from flask import Flask, redirect, request
from flask.ext import admin
import flask_admin as admin
from flask.views import MethodView
......
......@@ -2,10 +2,10 @@ import datetime
from flask import Flask
from flask.ext import admin
from flask.ext.mongoengine import MongoEngine
from flask.ext.admin.form import rules
from flask.ext.admin.contrib.mongoengine import ModelView
import flask_admin as admin
from flask_mongoengine import MongoEngine
from flask_admin.form import rules
from flask_admin.contrib.mongoengine import ModelView
# Create application
app = Flask(__name__)
......
from flask import Flask
from flask.ext import admin
import flask_admin as admin
# Views
......
......@@ -2,8 +2,8 @@ from flask import Flask
import peewee
from flask.ext import admin
from flask.ext.admin.contrib.peewee import ModelView
import flask_admin as admin
from flask_admin.contrib.peewee import ModelView
app = Flask(__name__)
......
......@@ -2,13 +2,13 @@ import pymongo
from bson.objectid import ObjectId
from flask import Flask
from flask.ext import admin
import flask_admin as admin
from wtforms import form, fields
from flask.ext.admin.form import Select2Widget
from flask.ext.admin.contrib.pymongo import ModelView, filters
from flask.ext.admin.model.fields import InlineFormField, InlineFieldList
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__)
......
from flask import Flask
from flask.ext.admin import Admin
from flask_admin import Admin
app = Flask(__name__)
......
from flask import Flask
from flask.ext.admin import Admin, BaseView, expose
from flask_admin import Admin, BaseView, expose
class MyView(BaseView):
......
from flask import Flask
from flask.ext.admin import Admin, BaseView, expose
from flask_admin import Admin, BaseView, expose
class MyView(BaseView):
......
......@@ -2,8 +2,8 @@ from flask import Flask
from redis import Redis
from flask.ext import admin
from flask.ext.admin.contrib import rediscli
import flask_admin as admin
from flask_admin.contrib import rediscli
# Create flask app
app = Flask(__name__)
......
from flask import Flask
from flask.ext import admin
import flask_admin as admin
# Create custom admin view
......
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from flask.ext.admin.contrib import sqla
from flask.ext.admin import expose, Admin
from flask_admin.contrib import sqla
from flask_admin import expose, Admin
# required for creating custom filters
from flask.ext.admin.contrib.sqla.filters import BaseSQLAFilter, FilterEqual
......
......@@ -5,16 +5,16 @@ from werkzeug import secure_filename
from sqlalchemy import event
from flask import Flask, request, render_template
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from wtforms import fields
from flask.ext import admin
from flask.ext.admin.form import RenderTemplateWidget
from flask.ext.admin.model.form import InlineFormAdmin
from flask.ext.admin.contrib.sqla import ModelView
from flask.ext.admin.contrib.sqla.form import InlineModelConverter
from flask.ext.admin.contrib.sqla.fields import InlineModelFormList
import flask_admin as admin
from flask_admin.form import RenderTemplateWidget
from flask_admin.model.form import InlineFormAdmin
from flask_admin.contrib.sqla import ModelView
from flask_admin.contrib.sqla.form import InlineModelConverter
from flask_admin.contrib.sqla.fields import InlineModelFormList
# Create application
app = Flask(__name__)
......
import os
import os.path as op
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from wtforms import validators
from flask.ext import admin
from flask.ext.admin.contrib import sqla
from flask.ext.admin.contrib.sqla import filters
import flask_admin as admin
from flask_admin.contrib import sqla
from flask_admin.contrib.sqla import filters
# Create application
......
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from flask.ext import admin
from flask.ext.admin.contrib import sqla
import flask_admin as admin
from flask_admin.contrib import sqla
# Create application
......
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask_sqlalchemy import SQLAlchemy
from wtforms import fields, widgets
from flask.ext import admin
from flask.ext.admin.contrib import sqla
import flask_admin as admin
from flask_admin.contrib import sqla
# Create application
app = Flask(__name__)
......
# -*- coding: utf-8 -*-
"""
flask.ext.admin._backwards
flask_admin._backwards
~~~~~~~~~~~~~~~~~~~~~~~~~~
Backward compatibility helpers.
......
# -*- coding: utf-8 -*-
"""
flask.ext.admin._compat
flask_admin._compat
~~~~~~~~~~~~~~~~~~~~~~~
Some py2/py3 compatibility support based on a stripped down
......
from flask import request, redirect
from flask.ext.admin import tools
from flask.ext.admin._compat import text_type
from flask_admin import tools
from flask_admin._compat import text_type
def action(name, text, confirmation=None):
......
try:
from .helpers import get_current_view
from flask.ext.babelex import Domain
from flask_babel import Domain
from flask.ext.admin import translations
from flask_admin import translations
class CustomDomain(Domain):
def __init__(self):
......
......@@ -3,12 +3,12 @@ import os.path as op
from functools import wraps
from flask import Blueprint, current_app, render_template, abort, g, url_for
from flask.ext.admin import babel
from flask.ext.admin._compat import with_metaclass
from flask.ext.admin import helpers as h
from flask_admin import babel
from flask_admin._compat import with_metaclass
from flask_admin import helpers as h
# For compatibility reasons import MenuLink
from flask.ext.admin.menu import MenuCategory, MenuView, MenuLink
from flask_admin.menu import MenuCategory, MenuView, MenuLink
def expose(url='/', methods=('GET',)):
......@@ -111,7 +111,7 @@ class BaseView(with_metaclass(AdminViewMeta, BaseViewClass)):
Derive from this class to implement your administrative interface piece. For example::
from flask.ext.admin import BaseView, expose
from flask_admin import BaseView, expose
class MyView(BaseView):
@expose('/')
def index(self):
......@@ -179,9 +179,9 @@ class BaseView(with_metaclass(AdminViewMeta, BaseViewClass)):
:param menu_icon_type:
Optional icon. Possible icon types:
- `flask.ext.admin.consts.ICON_TYPE_GLYPH` - Bootstrap glyph icon
- `flask.ext.admin.consts.ICON_TYPE_IMAGE` - Image relative to Flask static directory
- `flask.ext.admin.consts.ICON_TYPE_IMAGE_URL` - Image with full URL
- `flask_admin.consts.ICON_TYPE_GLYPH` - Bootstrap glyph icon
- `flask_admin.consts.ICON_TYPE_IMAGE` - Image relative to Flask static directory
- `flask_admin.consts.ICON_TYPE_IMAGE_URL` - Image with full URL
:param menu_icon_value:
Icon glyph name or URL, depending on `menu_icon_type` setting
"""
......
import logging
from flask.ext.admin.model import BaseModelView
from flask_admin.model import BaseModelView
from wtforms_appengine import db as wt_db
from wtforms_appengine import ndb as wt_ndb
......@@ -176,4 +176,3 @@ def ModelView(model):
return DbModelView(model)
else:
raise ValueError("Unsupported model: %s" % model)
......@@ -34,8 +34,8 @@ class FileAdmin(BaseView, ActionsMixin):
import os.path as op
from flask.ext.admin import Admin
from flask.ext.admin.contrib.fileadmin import FileAdmin
from flask_admin import Admin
from flask_admin.contrib.fileadmin import FileAdmin
admin = Admin()
......
from flask.ext.admin.model.form import converts
from flask.ext.admin.contrib.sqla.form import AdminModelConverter as SQLAAdminConverter
from flask_admin.model.form import converts
from flask_admin.contrib.sqla.form import AdminModelConverter as SQLAAdminConverter
from .fields import GeoJSONField
......
from flask.ext.admin.contrib.sqla.typefmt import DEFAULT_FORMATTERS as BASE_FORMATTERS
from flask_admin.contrib.sqla.typefmt import DEFAULT_FORMATTERS as BASE_FORMATTERS
import json
from jinja2 import Markup
from wtforms.widgets import html_params
......
from flask.ext.admin.contrib.sqla import ModelView as SQLAModelView
from flask.ext.admin.contrib.geoa import form, typefmt
from flask_admin.contrib.sqla import ModelView as SQLAModelView
from flask_admin.contrib.geoa import form, typefmt
class ModelView(SQLAModelView):
......
try:
import flask.ext.mongoengine
import flask_mongoengine
except ImportError:
raise Exception('Please install flask-mongoengine in order to use mongoengine backend')
......
import mongoengine
from flask.ext.admin._compat import string_types, as_unicode, iteritems
from flask.ext.admin.model.ajax import AjaxModelLoader, DEFAULT_PAGE_SIZE
from flask_admin._compat import string_types, as_unicode, iteritems
from flask_admin.model.ajax import AjaxModelLoader, DEFAULT_PAGE_SIZE
class QueryAjaxModelLoader(AjaxModelLoader):
......
......@@ -10,7 +10,7 @@ except ImportError:
from wtforms.utils import unset_value
from . import widgets
from flask.ext.admin.model.fields import InlineFormField
from flask_admin.model.fields import InlineFormField
def is_empty(file_object):
......
import datetime
from flask.ext.admin.babel import lazy_gettext
from flask.ext.admin.model import filters
from flask_admin.babel import lazy_gettext
from flask_admin.model import filters
from .tools import parse_like_term
from mongoengine.queryset import Q
......
......@@ -2,13 +2,13 @@ from mongoengine import ReferenceField
from mongoengine.base import BaseDocument, DocumentMetaclass, get_document
from wtforms import fields, validators
from flask.ext.mongoengine.wtf import orm, fields as mongo_fields
from flask_mongoengine.wtf import orm, fields as mongo_fields
from flask.ext.admin import form
from flask.ext.admin.model.form import FieldPlaceholder
from flask.ext.admin.model.fields import InlineFieldList, AjaxSelectField, AjaxSelectMultipleField
from flask.ext.admin.model.widgets import InlineFormWidget
from flask.ext.admin._compat import iteritems
from flask_admin import form
from flask_admin.model.form import FieldPlaceholder
from flask_admin.model.fields import InlineFieldList, AjaxSelectField, AjaxSelectMultipleField
from flask_admin.model.widgets import InlineFormWidget
from flask_admin._compat import iteritems
from .fields import ModelFormField, MongoFileField, MongoImageField
from .subdoc import EmbeddedForm
......@@ -184,7 +184,7 @@ def get_form(model, converter,
"""
Create a wtforms Form for a given mongoengine Document schema::
from flask.ext.mongoengine.wtf import model_form
from flask_mongoengine.wtf import model_form
from myproject.myapp.schemas import Article
ArticleForm = model_form(Article)
......
from mongoengine import ValidationError
from flask.ext.admin._compat import itervalues, as_unicode
from flask_admin._compat import itervalues, as_unicode
def make_gridfs_args(value):
......
from flask.ext.admin._compat import iteritems
from flask.ext.admin.model.form import InlineBaseFormAdmin
from flask_admin._compat import iteritems
from flask_admin.model.form import InlineBaseFormAdmin
class EmbeddedForm(InlineBaseFormAdmin):
......@@ -18,6 +18,6 @@ def convert_subdocuments(values):
elif isinstance(p, EmbeddedForm):
result[name] = p
else:
raise ValueError('Invalid subdocument type: expecting dict or instance of flask.ext.admin.contrib.mongoengine.EmbeddedForm, got %s' % type(p))
raise ValueError('Invalid subdocument type: expecting dict or instance of flask_admin.contrib.mongoengine.EmbeddedForm, got %s' % type(p))
return result
......@@ -3,7 +3,7 @@ from jinja2 import Markup, escape
from mongoengine.base import BaseList
from mongoengine.fields import GridFSProxy, ImageGridFsProxy
from flask.ext.admin.model.typefmt import BASE_FORMATTERS, list_formatter
from flask_admin.model.typefmt import BASE_FORMATTERS, list_formatter
from . import helpers
......
......@@ -2,19 +2,19 @@ import logging
from flask import request, flash, abort, Response
from flask.ext.admin import expose
from flask.ext.admin.babel import gettext, ngettext, lazy_gettext
from flask.ext.admin.model import BaseModelView
from flask.ext.admin.model.form import wrap_fields_in_fieldlist
from flask.ext.admin.model.fields import ListEditableFieldList
from flask.ext.admin._compat import iteritems, string_types
from flask_admin import expose
from flask_admin.babel import gettext, ngettext, lazy_gettext
from flask_admin.model import BaseModelView
from flask_admin.model.form import wrap_fields_in_fieldlist
from flask_admin.model.fields import ListEditableFieldList
from flask_admin._compat import iteritems, string_types
import mongoengine
import gridfs
from mongoengine.connection import get_db
from bson.objectid import ObjectId
from flask.ext.admin.actions import action
from flask_admin.actions import action
from .filters import FilterConverter, BaseMongoEngineFilter
from .form import get_form, CustomModelConverter
from .typefmt import DEFAULT_FORMATTERS
......@@ -53,7 +53,7 @@ class ModelView(BaseModelView):
Collection of the column filters.
Can contain either field names or instances of
:class:`flask.ext.admin.contrib.mongoengine.filters.BaseFilter`
:class:`flask_admin.contrib.mongoengine.filters.BaseFilter`
classes.
For example::
......@@ -73,7 +73,7 @@ class ModelView(BaseModelView):
field conversion logic.
Custom class should be derived from the
`flask.ext.admin.contrib.mongoengine.form.CustomModelConverter`.
`flask_admin.contrib.mongoengine.form.CustomModelConverter`.
For example::
......@@ -125,7 +125,7 @@ class ModelView(BaseModelView):
Subdocument configuration options.
This field accepts dictionary, where key is field name and value is either dictionary or instance of the
`flask.ext.admin.contrib.EmbeddedForm`.
`flask_admin.contrib.EmbeddedForm`.
Consider following example::
......@@ -220,9 +220,9 @@ class ModelView(BaseModelView):
:param menu_icon_type:
Optional icon. Possible icon types:
- `flask.ext.admin.consts.ICON_TYPE_GLYPH` - Bootstrap glyph icon
- `flask.ext.admin.consts.ICON_TYPE_IMAGE` - Image relative to Flask static directory
- `flask.ext.admin.consts.ICON_TYPE_IMAGE_URL` - Image with full URL
- `flask_admin.consts.ICON_TYPE_GLYPH` - Bootstrap glyph icon
- `flask_admin.consts.ICON_TYPE_IMAGE` - Image relative to Flask static directory
- `flask_admin.consts.ICON_TYPE_IMAGE_URL` - Image with full URL
:param menu_icon_value:
Icon glyph name or URL, depending on `menu_icon_type` setting
......
......@@ -4,7 +4,7 @@ from jinja2 import escape
from mongoengine.fields import GridFSProxy, ImageGridFsProxy
from flask.ext.admin.helpers import get_url
from flask_admin.helpers import get_url
from . import helpers
......
from flask.ext.admin._compat import as_unicode, string_types
from flask.ext.admin.model.ajax import AjaxModelLoader, DEFAULT_PAGE_SIZE
from flask_admin._compat import as_unicode, string_types
from flask_admin.model.ajax import AjaxModelLoader, DEFAULT_PAGE_SIZE
from .tools import get_primary_key
......
import time
import datetime
from flask.ext.admin.babel import lazy_gettext
from flask_admin.babel import lazy_gettext
from flask.ext.admin.model import filters
from flask_admin.model import filters
from .tools import parse_like_term
......
......@@ -5,10 +5,10 @@ from peewee import (CharField, DateTimeField, DateField, TimeField,
from wtfpeewee.orm import ModelConverter, model_form
from flask.ext.admin import form
from flask.ext.admin._compat import iteritems, itervalues
from flask.ext.admin.model.form import InlineFormAdmin, InlineModelConverterBase
from flask.ext.admin.model.fields import InlineModelFormField, InlineFieldList, AjaxSelectField
from flask_admin import form
from flask_admin._compat import iteritems, itervalues
from flask_admin.model.form import InlineFormAdmin, InlineModelConverterBase
from flask_admin.model.fields import InlineModelFormField, InlineFieldList, AjaxSelectField
from .tools import get_primary_key
from .ajax import create_ajax_loader
......
......@@ -2,16 +2,16 @@ import logging
from flask import flash
from flask.ext.admin._compat import string_types
from flask.ext.admin.babel import gettext, ngettext, lazy_gettext
from flask.ext.admin.model import BaseModelView
from flask.ext.admin.model.form import wrap_fields_in_fieldlist
from flask.ext.admin.model.fields import ListEditableFieldList
from flask_admin._compat import string_types
from flask_admin.babel import gettext, ngettext, lazy_gettext
from flask_admin.model import BaseModelView
from flask_admin.model.form import wrap_fields_in_fieldlist
from flask_admin.model.fields import ListEditableFieldList
from peewee import PrimaryKeyField, ForeignKeyField, Field, CharField, TextField
from flask.ext.admin.actions import action
from flask.ext.admin.contrib.peewee import filters
from flask_admin.actions import action
from flask_admin.contrib.peewee import filters
from .form import get_form, CustomModelConverter, InlineModelConverter, save_inline
from .tools import get_primary_key, parse_like_term
......
......@@ -2,7 +2,7 @@ def setup():
import warnings
warnings.warn('Flask-Admin peewee integration module was renamed as flask.ext.admin.contrib.peewee, please use it instead.')
from flask.ext.admin._backwards import import_redirect
from flask_admin._backwards import import_redirect
import_redirect(__name__, 'flask_admin.contrib.peewee')
setup()
......
import re
from flask.ext.admin.babel import gettext
from flask.ext.admin.model import filters
from flask_admin.babel import gettext
from flask_admin.model import filters
from .tools import parse_like_term
......
......@@ -6,11 +6,11 @@ from bson.errors import InvalidId
from flask import flash
from flask.ext.admin._compat import string_types
from flask.ext.admin.babel import gettext, ngettext, lazy_gettext
from flask.ext.admin.model import BaseModelView
from flask.ext.admin.actions import action
from flask.ext.admin.helpers import get_form_data
from flask_admin._compat import string_types
from flask_admin.babel import gettext, ngettext, lazy_gettext
from flask_admin.model import BaseModelView
from flask_admin.actions import action
from flask_admin.helpers import get_form_data
from .filters import BasePyMongoFilter
from .tools import parse_like_term
......@@ -29,7 +29,7 @@ class ModelView(BaseModelView):
Collection of the column filters.
Should contain instances of
:class:`flask.ext.admin.contrib.pymongo.filters.BasePyMongoFilter`
:class:`flask_admin.contrib.pymongo.filters.BasePyMongoFilter`
classes.
For example::
......@@ -59,9 +59,9 @@ class ModelView(BaseModelView):
:param menu_icon_type:
Optional icon. Possible icon types:
- `flask.ext.admin.consts.ICON_TYPE_GLYPH` - Bootstrap glyph icon
- `flask.ext.admin.consts.ICON_TYPE_IMAGE` - Image relative to Flask static directory
- `flask.ext.admin.consts.ICON_TYPE_IMAGE_URL` - Image with full URL
- `flask_admin.consts.ICON_TYPE_GLYPH` - Bootstrap glyph icon
- `flask_admin.consts.ICON_TYPE_IMAGE` - Image relative to Flask static directory
- `flask_admin.consts.ICON_TYPE_IMAGE_URL` - Image with full URL
:param menu_icon_value:
Icon glyph name or URL, depending on `menu_icon_type` setting
"""
......
......@@ -6,9 +6,9 @@ from flask import request
from jinja2 import Markup
from flask.ext.admin.base import BaseView, expose
from flask.ext.admin.babel import gettext
from flask.ext.admin._compat import VER
from flask_admin.base import BaseView, expose
from flask_admin.babel import gettext
from flask_admin._compat import VER
# Set up logger
log = logging.getLogger("flask-admin.redis")
......
from sqlalchemy import or_
from flask.ext.admin._compat import as_unicode, string_types
from flask.ext.admin.model.ajax import AjaxModelLoader, DEFAULT_PAGE_SIZE
from flask_admin._compat import as_unicode, string_types
from flask_admin.model.ajax import AjaxModelLoader, DEFAULT_PAGE_SIZE
class QueryAjaxModelLoader(AjaxModelLoader):
......
......@@ -8,10 +8,10 @@ from wtforms.fields import SelectFieldBase
from wtforms.validators import ValidationError
from .tools import get_primary_key
from flask.ext.admin._compat import text_type, string_types
from flask.ext.admin.form import FormOpts
from flask.ext.admin.model.fields import InlineFieldList, InlineModelFormField
from flask.ext.admin.model.widgets import InlineFormWidget
from flask_admin._compat import text_type, string_types
from flask_admin.form import FormOpts
from flask_admin.model.fields import InlineFieldList, InlineModelFormField
from flask_admin.model.widgets import InlineFormWidget
try:
......
......@@ -2,9 +2,9 @@ import warnings
import time
import datetime
from flask.ext.admin.babel import lazy_gettext
from flask.ext.admin.model import filters
from flask.ext.admin.contrib.sqla import tools
from flask_admin.babel import lazy_gettext
from flask_admin.model import filters
from flask_admin.contrib.sqla import tools
from sqlalchemy.sql import not_, or_
class BaseSQLAFilter(filters.BaseFilter):
......
from wtforms import fields, validators
from sqlalchemy import Boolean, Column
from flask.ext.admin import form
from flask.ext.admin.model.form import (converts, ModelConverterBase,
from flask_admin import form
from flask_admin.model.form import (converts, ModelConverterBase,
InlineModelConverterBase, FieldPlaceholder)
from flask.ext.admin.model.fields import AjaxSelectField, AjaxSelectMultipleField
from flask.ext.admin.model.helpers import prettify_name
from flask.ext.admin._backwards import get_property
from flask.ext.admin._compat import iteritems
from flask_admin.model.fields import AjaxSelectField, AjaxSelectMultipleField
from flask_admin.model.helpers import prettify_name
from flask_admin._backwards import get_property
from flask_admin._compat import iteritems
from .validators import Unique
from .fields import QuerySelectField, QuerySelectMultipleField, InlineModelFormList
......
......@@ -3,8 +3,8 @@ from sqlalchemy.sql.operators import eq
from sqlalchemy.exc import DBAPIError
from ast import literal_eval
from flask.ext.admin._compat import filter_list
from flask.ext.admin.tools import iterencode, iterdecode, escape
from flask_admin._compat import filter_list
from flask_admin.tools import iterencode, iterdecode, escape
def parse_like_term(term):
......
from flask.ext.admin.model.typefmt import BASE_FORMATTERS, list_formatter
from flask_admin.model.typefmt import BASE_FORMATTERS, list_formatter
from sqlalchemy.orm.collections import InstrumentedList
......
......@@ -8,16 +8,16 @@ from sqlalchemy.exc import IntegrityError
from flask import flash
from flask.ext.admin._compat import string_types
from flask.ext.admin.babel import gettext, ngettext, lazy_gettext
from flask.ext.admin.model import BaseModelView
from flask.ext.admin.model.form import wrap_fields_in_fieldlist
from flask.ext.admin.model.fields import ListEditableFieldList
from flask_admin._compat import string_types
from flask_admin.babel import gettext, ngettext, lazy_gettext
from flask_admin.model import BaseModelView
from flask_admin.model.form import wrap_fields_in_fieldlist
from flask_admin.model.fields import ListEditableFieldList
from flask.ext.admin.actions import action
from flask.ext.admin._backwards import ObsoleteAttr
from flask_admin.actions import action
from flask_admin._backwards import ObsoleteAttr
from flask.ext.admin.contrib.sqla import form, filters, tools
from flask_admin.contrib.sqla import form, filters, tools
from .typefmt import DEFAULT_FORMATTERS
from .tools import get_query_for_ids
from .ajax import create_ajax_loader
......@@ -113,7 +113,7 @@ class ModelView(BaseModelView):
"""
Collection of the column filters.
Can contain either field names or instances of :class:`flask.ext.admin.contrib.sqla.filters.BaseFilter` classes.
Can contain either field names or instances of :class:`flask_admin.contrib.sqla.filters.BaseFilter` classes.
For example::
......@@ -265,9 +265,9 @@ class ModelView(BaseModelView):
:param menu_icon_type:
Optional icon. Possible icon types:
- `flask.ext.admin.consts.ICON_TYPE_GLYPH` - Bootstrap glyph icon
- `flask.ext.admin.consts.ICON_TYPE_IMAGE` - Image relative to Flask static directory
- `flask.ext.admin.consts.ICON_TYPE_IMAGE_URL` - Image with full URL
- `flask_admin.consts.ICON_TYPE_GLYPH` - Bootstrap glyph icon
- `flask_admin.consts.ICON_TYPE_IMAGE` - Image relative to Flask static directory
- `flask_admin.consts.ICON_TYPE_IMAGE_URL` - Image with full URL
:param menu_icon_value:
Icon glyph name or URL, depending on `menu_icon_type` setting
"""
......
def setup():
import warnings
warnings.warn('Flask-Admin sqlalchemy integration module was renamed as flask.ext.admin.contrib.sqla, please use it instead.')
warnings.warn('Flask-Admin sqlalchemy integration module was renamed as flask_admin.contrib.sqla, please use it instead.')
from flask.ext.admin._backwards import import_redirect
import_redirect(__name__, 'flask_admin.contrib.sqla')
......
......@@ -2,8 +2,8 @@ import time
import datetime
from wtforms import fields, widgets
from flask.ext.admin.babel import gettext
from flask.ext.admin._compat import text_type, as_unicode
from flask_admin.babel import gettext
from flask_admin._compat import text_type, as_unicode
from . import widgets as admin_widgets
......
......@@ -120,7 +120,7 @@ class Text(BaseRule):
class HTML(Text):
"""
Shortcut for `Text` rule with `escape` set to `False.
Shortcut for `Text` rule with `escape` set to `False`.
"""
def __init__(self, html):
super(HTML, self).__init__(html, escape=False)
......
......@@ -12,10 +12,10 @@ try:
except ImportError:
from wtforms.utils import unset_value
from flask.ext.admin.babel import gettext
from flask.ext.admin.helpers import get_url
from flask_admin.babel import gettext
from flask_admin.helpers import get_url
from flask.ext.admin._compat import string_types, urljoin
from flask_admin._compat import string_types, urljoin
try:
......
from wtforms import widgets
from flask.globals import _request_ctx_stack
from flask.ext.admin.babel import gettext, ngettext
from flask.ext.admin import helpers as h
from flask_admin.babel import gettext, ngettext
from flask_admin import helpers as h
__all__ = ['Select2Widget', 'DatePickerWidget', 'DateTimePickerWidget', 'RenderTemplateWidget', 'Select2TagsWidget', ]
......
......@@ -3,7 +3,7 @@ from jinja2 import contextfunction
from flask import g, request, url_for, flash
from wtforms.validators import DataRequired, InputRequired
from flask.ext.admin._compat import urljoin, urlparse, iteritems
from flask_admin._compat import urljoin, urlparse, iteritems
from ._compat import string_types
......@@ -95,7 +95,7 @@ def is_field_error(errors):
def flash_errors(form, message):
from flask.ext.admin.babel import gettext
from flask_admin.babel import gettext
for field_name, errors in iteritems(form.errors):
errors = form[field_name].label.text + u": " + u", ".join(errors)
flash(gettext(message, error=str(errors)), 'error')
......
from .base import BaseModelView
from .form import InlineFormAdmin
from flask.ext.admin.actions import action
from flask_admin.actions import action
......@@ -7,17 +7,17 @@ from jinja2 import contextfunction
from wtforms.fields import HiddenField
from wtforms.validators import ValidationError, Required
from flask.ext.admin.babel import gettext
from flask_admin.babel import gettext
from flask.ext.admin.base import BaseView, expose
from flask.ext.admin.form import BaseForm, FormOpts, rules
from flask.ext.admin.model import filters, typefmt
from flask.ext.admin.actions import ActionsMixin
from flask.ext.admin.helpers import (get_form_data, validate_form_on_submit,
from flask_admin.base import BaseView, expose
from flask_admin.form import BaseForm, FormOpts, rules
from flask_admin.model import filters, typefmt
from flask_admin.actions import ActionsMixin
from flask_admin.helpers import (get_form_data, validate_form_on_submit,
get_redirect_target, flash_errors)
from flask.ext.admin.tools import rec_getattr
from flask.ext.admin._backwards import ObsoleteAttr
from flask.ext.admin._compat import iteritems, OrderedDict, as_unicode
from flask_admin.tools import rec_getattr
from flask_admin._backwards import ObsoleteAttr
from flask_admin._compat import iteritems, OrderedDict, as_unicode
from .helpers import prettify_name, get_mdict_item_or_list
from .ajax import AjaxModelLoader
from .fields import ListEditableFieldList
......@@ -133,7 +133,7 @@ class BaseModelView(BaseView, ActionsMixin):
or using Jinja2 `macro` in template::
from flask.ext.admin.model.template import macro
from flask_admin.model.template import macro
class MyModelView(BaseModelView):
column_formatters = dict(price=macro('render_price'))
......@@ -170,7 +170,7 @@ class BaseModelView(BaseView, ActionsMixin):
If you want to display `NULL` instead of an empty string, you can do
something like this::
from flask.ext.admin.model import typefmt
from flask_admin.model import typefmt
MY_DEFAULT_FORMATTERS = dict(typefmt.BASE_FORMATTERS)
MY_DEFAULT_FORMATTERS.update({
......@@ -296,7 +296,7 @@ class BaseModelView(BaseView, ActionsMixin):
"""
Collection of the column filters.
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_admin.model.filters.BaseFilter` classes.
Example::
......@@ -486,7 +486,7 @@ class BaseModelView(BaseView, ActionsMixin):
Here's simple example which illustrates how to use::
from flask.ext.admin.form import rules
from flask_admin.form import rules
class MyModelView(ModelView):
form_rules = [
......@@ -555,9 +555,9 @@ class BaseModelView(BaseView, ActionsMixin):
:param menu_icon_type:
Optional icon. Possible icon types:
- `flask.ext.admin.consts.ICON_TYPE_GLYPH` - Bootstrap glyph icon
- `flask.ext.admin.consts.ICON_TYPE_IMAGE` - Image relative to Flask static directory
- `flask.ext.admin.consts.ICON_TYPE_IMAGE_URL` - Image with full URL
- `flask_admin.consts.ICON_TYPE_GLYPH` - Bootstrap glyph icon
- `flask_admin.consts.ICON_TYPE_IMAGE` - Image relative to Flask static directory
- `flask_admin.consts.ICON_TYPE_IMAGE_URL` - Image with full URL
:param menu_icon_value:
Icon glyph name or URL, depending on `menu_icon_type` setting
"""
......@@ -892,8 +892,8 @@ class BaseModelView(BaseView, ActionsMixin):
Allows overriding the editable list view field/widget. For example::
from flask.ext.admin.model.fields import ListEditableFieldList
from flask.ext.admin.model.widgets import XEditableWidget
from flask_admin.model.fields import ListEditableFieldList
from flask_admin.model.widgets import XEditableWidget
class CustomWidget(XEditableWidget):
def get_kwargs(self, subfield, kwargs):
......
......@@ -8,7 +8,7 @@ try:
except ImportError:
from wtforms.utils import unset_value
from flask.ext.admin._compat import iteritems
from flask_admin._compat import iteritems
from .widgets import (InlineFieldListWidget, InlineFormWidget,
AjaxSelect2Widget, XEditableWidget)
......
import time
import datetime
from flask.ext.admin._compat import text_type
from flask.ext.admin.babel import lazy_gettext
from flask_admin._compat import text_type
from flask_admin.babel import lazy_gettext
class BaseFilter(object):
......@@ -263,7 +263,7 @@ def convert(*args):
"""
Decorator for field to filter conversion routine.
See :mod:`flask.ext.admin.contrib.sqla.filters` for usage example.
See :mod:`flask_admin.contrib.sqla.filters` for usage example.
"""
def _inner(func):
func._converter_for = list(map(str.lower, args))
......
import inspect
from flask.ext.admin.form import BaseForm, rules
from flask.ext.admin._compat import iteritems
from flask_admin.form import BaseForm, rules
from flask_admin._compat import iteritems
from wtforms.fields.core import UnboundField
......
from jinja2 import Markup
from flask.ext.admin._compat import text_type
from flask_admin._compat import text_type
def null_formatter(view, value):
......
from flask import json
from wtforms.widgets import HTMLString, html_params
from flask.ext.admin._compat import as_unicode
from flask.ext.admin.babel import gettext
from flask.ext.admin.helpers import get_url
from flask.ext.admin.form import RenderTemplateWidget
from flask_admin._compat import as_unicode
from flask_admin.babel import gettext
from flask_admin.helpers import get_url
from flask_admin.form import RenderTemplateWidget
class InlineFieldListWidget(RenderTemplateWidget):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment