adds device page and form for new device

- form added to push new device id to backend
- device added to db model (needs to be pushed still)
- form return right now just prints
- design for device list created, still needs some updates
This commit is contained in:
Raphael Maenle 2020-05-21 18:33:58 +02:00
parent 46eece9b98
commit 3c6d950bbc
7 changed files with 86 additions and 16 deletions

View File

@ -29,3 +29,7 @@ class RegistrationForm(FlaskForm):
user = User.query.filter_by(email=email.data).first() user = User.query.filter_by(email=email.data).first()
if user is not None: if user is not None:
raise ValidationError('Please use a different email address.') raise ValidationError('Please use a different email address.')
class DeviceForm(FlaskForm):
deviceId=StringField('New Device ID', validators=[DataRequired()])
submit = SubmitField('Add New Device')

View File

@ -104,7 +104,7 @@ def calendarsFromDb():
calendars = dbCalendar.getCalendars(dbCalendar, current_user.id) calendars = dbCalendar.getCalendars(dbCalendar, current_user.id)
pyCalendars = [] pyCalendars = []
for calendar in calendars: for calendar in calendars:
name = calendar.name name = (calendar.name[:16] + '..') if len(calendar.name)> 18 else calendar.name
calendarId = calendar.calendar_id calendarId = calendar.calendar_id
toggle = calendar.toggle toggle = calendar.toggle
color = calendar.color color = calendar.color

View File

@ -88,3 +88,7 @@ class Calendar(db.Model):
db.session.add(newcal) db.session.add(newcal)
db.session.commit() db.session.commit()
class Device(db.Model):
id = db.Column(db.Integer, primary_key=True)
deviceId = db.Column(db.String(128), index=True)

View File

@ -19,8 +19,8 @@ import requests
import server.googleHandler as google import server.googleHandler as google
from server import login_manager, app, db from server import login_manager, app, db
from server.forms import LoginForm, RegistrationForm from server.forms import LoginForm, RegistrationForm, DeviceForm
from server.models import User, Calendar from server.models import User, Calendar, Device
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1' os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
@ -46,6 +46,22 @@ def view():
else: else:
return (flask.render_template('view.html')) return (flask.render_template('view.html'))
@app.route("/devices", methods=['GET', 'POST'])
def devices():
if not current_user.is_authenticated:
return flask.render_template('login.html')
device = Device()
device.deviceId="Anthon-Mouse-Car"
devices = [device]
form = DeviceForm()
if form.validate_on_submit():
print(form.deviceId.data, flush=True)
# TODO add device to database here
return flask.render_template('devices.html', devices=devices, form=form)
@app.route("/calendar") @app.route("/calendar")
@login_required @login_required
def calendar(): def calendar():
@ -67,6 +83,7 @@ def emaillogin():
return redirect(url_for('account')) return redirect(url_for('account'))
return render_template('emaillogin.html', title='Sign In', form=form) return render_template('emaillogin.html', title='Sign In', form=form)
@app.route('/register', methods=['GET', 'POST']) @app.route('/register', methods=['GET', 'POST'])
def register(): def register():
if current_user.is_authenticated: if current_user.is_authenticated:
@ -81,7 +98,7 @@ def register():
db.session.commit() db.session.commit()
flash('Congratulations, you are now a registered user!') flash('Congratulations, you are now a registered user!')
return redirect(url_for('emaillogin')) return redirect(url_for('emaillogin'))
return render_template('register.html', title='Register', form=form) return flask.render_template('register.html', title='Register', form=form)
@app.route("/test") @app.route("/test")
def testAPI(): def testAPI():

View File

@ -179,6 +179,15 @@ body *
background-color: #b51409; background-color: #b51409;
} }
.container .button.adddevice {
background-color: #ddd;
color: white;
}
.container .button.addcalendar {
background-color: #ddd;
color: white;
}
.sub.container { .sub.container {
width: 20rem; width: 20rem;
justify-content: left; justify-content: left;

View File

@ -1,20 +1,19 @@
{% extends "sidebar.html" %} {% extends "sidebar.html" %}
{% block body%} {% block body%}
<div style="height: 50px"> <div class="container">
<div style="width: 30%; float: left; margin-left: 10%">Calendar</div> <div style="width: 15rem; margin: 1rem">Calendar</div>
<div style="width: 30%; float: left">Show on device</div> <div style="width: 10rem; margin: 1rem; padding-right: 5rem">Show on device</div>
<div style="width: 30%; float: left">Color</div> <div style="width: 2rem; margin: 1rem">Color</div>
</div> </div>
<div>
{% for item in calendars %} {% for item in calendars %}
<div style="height: 30px"> <div class="container">
<!--Name--> <!--Name-->
<div style="width: 30%; float: left; font-size: 10px; text-align: left; margin-left: 10%">{{ item.name }}</div> <div style="width: 15rem; margin: 1rem;">{{ item.name }}</div>
<!--Toggle--> <!--Toggle-->
<div style="width: 30%; float: left"> <div style="width: 10rem; margin: 1rem; padding-right: 5rem">
<!-- Rounded switch --> <!-- Rounded switch -->
<label class="switch"> <label class="switch">
<input class="toggle" id={{item.calendarId}} type="checkbox" toggled={{item.toggle}} onclick="toggleReaction(this)"> <input class="toggle" id={{item.calendarId}} type="checkbox" toggled={{item.toggle}} onclick="toggleReaction(this)">
@ -23,7 +22,7 @@
</div> </div>
<!--Color Selector--> <!--Color Selector-->
<div style="width: 30%; float: left"> <div style="width: 2rem; margin: 1rem;">
<div class="colorPickSelector" id={{item.calendarId}} defaultColor={{item.color}}></div> <div class="colorPickSelector" id={{item.calendarId}} defaultColor={{item.color}}></div>
<!--svg height="20" width="20"> <!--svg height="20" width="20">
<circle cx="10" cy="10" r="10" stroke="black" stroke-width="0" fill={{ item.color }} /> <circle cx="10" cy="10" r="10" stroke="black" stroke-width="0" fill={{ item.color }} />
@ -32,7 +31,8 @@
</div> </div>
{% endfor %} {% endfor %}
<div class="container">
<div class="button addcalendar" style="width: auto; margin: 4rem">Add Calendar</div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">

View File

@ -0,0 +1,36 @@
{% extends "sidebar.html" %}
{% block body%}
<div class="container">
<div style="width: 15rem; margin: 1rem">Device ID</div>
<div style="width: 10rem; margin: 1rem; padding-right: 5rem">Link Status</div>
<div style="width: 2rem; margin: 1rem">Action</div>
</div>
{% for item in devices %}
<div class="container">
<!--Name-->
<div style="width: 15rem; margin: 1rem;">{{ item.deviceId }}</div>
<!--Toggle-->
<div style="width: 10rem; margin: 1rem; padding-right: 5rem">
Connected
</div>
<!--Color Selector-->
<div style="width: 2rem; margin: 1rem;">
<button type="button">Unlink</button>
</div>
</div>
{% endfor %}
<form action="" method="post">
<div class="container">
{{ form.hidden_tag() }}
{{ form.deviceId.label }}
{{ form.deviceId(size=32) }}
{{ form.submit() }}
</div>
</form>
{% endblock %}