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
1ae3aad3
Commit
1ae3aad3
authored
Feb 06, 2013
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:mrjoes/flask-admin
parents
ab5824d1
43f66869
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
142 additions
and
3 deletions
+142
-3
simple.py
examples/menu-external-links/simple.py
+94
-0
authenticated-admin.html
...es/menu-external-links/templates/authenticated-admin.html
+4
-0
base.py
flask_admin/base.py
+32
-0
master.html
flask_admin/templates/admin/master.html
+12
-3
No files found.
examples/menu-external-links/simple.py
0 → 100644
View file @
1ae3aad3
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
# Create fake user class for authentication
class
User
(
UserMixin
):
users_id
=
0
def
__init__
(
self
,
id
=
None
):
if
not
id
:
self
.
users_id
+=
1
self
.
id
=
self
.
users_id
else
:
self
.
id
=
id
# Create menu links classes with reloaded accessible
class
AuthenticatedMenuLink
(
MenuLink
):
def
is_accessible
(
self
):
return
current_user
.
is_authenticated
()
class
NotAuthenticatedMenuLink
(
MenuLink
):
def
is_accessible
(
self
):
return
not
current_user
.
is_authenticated
()
# Create custom admin view for authenticated users
class
MyAdminView
(
BaseView
):
@
expose
(
'/'
)
def
index
(
self
):
return
self
.
render
(
'authenticated-admin.html'
)
def
is_accessible
(
self
):
return
current_user
.
is_authenticated
()
# Create flask app
app
=
Flask
(
__name__
,
template_folder
=
'templates'
)
# Create dummy secrey key so we can use sessions
app
.
config
[
'SECRET_KEY'
]
=
'123456790'
# Flask views
@
app
.
route
(
'/'
)
def
index
():
return
'<a href="/admin/">Click me to get to Admin!</a>'
@
app
.
route
(
'/login/'
)
def
login_view
():
login
.
login_user
(
User
())
return
redirect
(
url_for
(
'admin.index'
))
@
app
.
route
(
'/logout/'
)
def
logout_view
():
login
.
logout_user
()
return
redirect
(
url_for
(
'admin.index'
))
login_manager
=
login
.
LoginManager
()
login_manager
.
init_app
(
app
)
# Create user loader function
@
login_manager
.
user_loader
def
load_user
(
user_id
):
return
User
(
user_id
)
if
__name__
==
'__main__'
:
# Create admin interface
admin
=
Admin
()
admin
.
add_view
(
MyAdminView
(
name
=
'Authenticated'
))
# Add home link by url
admin
.
add_link
(
MenuLink
(
name
=
'Back Home'
,
url
=
'/'
))
# Add login link by endpoint
admin
.
add_link
(
NotAuthenticatedMenuLink
(
name
=
'Login'
,
endpoint
=
'login_view'
))
# Add logout link by endpoint
admin
.
add_link
(
AuthenticatedMenuLink
(
name
=
'Logout'
,
endpoint
=
'logout_view'
))
admin
.
init_app
(
app
)
# Start app
app
.
run
(
debug
=
True
)
examples/menu-external-links/templates/authenticated-admin.html
0 → 100644
View file @
1ae3aad3
{% extends 'admin/master.html' %}
{% block body %}
Hello World from Authenticated Admin!
{% endblock %}
flask_admin/base.py
View file @
1ae3aad3
...
...
@@ -349,6 +349,22 @@ class MenuItem(object):
return
[
c
for
c
in
self
.
_children
if
c
.
is_accessible
()]
class
MenuLink
(
object
):
"""
Menu additional links hierarchy.
"""
def
__init__
(
self
,
name
,
url
=
None
,
endpoint
=
None
):
self
.
name
=
name
self
.
url
=
url
self
.
endpoint
=
endpoint
def
get_url
(
self
):
return
self
.
url
or
url_for
(
self
.
endpoint
)
def
is_accessible
(
self
):
return
True
class
Admin
(
object
):
"""
Collection of the admin views. Also manages menu structure.
...
...
@@ -385,6 +401,7 @@ class Admin(object):
self
.
_views
=
[]
self
.
_menu
=
[]
self
.
_menu_categories
=
dict
()
self
.
_menu_links
=
[]
if
name
is
None
:
name
=
'Admin'
...
...
@@ -420,6 +437,15 @@ class Admin(object):
self
.
app
.
register_blueprint
(
view
.
create_blueprint
(
self
))
self
.
_add_view_to_menu
(
view
)
def
add_link
(
self
,
link
):
"""
Add link to menu links collection.
:param link:
Link to add.
"""
self
.
_menu_links
.
append
(
link
)
def
locale_selector
(
self
,
f
):
"""
Installs a locale selector for the current ``Admin`` instance.
...
...
@@ -509,3 +535,9 @@ class Admin(object):
Return the menu hierarchy.
"""
return
self
.
_menu
def
menu_links
(
self
):
"""
Return menu links.
"""
return
self
.
_menu_links
flask_admin/templates/admin/master.html
View file @
1ae3aad3
...
...
@@ -32,9 +32,9 @@
<a
class=
"dropdown-toggle"
data-toggle=
"dropdown"
href=
"#"
>
{{ item.name }}
<b
class=
"caret"
></b></a>
<ul
class=
"dropdown-menu"
>
{% for child in children %}
{% if child.is_active(admin_view) %}
<li
class=
"active"
>
{% else %}
<li>
{% endif %}
<a
href=
"{{ child.get_url() }}"
>
{{ child.name }}
</a>
</li>
{% if child.is_active(admin_view) %}
<li
class=
"active"
>
{% else %}
<li>
{% endif %}
<a
href=
"{{ child.get_url() }}"
>
{{ child.name }}
</a>
</li>
{% endfor %}
</ul>
</li>
...
...
@@ -48,6 +48,15 @@
{% endif %}
{% endfor %}
</ul>
<ul
class=
"nav pull-right"
>
{% for item in admin_view.admin.menu_links() %}
{% if item.is_accessible() %}
<li>
<a
href=
"{{ item.get_url() }}"
>
{{ item.name }}
</a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
</div>
</div>
...
...
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