Advertisement
Guest User

Untitled

a guest
Dec 21st, 2018
585
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.22 KB | None | 0 0
  1. """
  2. author: Hubert Zajac
  3. company: AGH
  4. """
  5. from flask import render_template, url_for, flash, redirect, request
  6. from inz_web_app.forms import RegistrationForm, LoginForm, UpdateAccountForm, PostFrom, ConnectFrom
  7. from inz_web_app import app, db, bcrypt, STM32
  8. from inz_web_app.models import User, Task, Post
  9. from flask_login import login_user, current_user, logout_user, login_required
  10. from inz_web_app.picture import save_picture
  11. from inz_stm32_communication.interface import InzStm32Communication
  12. import serial
  13.  
  14. posts = [
  15.     {
  16.         'author': 'Hubert Zając',
  17.         'title': 'Ostatnie logowanie',
  18.         'content': 'cwiczenie 1',
  19.         'date_posted': 'December 20, 2018'
  20.     },
  21.     {
  22.         'author': 'Hubert Zajac',
  23.         'title': 'Ostatnie logowanie',
  24.         'content': 'cwiczenie 2',
  25.         'date_posted': 'December  21, 2018'
  26.     }
  27. ]
  28.  
  29.  
  30. @app.route("/")
  31. @app.route("/home")
  32. def home():
  33.     # posts = Task.query.all()
  34.     return render_template('home.html', posts=posts)
  35.  
  36.  
  37. @app.route("/about")
  38. def about():
  39.     return render_template('about.html', title='About')
  40.  
  41.  
  42. @app.route("/register", methods=['GET', 'POST'])
  43. def register():
  44.     if current_user.is_authenticated:
  45.         return redirect(url_for('home'))
  46.     form = RegistrationForm()
  47.     if form.validate_on_submit():
  48.         hashed_password = bcrypt.generate_password_hash(form.password.data).decode('utf-8')
  49.         user = User(username=form.username.data, email=form.email.data, password=hashed_password)
  50.         db.session.add(user)
  51.         db.session.commit()
  52.         flash('Your account has been created! You are now able to log in.', 'success')
  53.         return redirect(url_for('login'))
  54.     return render_template('register.html', title='Register', form=form)
  55.  
  56.  
  57. @app.route("/login", methods=['GET', 'POST'])
  58. def login():
  59.     if current_user.is_authenticated:
  60.         return redirect(url_for('home'))
  61.     form = LoginForm()
  62.     if form.validate_on_submit():
  63.         user = User.query.filter_by(email=form.email.data).first()
  64.         if user and bcrypt.check_password_hash(user.password, form.password.data):
  65.             login_user(user, remember=form.remember.data)
  66.             next_page = request.args.get('next')
  67.             return redirect(next_page) if next_page else redirect(url_for('home'))
  68.         else:
  69.             flash('Login unsuccessful. Please check email and password', 'danger')
  70.     return render_template('login.html', title='Login', form=form)
  71.  
  72.  
  73. @app.route("/logout")
  74. def logout():
  75.     logout_user()
  76.     return redirect(url_for('home'))
  77.  
  78.  
  79. @app.route("/account", methods=['GET', 'POST'])
  80. @login_required
  81. def account():
  82.     form = UpdateAccountForm()
  83.     if form.validate_on_submit():
  84.         if form.picture.data:
  85.             picture_file = save_picture(form.picture.data)
  86.             current_user.image_file = picture_file
  87.         current_user.username = form.username.data
  88.         current_user.email = form.email.data
  89.         db.session.commit()
  90.         flash('You account has been updated!', 'success')
  91.         return redirect(url_for('account'))
  92.     elif request.method == 'GET':
  93.         form.username.data = current_user.username
  94.         form.email.data = current_user.email
  95.     image_file = url_for('static', filename=f'profile_pics/{current_user.image_file}')
  96.     return render_template("account.html", title="Account", image_file=image_file, form=form)
  97.  
  98.  
  99. @app.route("/measurement/new", methods=['GET', 'POST'])
  100. @login_required
  101. def measurement():
  102.     posts = []
  103.     for task in Task.query.all():
  104.         if task.user_id == current_user.id:
  105.             posts.append(task)
  106.     form = PostFrom()
  107.     if form.validate_on_submit():
  108.         # we add task to our list.
  109.         task = Task(title=form.title.data, quantity=form.quantity.data, user_id=current_user.id)
  110.         db.session.add(task)
  111.         db.session.commit()
  112.         flash('You measurement case has been created! Click run to perform measurements', 'success')
  113.         return redirect(url_for('measurement'))
  114.     return render_template('measurement.html', title='Measurement', form=form, posts=posts)
  115.  
  116.  
  117. @app.route("/connect/checking", methods=['GET', 'POST'])
  118. @login_required
  119. def connect():
  120.     form = ConnectFrom()
  121.     if form.validate_on_submit():
  122.         try:
  123.             STM32 = InzStm32Communication(com=f'COM{form.port.data}')
  124.         except serial.serialutil.SerialException:
  125.             flash('Connection FAILED. Check your connection with the board or COM port number.', 'danger')
  126.             return redirect(url_for('connect'))
  127.         else:
  128.             STM32.check_connection()
  129.             flash('You are connected successful', 'success')
  130.             return redirect(url_for('home'))
  131.     return render_template('connect.html', title='Connect', form=form)
  132.  
  133.  
  134. @app.route("/task/<int:task_id>")
  135. @login_required
  136. def task(task_id):
  137.     try:
  138.         for t in current_user.tasks:
  139.             if t.id == task_id:
  140.                 task = Task.query.get_or_404(task_id)
  141.                 return render_template('task.html', title=task.title, post=task)
  142.         else:
  143.             raise TypeError
  144.     except TypeError:
  145.         flash('It is not your task', 'danger')
  146.         return redirect(url_for('measurement'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement