Advertisement
Guest User

Untitled

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