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
18e0d317
Commit
18e0d317
authored
Oct 16, 2018
by
PJ Janse van Rensburg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge 'menu-external-links' example into 'sqla' example.
parent
12de0433
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
6 additions
and
128 deletions
+6
-128
README.rst
examples/menu-external-links/README.rst
+0
-23
app.py
examples/menu-external-links/app.py
+0
-97
requirements.txt
examples/menu-external-links/requirements.txt
+0
-3
authenticated-admin.html
...es/menu-external-links/templates/authenticated-admin.html
+0
-4
app.py
examples/sqla/app.py
+6
-1
No files found.
examples/menu-external-links/README.rst
deleted
100644 → 0
View file @
12de0433
This example shows how you can add links to external (non flask-admin) pages to the navbar menu, and how you can hide certain links if a user is not logged-in.
To run this example:
1. Clone the repository::
git clone https://github.com/flask-admin/flask-admin.git
cd flask-admin
2. Create and activate a virtual environment::
virtualenv env
source env/bin/activate
3. Install requirements::
pip install -r 'examples/menu-external-links/requirements.txt'
4. Run the application::
python examples/menu-external-links/app.py
examples/menu-external-links/app.py
deleted
100644 → 0
View file @
12de0433
from
flask
import
Flask
,
redirect
,
url_for
from
flask_login
import
current_user
,
UserMixin
,
login_user
,
logout_user
,
LoginManager
from
flask_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_user
(
User
())
return
redirect
(
url_for
(
'admin.index'
))
@
app
.
route
(
'/logout/'
)
def
logout_view
():
logout_user
()
return
redirect
(
url_for
(
'admin.index'
))
login_manager
=
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
(
name
=
'Example: Menu'
)
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 links with categories
admin
.
add_link
(
MenuLink
(
name
=
'Google'
,
category
=
'Links'
,
url
=
'http://www.google.com/'
))
admin
.
add_link
(
MenuLink
(
name
=
'Mozilla'
,
category
=
'Links'
,
url
=
'http://mozilla.org/'
))
# 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/requirements.txt
deleted
100644 → 0
View file @
12de0433
Flask
Flask-Admin
Flask-Login>=0.3.0
examples/menu-external-links/templates/authenticated-admin.html
deleted
100644 → 0
View file @
12de0433
{% extends 'admin/master.html' %}
{% block body %}
Hello World from Authenticated Admin!
{% endblock %}
examples/sqla/app.py
View file @
18e0d317
...
...
@@ -8,6 +8,7 @@ from wtforms import validators
import
flask_admin
as
admin
from
flask_admin.contrib
import
sqla
from
flask_admin.contrib.sqla
import
filters
from
flask_admin.base
import
MenuLink
# Create application
...
...
@@ -163,7 +164,11 @@ admin = admin.Admin(app, name='Example: SQLAlchemy', template_mode='bootstrap3')
admin
.
add_view
(
UserAdmin
(
User
,
db
.
session
))
admin
.
add_view
(
sqla
.
ModelView
(
Tag
,
db
.
session
))
admin
.
add_view
(
PostAdmin
(
db
.
session
))
admin
.
add_view
(
TreeView
(
Tree
,
db
.
session
))
admin
.
add_view
(
TreeView
(
Tree
,
db
.
session
,
category
=
"Other"
))
admin
.
add_sub_category
(
name
=
"Links"
,
parent_name
=
"Other"
)
admin
.
add_link
(
MenuLink
(
name
=
'Back Home'
,
url
=
'/'
,
category
=
'Links'
))
admin
.
add_link
(
MenuLink
(
name
=
'Google'
,
url
=
'http://www.google.com/'
,
category
=
'Links'
))
admin
.
add_link
(
MenuLink
(
name
=
'Mozilla'
,
url
=
'http://mozilla.org/'
,
category
=
'Links'
))
def
build_sample_db
():
...
...
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