From d969cd5009b82db7b06d623a489217d23e4c0943 Mon Sep 17 00:00:00 2001
From: Xevion
Date: Thu, 4 Jul 2019 04:43:51 -0500
Subject: [PATCH] form progress
---
app/__init__.py | 3 +-
app/custom.py | 14 +++++++
app/dashboard.py | 26 +++++++++++++
app/forms.py | 5 ++-
app/models.py | 11 +-----
app/routes.py | 9 +----
app/templates/dashboard/constants.html | 2 +-
app/templates/dashboard/dashboard.html | 2 +-
app/templates/dashboard/dashboard_base.html | 4 +-
app/templates/dashboard/profile_settings.html | 37 +++++++++++++++++++
app/templates/dashboard/rbac.html | 2 +-
11 files changed, 91 insertions(+), 24 deletions(-)
create mode 100644 app/custom.py
create mode 100644 app/dashboard.py
create mode 100644 app/templates/dashboard/profile_settings.html
diff --git a/app/__init__.py b/app/__init__.py
index e7b2379..fe73bde 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -15,5 +15,6 @@ login.login_view = 'login'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
-from app import routes, models
+from app import models
+from app import routes, dashboard, custom
app.jinja_env.globals.update(get_hidden=routes.get_hidden)
\ No newline at end of file
diff --git a/app/custom.py b/app/custom.py
new file mode 100644
index 0000000..3e6f928
--- /dev/null
+++ b/app/custom.py
@@ -0,0 +1,14 @@
+from flask import abort
+from flask_login import current_user
+from functools import wraps
+
+def require_role(roles=["User"]):
+ def wrap(func):
+ @wraps(func)
+ def decorated_view(*args, **kwargs):
+ if current_user.is_authenticated:
+ if current_user.has_roles(roles):
+ return func(*args, **kwargs)
+ return abort(401)
+ return decorated_view
+ return wrap
\ No newline at end of file
diff --git a/app/dashboard.py b/app/dashboard.py
new file mode 100644
index 0000000..8539eca
--- /dev/null
+++ b/app/dashboard.py
@@ -0,0 +1,26 @@
+from app import app, db, login
+from app.models import User, Search
+from app.custom import require_role
+from flask import render_template, redirect, url_for, request, jsonify
+from flask_login import current_user, login_required
+
+@app.route('/dashboard')
+@login_required
+def dashboard():
+ return render_template('/dashboard/dashboard.html')
+
+@app.route('/dashboard/profile_settings')
+@login_required
+def profile_settings():
+ return render_template('/dashboard/profile_settings.html')
+
+@app.route('/dashboard/constants')
+@login_required
+@require_role(roles=['Admin'])
+def constants():
+ return render_template('/dashboard/constants.html')
+
+@app.route('/dashboard/rbac')
+@login_required
+def rbac():
+ return render_template('/dashboard/rbac.html')
\ No newline at end of file
diff --git a/app/forms.py b/app/forms.py
index 8432cac..4c20a65 100644
--- a/app/forms.py
+++ b/app/forms.py
@@ -24,4 +24,7 @@ class RegistrationForm(FlaskForm):
def validate_email(self, email):
user = User.query.filter_by(email=email.data).first()
if user is not None:
- raise ValidationError('That email address is not available.')
\ No newline at end of file
+ raise ValidationError('That email address is not available.')
+
+class ProfileSettingsForm(FlaskForm):
+ show_email = BooleanField('Show ')
\ No newline at end of file
diff --git a/app/models.py b/app/models.py
index 0f0d87f..ec8f775 100644
--- a/app/models.py
+++ b/app/models.py
@@ -1,18 +1,9 @@
+from flask import abort
from flask_login import UserMixin
from datetime import datetime
from app import db, login
from werkzeug.security import generate_password_hash, check_password_hash
-def require_role(roles=["User"]):
- def wrap(func):
- @wraps(func)
- def decorated_view(*args, **kwargs):
- if current_user.is_authenticated:
- if current_user.has_roles(roles):
- return func(*args, **kwargs)
- return abort(401)
- return decorated_view
- return wrap
@login.user_loader
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
diff --git a/app/routes.py b/app/routes.py
index 2158865..201e50b 100644
--- a/app/routes.py
+++ b/app/routes.py
@@ -1,10 +1,10 @@
from app import app, db, login
-from app.models import User, Search, require_role
+from app.models import User, Search
from app.forms import LoginForm, RegistrationForm
+from app.custom import require_role
from werkzeug.urls import url_parse
from flask import render_template, redirect, url_for, flash, request, jsonify, abort
from flask_login import current_user, login_user, logout_user, login_required
-from functools import wraps
import requests
import xmltodict
import base64
@@ -21,11 +21,6 @@ def strgen(length): return ''.join(random.choices(list(string.ascii_letters), k=
def unauthorized(e):
return redirect(url_for('login'))
-@app.route('/dashboard')
-@login_required
-def dashboard():
- return render_template('/dashboard/dashboard.html')
-
@app.route('/profile/')
@login_required
def profile():
diff --git a/app/templates/dashboard/constants.html b/app/templates/dashboard/constants.html
index 6f5b02e..346e262 100644
--- a/app/templates/dashboard/constants.html
+++ b/app/templates/dashboard/constants.html
@@ -1,4 +1,4 @@
-{% extends 'dashboard_base' %}
+{% extends '/dashboard/dashboard_base.html' %}
{% set constants_active = True %}
{% block dashboard_body %}
constants
diff --git a/app/templates/dashboard/dashboard.html b/app/templates/dashboard/dashboard.html
index 4483a07..9d59c15 100644
--- a/app/templates/dashboard/dashboard.html
+++ b/app/templates/dashboard/dashboard.html
@@ -1,4 +1,4 @@
-{% extends 'dashboard/dashboard_base.html' %}
+{% extends '/dashboard/dashboard_base.html' %}
{% set dashboard_home_active = True %}
{% block dashboard_body %}
diff --git a/app/templates/dashboard/dashboard_base.html b/app/templates/dashboard/dashboard_base.html
index 9388617..addc00e 100644
--- a/app/templates/dashboard/dashboard_base.html
+++ b/app/templates/dashboard/dashboard_base.html
@@ -8,7 +8,7 @@