Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- author: Hubert Zajac
- company: AGH
- contact: hubertzajac6@gmail.com
- """
- from flask import render_template, url_for, flash, redirect, request
- from inz_web_app.forms import RegistrationForm, LoginForm, UpdateAccountForm, PostFrom, ConnectFrom
- from inz_web_app import app, db, bcrypt, STM32
- from inz_web_app.models import User, Task, Post
- from flask_login import login_user, current_user, logout_user, login_required
- from inz_web_app.picture import save_picture
- from inz_stm32_communication.interface import InzStm32Communication
- import serial
- posts = [
- {
- 'author': 'Hubert Zając',
- 'title': 'Ostatnie logowanie',
- 'content': 'cwiczenie 1',
- 'date_posted': 'December 20, 2018'
- },
- {
- 'author': 'Hubert Zajac',
- 'title': 'Ostatnie logowanie',
- 'content': 'cwiczenie 2',
- 'date_posted': 'December 21, 2018'
- }
- ]
- @app.route("/")
- @app.route("/home")
- def home():
- # posts = Task.query.all()
- return render_template('home.html', posts=posts)
- @app.route("/about")
- def about():
- return render_template('about.html', title='About')
- @app.route("/register", methods=['GET', 'POST'])
- def register():
- if current_user.is_authenticated:
- return redirect(url_for('home'))
- form = RegistrationForm()
- if form.validate_on_submit():
- hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
- user = User(username=form.username.data, email=form.email.data, password=hashed_password)
- db.session.add(user)
- db.session.commit()
- flash('Your account has been created! You are now able to log in.', 'success')
- return redirect(url_for('login'))
- return render_template('register.html', title='Register', form=form)
- @app.route("/login", methods=['GET', 'POST'])
- def login():
- if current_user.is_authenticated:
- return redirect(url_for('home'))
- form = LoginForm()
- if form.validate_on_submit():
- user = User.query.filter_by(email=form.email.data).first()
- if user and bcrypt.check_password_hash(user.password, form.password.data):
- login_user(user, remember=form.remember.data)
- next_page = request.args.get('next')
- return redirect(next_page) if next_page else redirect(url_for('home'))
- else:
- flash('Login unsuccessful. Please check email and password', 'danger')
- return render_template('login.html', title='Login', form=form)
- @app.route("/logout")
- def logout():
- logout_user()
- return redirect(url_for('home'))
- @app.route("/account", methods=['GET', 'POST'])
- @login_required
- def account():
- form = UpdateAccountForm()
- if form.validate_on_submit():
- if form.picture.data:
- picture_file = save_picture(form.picture.data)
- current_user.image_file = picture_file
- current_user.username = form.username.data
- current_user.email = form.email.data
- db.session.commit()
- flash('You account has been updated!', 'success')
- return redirect(url_for('account'))
- elif request.method == 'GET':
- form.username.data = current_user.username
- form.email.data = current_user.email
- image_file = url_for('static', filename=f'profile_pics/{current_user.image_file}')
- return render_template("account.html", title="Account", image_file=image_file, form=form)
- @app.route("/measurement/new", methods=['GET', 'POST'])
- @login_required
- def measurement():
- posts = []
- for task in Task.query.all():
- if task.user_id == current_user.id:
- posts.append(task)
- form = PostFrom()
- if form.validate_on_submit():
- # we add task to our list.
- task = Task(title=form.title.data, quantity=form.quantity.data, user_id=current_user.id)
- db.session.add(task)
- db.session.commit()
- flash('You measurement case has been created! Click run to perform measurements', 'success')
- return redirect(url_for('measurement'))
- return render_template('measurement.html', title='Measurement', form=form, posts=posts)
- @app.route("/connect/checking", methods=['GET', 'POST'])
- @login_required
- def connect():
- form = ConnectFrom()
- if form.validate_on_submit():
- try:
- STM32 = InzStm32Communication(com=f'COM{form.port.data}')
- except serial.serialutil.SerialException:
- flash('Connection FAILED. Check your connection with the board or COM port number.', 'danger')
- return redirect(url_for('connect'))
- else:
- STM32.check_connection()
- flash('You are connected successful', 'success')
- return redirect(url_for('home'))
- return render_template('connect.html', title='Connect', form=form)
- @app.route("/task/<int:task_id>")
- @login_required
- def task(task_id):
- try:
- for t in current_user.tasks:
- if t.id == task_id:
- task = Task.query.get_or_404(task_id)
- return render_template('task.html', title=task.title, post=task)
- else:
- raise TypeError
- except TypeError:
- flash('It is not your task', 'danger')
- return redirect(url_for('measurement'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement