From f6ea75bba0311257b11a9b5f9cb07184d562bc36 Mon Sep 17 00:00:00 2001 From: Alejandro Druetta Date: Tue, 1 Dec 2020 12:19:25 -0300 Subject: [PATCH 1/2] REFACTOR admin ext --- prototipo/projeto/ext/admin/__init__.py | 42 +++---------------------- prototipo/projeto/ext/admin/views.py | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+), 37 deletions(-) create mode 100644 prototipo/projeto/ext/admin/views.py diff --git a/prototipo/projeto/ext/admin/__init__.py b/prototipo/projeto/ext/admin/__init__.py index d292141..98d6eba 100644 --- a/prototipo/projeto/ext/admin/__init__.py +++ b/prototipo/projeto/ext/admin/__init__.py @@ -1,48 +1,16 @@ -from flask import redirect, url_for, request -from flask_login import current_user, login_required from flask_admin import Admin -from flask_admin.contrib.sqla import ModelView from projeto.ext.auth import UserAuth from projeto.ext.api.models import Estacao, Sensor from projeto.ext.db import db - -class AdminView(ModelView): - @login_required - def is_accessible(self): - if current_user.is_authenticated and current_user.is_admin: - return True - return False - - def inaccessible_callback(self, name, **kwargs): - if not self.is_accessible(): - return redirect(url_for("auth.login", next=request.url)) - - -class UserView(AdminView): - column_sortable_list = () - - -class EstacaoView(AdminView): - column_list = ('id', 'local', 'latitude', 'longitude') - column_sortable_list = () - - -class SensorView(AdminView): - column_list = ('id', 'tipo', 'descricao', 'params', 'estacao') - column_sortable_list = () - - form_excluded_columns = [ - 'leituras', - ] - +from .views import UserView, EstacaoView, SensorView admin = Admin(name='flaskapi', template_mode='bootstrap3') -admin.add_view(UserView(UserAuth, db.session)) -admin.add_view(EstacaoView(Estacao, db.session)) -admin.add_view(SensorView(Sensor, db.session)) - def init_app(app): + admin.add_view(UserView(UserAuth, db.session)) + admin.add_view(EstacaoView(Estacao, db.session)) + admin.add_view(SensorView(Sensor, db.session)) + admin.init_app(app) diff --git a/prototipo/projeto/ext/admin/views.py b/prototipo/projeto/ext/admin/views.py new file mode 100644 index 0000000..52cf877 --- /dev/null +++ b/prototipo/projeto/ext/admin/views.py @@ -0,0 +1,33 @@ +from flask import redirect, url_for, request +from flask_admin.contrib.sqla import ModelView +from flask_login import current_user, login_required + + +class AdminView(ModelView): + @login_required + def is_accessible(self): + if current_user.is_authenticated and current_user.is_admin: + return True + return False + + def inaccessible_callback(self, name, **kwargs): + if not self.is_accessible(): + return redirect(url_for("auth.login", next=request.url)) + + +class UserView(AdminView): + column_sortable_list = () + + +class EstacaoView(AdminView): + column_list = ('id', 'local', 'latitude', 'longitude') + column_sortable_list = () + + +class SensorView(AdminView): + column_list = ('id', 'tipo', 'descricao', 'params', 'estacao') + column_sortable_list = () + + form_excluded_columns = [ + 'leituras', + ] From 75d7e556055bd829eac902e566bc47c91b3dece3 Mon Sep 17 00:00:00 2001 From: Alejandro Druetta Date: Tue, 1 Dec 2020 13:12:51 -0300 Subject: [PATCH 2/2] UPDATE admin theme --- prototipo/projeto/app.py | 2 +- prototipo/projeto/ext/admin/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/prototipo/projeto/app.py b/prototipo/projeto/app.py index c6abb1c..1384eee 100644 --- a/prototipo/projeto/app.py +++ b/prototipo/projeto/app.py @@ -15,7 +15,7 @@ def create_app(): app.config["JWT_AUTH_USERNAME_KEY"] = "email" app.config["JWT_AUTH_URL_RULE"] = "/token" app.config["JWT_EXPIRATION_DELTA"] = timedelta(seconds=3600) - app.config['FLASK_ADMIN_SWATCH'] = 'simplex' + app.config['FLASK_ADMIN_SWATCH'] = 'sandstone' db.init_app(app) api.init_app(app) diff --git a/prototipo/projeto/ext/admin/__init__.py b/prototipo/projeto/ext/admin/__init__.py index 98d6eba..a2498de 100644 --- a/prototipo/projeto/ext/admin/__init__.py +++ b/prototipo/projeto/ext/admin/__init__.py @@ -5,7 +5,7 @@ from .views import UserView, EstacaoView, SensorView -admin = Admin(name='flaskapi', template_mode='bootstrap3') +admin = Admin(name='FlaskAPI', template_mode='bootstrap3') def init_app(app):