Commit 7d36dde6 authored by michael lynch's avatar michael lynch

updated to the latest pull from flask-admin, to stay in sync.

parent 831c38f3
import os.path as op import os.path as op
import warnings
from functools import wraps from functools import wraps
...@@ -439,7 +440,7 @@ class AdminIndexView(BaseView): ...@@ -439,7 +440,7 @@ class AdminIndexView(BaseView):
super(AdminIndexView, self).__init__(name or babel.lazy_gettext('Home'), super(AdminIndexView, self).__init__(name or babel.lazy_gettext('Home'),
category, category,
endpoint or 'admin', endpoint or 'admin',
url or '/admin', '/admin' if url is None else url,
'static', 'static',
menu_class_name=menu_class_name, menu_class_name=menu_class_name,
menu_icon_type=menu_icon_type, menu_icon_type=menu_icon_type,
...@@ -508,6 +509,9 @@ class Admin(object): ...@@ -508,6 +509,9 @@ class Admin(object):
name = 'Admin' name = 'Admin'
self.name = name self.name = name
self.index_view = index_view or AdminIndexView(endpoint=endpoint, url=url)
self.endpoint = endpoint or self.index_view.endpoint
self.url = url or self.index_view.url
self.static_url_path = static_url_path self.static_url_path = static_url_path
self.subdomain = subdomain self.subdomain = subdomain
self.base_template = base_template or 'admin/base.html' self.base_template = base_template or 'admin/base.html'
...@@ -521,8 +525,24 @@ class Admin(object): ...@@ -521,8 +525,24 @@ class Admin(object):
if app is not None: if app is not None:
self._init_extension() self._init_extension()
def _set_admin_index_view(self, index_view=None, def add_view(self, view):
endpoint=None, url=None): """
Add a view to the collection.
:param view:
View to add.
"""
# Add to views
self._views.append(view)
# If app was provided in constructor, register view with Flask app
if self.app is not None:
self.app.register_blueprint(view.create_blueprint(self))
self._add_view_to_menu(view)
def _set_admin_index_view(self, index_view=None,
endpoint=None, url=None):
""" """
Add the admin index view. Add the admin index view.
...@@ -530,7 +550,7 @@ class Admin(object): ...@@ -530,7 +550,7 @@ class Admin(object):
Home page view to use. Defaults to `AdminIndexView`. Home page view to use. Defaults to `AdminIndexView`.
:param url: :param url:
Base URL Base URL
:param endpoint: :param endpoint:
Base endpoint name for index view. If you use multiple instances of the `Admin` class with Base endpoint name for index view. If you use multiple instances of the `Admin` class with
a single Flask application, you have to set a unique endpoint name for each instance. a single Flask application, you have to set a unique endpoint name for each instance.
""" """
...@@ -541,22 +561,6 @@ class Admin(object): ...@@ -541,22 +561,6 @@ class Admin(object):
# Add predefined index view # Add predefined index view
self.add_view(self.index_view) self.add_view(self.index_view)
def add_view(self, view):
"""
Add a view to the collection.
:param view:
View to add.
"""
# Add to views
self._views.append(view)
# If app was provided in constructor, register view with Flask app
if self.app is not None:
self.app.register_blueprint(view.create_blueprint(self))
self._add_view_to_menu(view)
def add_views(self, *args): def add_views(self, *args):
""" """
Add one or more views to the collection. Add one or more views to the collection.
...@@ -581,7 +585,7 @@ class Admin(object): ...@@ -581,7 +585,7 @@ class Admin(object):
Link to add. Link to add.
""" """
if link.category: if link.category:
self._add_menu_item(link, link.category) self.add_menu_item(link, link.category)
else: else:
self._menu_links.append(link) self._menu_links.append(link)
...@@ -601,7 +605,15 @@ class Admin(object): ...@@ -601,7 +605,15 @@ class Admin(object):
for link in args: for link in args:
self.add_link(link) self.add_link(link)
def _add_menu_item(self, menu_item, target_category): def add_menu_item(self, menu_item, target_category=None):
"""
Add menu item to menu tree hierarchy.
:param menu_item:
MenuItem class instance
:param target_category:
Target category name
"""
if target_category: if target_category:
cat_text = as_unicode(target_category) cat_text = as_unicode(target_category)
...@@ -619,6 +631,10 @@ class Admin(object): ...@@ -619,6 +631,10 @@ class Admin(object):
else: else:
self._menu.append(menu_item) self._menu.append(menu_item)
def _add_menu_item(self, menu_item, target_category):
warnings.warn('Admin._add_menu_item is obsolete - use Admin.add_menu_item instead.')
return self.add_menu_item(menu_item, target_category)
def _add_view_to_menu(self, view): def _add_view_to_menu(self, view):
""" """
Add a view to the menu tree Add a view to the menu tree
...@@ -626,7 +642,7 @@ class Admin(object): ...@@ -626,7 +642,7 @@ class Admin(object):
:param view: :param view:
View to add View to add
""" """
self._add_menu_item(MenuView(view.name, view), view.category) self.add_menu_item(MenuView(view.name, view), view.category)
def get_category_menu_item(self, name): def get_category_menu_item(self, name):
return self._menu_categories.get(name) return self._menu_categories.get(name)
...@@ -643,16 +659,13 @@ class Admin(object): ...@@ -643,16 +659,13 @@ class Admin(object):
self._init_extension() self._init_extension()
self._views = []
# Register views # Register views
for view in self._views: for view in self._views:
app.register_blueprint(view.create_blueprint(self)) app.register_blueprint(view.create_blueprint(self))
# Register Index view # Register Index view
self._set_admin_index_view(index_view=index_view, endpoint=endpoint, url=url) self._set_admin_index_view(index_view=index_view, endpoint=endpoint, url=url)
def _init_extension(self): def _init_extension(self):
if not hasattr(self.app, 'extensions'): if not hasattr(self.app, 'extensions'):
self.app.extensions = dict() self.app.extensions = dict()
...@@ -681,4 +694,4 @@ class Admin(object): ...@@ -681,4 +694,4 @@ class Admin(object):
""" """
Return menu links. Return menu links.
""" """
return self._menu_links return self._menu_links
\ No newline at end of file
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