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
01db6c2d
Commit
01db6c2d
authored
Feb 04, 2013
by
Pavel Tyslyatsky
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#154: Added ability to insert external links to menu on all pages: added example
parent
427c596f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
98 additions
and
0 deletions
+98
-0
simple.py
examples/menu-external-links/simple.py
+94
-0
authenticated-admin.html
...es/menu-external-links/templates/authenticated-admin.html
+4
-0
No files found.
examples/menu-external-links/simple.py
0 → 100644
View file @
01db6c2d
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 @
01db6c2d
{% extends 'admin/master.html' %}
{% block body %}
Hello World from Authenticated Admin!
{% endblock %}
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