JoostSijm пре 6 година
родитељ
комит
286a28c8ca

+ 48 - 5
app/flaskr.py

@@ -5,13 +5,15 @@ Simple flask thing
 
 import random
 import string
+from datetime import datetime
+
 from flask import render_template, request, redirect, \
     flash, url_for, abort, json
 from flask_breadcrumbs import Breadcrumbs, register_breadcrumb
 from flask_menu import Menu, register_menu
 from flask_login import login_required, login_user, logout_user
 from app import app, login_manager, db, rrclient, alt_rrclient
-from app.models import User, Request, Log, Key
+from app.models import User, Log, Key
 
 Menu(app=app)
 Breadcrumbs(app=app)
@@ -41,20 +43,53 @@ def login():
 @app.route("/register", methods=["POST"])
 def register():
     """Register a new user"""
+    name = request.form['name'] if 'name' in request.form else None
+    email = request.form['email'] if 'email' in request.form else None
+    password = request.form['password'] if 'email' in request.form else None
+
+    if name is None:
+        flash('Fill in the name.', 'warning')
+        return render_template('login.j2')
+
+    if email is None:
+        flash('Fill in the email.', 'warning')
+        return render_template(
+            'login.j2',
+            name=name
+        )
+
+    if password is None:
+        flash('Fill in the password.', 'warning')
+        return render_template(
+            'login.j2',
+            name=name,
+            email=email
+        )
+
+    user = User.query.filter(User.email == email).first()
+    if user is not None:
+        flash('Email already taken.', 'warning')
+        return render_template(
+            'login.j2',
+            name=name,
+        )
+
     user = User()
-    user.name = request.form['name']
-    user.email = request.form['email']
-    user.password = request.form['password']
+    user.name = name
+    user.email = email
+    user.password = password
     db.session.add(user)
     db.session.commit()
     login_user(user)
-    flash('Succesfully registered account', 'success')
+
+    flash('Successfully registered account "%s".' % (user.name), 'success')
     if request.args.get("next") is not None:
         return redirect(request.args.get("next"))
     else:
         return redirect(url_for('index'))
 
 
+
 @app.route("/logout")
 @login_required
 def logout():
@@ -163,6 +198,10 @@ def api_get(url_path):
         return abort(403)
 
     log = Log()
+    log.date_time = datetime.now()
+    log.key_id = key.id
+    log.request_type = 'GET'
+    log.request_url = url_path
     db.session.add(log)
     db.session.commit()
 
@@ -189,6 +228,10 @@ def api_post(url_path):
         return abort(403)
 
     log = Log()
+    log.date_time = datetime.now()
+    log.key_id = key.id
+    log.request_type = 'POST'
+    log.request_url = url_path
     db.session.add(log)
     db.session.commit()
 

+ 3 - 14
app/models.py

@@ -49,19 +49,16 @@ class Key(db.Model):
     )
     user = db.relationship(
         "User",
-        backref=db.backref("users", lazy="dynamic")
+        backref=db.backref("keys", lazy="dynamic")
     )
 
-class Request(db.Model):
-    """Model for function"""
-    id = db.Column(db.Integer, primary_key=True)
-    name = db.Column(db.String)
-
 
 class Log(db.Model):
     """Model for Log"""
     id = db.Column(db.Integer, primary_key=True)
     succes = db.Column(db.Boolean, default=False)
+    request_type = db.Column(db.String)
+    request_url = db.Column(db.String)
     date_time = db.Column(db.DateTime)
 
     key_id = db.Column(
@@ -72,11 +69,3 @@ class Log(db.Model):
         "Key",
         backref=db.backref("logs", lazy="dynamic")
     )
-    request_id = db.Column(
-        db.Integer,
-        db.ForeignKey('request.id')
-    )
-    request = db.relationship(
-        "Request",
-        backref=db.backref("logs", lazy="dynamic")
-    )

+ 7 - 7
app/templates/layouts/main.html

@@ -9,12 +9,12 @@
 		<title>{% block title %}{% endblock %} - PACC</title>
 		{% block head%}{% endblock %}
 		<!-- Bootstrap core CSS-->
-		<link href="{{ url_for('static', filename='vendor/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
+		<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
 		<!-- Custom fonts for this template-->
-		<link href="{{ url_for('static', filename='vendor/font-awesome/css/font-awesome.min.css') }}" rel="stylesheet">
+		<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
 		<!-- Custom styles for this template-->
-		<link href="{{ url_for('static', filename='css/sb-admin.min.css') }}" rel="stylesheet">
-		<link href="{{ url_for('static', filename='css/custom.min.css') }}" rel="stylesheet">
+		<link href="{{ url_for('static', filename='css/sb-admin.css') }}" rel="stylesheet">
+		<link href="{{ url_for('static', filename='css/custom.css') }}" rel="stylesheet">
 	</head>
 
 	<body class="fixed-nav sticky-footer bg-dark {{ 'sidenav-toggled' if not current_user.is_authenticated }}" id="page-top">
@@ -115,9 +115,9 @@
 					</div>
 				</div>
 			</div>
-			<script type='text/javascript' src="{{ url_for('static', filename='vendor/jquery/jquery.min.js') }}"></script>
-			<script type='text/javascript' src="{{ url_for('static', filename='vendor/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
-			<script type='text/javascript' src="{{ url_for('static', filename='js/site/sb-admin.min.js') }}"></script>
+			<script type='text/javascript' src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
+			<script type='text/javascript' src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
+			<script type='text/javascript' src="{{ url_for('static', filename='js/site/sb-admin.js') }}"></script>
 			{% block javascript %}{% endblock %}
 		</div>
 	</body>

+ 5 - 5
app/templates/site/login.html

@@ -6,9 +6,9 @@
 	<meta name="author" content="">
 	<title>SB Admin - Start Bootstrap Template</title>
 	<!-- Bootstrap core CSS-->
-	<link href="{{ url_for('static', filename='vendor/bootstrap/css/bootstrap.css') }}" rel="stylesheet">
+	<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
 	<!-- Custom fonts for this template-->
-	<link href="{{ url_for('static', filename='vendor/font-awesome/css/font-awesome.min.css') }}" rel="stylesheet">
+	<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
 	<!-- Custom styles for this template-->
 	<link href="{{ url_for('static', filename='css/sb-admin.css') }}" rel="stylesheet">
 </head>
@@ -73,9 +73,9 @@
 		</div>
 	</div>
 	<!-- Bootstrap core JavaScript-->
-	<script type='text/javascript' src="{{ url_for('static', filename='vendor/jquery/jquery.min.js') }}"></script>
-	<script type='text/javascript' src="{{ url_for('static', filename='vendor/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
-	<script type='text/javascript' src="{{ url_for('static', filename='js/site/sb-admin.min.js') }}"></script>
+	<script type='text/javascript' src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
+	<script type='text/javascript' src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
+	<script type='text/javascript' src="{{ url_for('static', filename='js/site/sb-admin.js') }}"></script>
 	<!-- Core plugin JavaScript-->
 </body>
 

+ 36 - 0
migrations/versions/012799339d34_update_log.py

@@ -0,0 +1,36 @@
+"""update_log
+
+Revision ID: 012799339d34
+Revises: 948ce5107c93
+Create Date: 2019-09-08 14:21:58.698377
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '012799339d34'
+down_revision = '948ce5107c93'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    op.add_column('log', sa.Column('request_type', sa.String(), nullable=True))
+    op.add_column('log', sa.Column('request_url', sa.String(), nullable=True))
+    op.drop_constraint('fk_log_request_id_request', 'log', type_='foreignkey')
+    op.drop_column('log', 'request_id')
+    op.drop_table('request')
+
+
+def downgrade():
+    op.drop_column('log', 'request_url')
+    op.drop_column('log', 'request_type')
+    op.create_table('request',
+    sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False),
+    sa.Column('name', sa.VARCHAR(), autoincrement=False, nullable=True),
+    sa.PrimaryKeyConstraint('id', name='pk_request')
+    )
+    op.add_column('log', sa.Column('request_id', sa.INTEGER(), autoincrement=False, nullable=True))
+    op.create_foreign_key('fk_log_request_id_request', 'log', 'request', ['request_id'], ['id'])