def register(): if current_user.is_authenticated: return redirect(url_for('home')) form = RegistrationForm() if form.validate_on_submit(): hashed_pw = bcrypt.generate_password_hash(form.password.data).decode('utf-8') #แก้บัคค่า default if form.signature.data == "https://firebasestorage.googleapis.com/v0/b/southern-iot-box.appspot.com/o/signature.jpg?alt=media": flash(f'Please confirm your sign', 'yellow lighten-5') redirect(url_for('register')) else: push = firebase.put('/Users', form.username.data, { 'username': form.username.data, 'password' : hashed_pw, 'link' : form.signature.data, 'cellular' : form.cellular.data, 'first_name' : form.first_name.data, 'last_name' : form.last_name.data, 'created_date': my_date_time() }) push2 = firebase.put('/historys', form.username.data, { 'box_name':[1], 'history':[1] }) print("register success!!") flash(f'Account created for {form.username.data}!', 'green lighten-5') return redirect(url_for('home')) return render_template('register.html', title='Register', form=form)
def reserve(box_name, number): reserve_date = my_date_time() if number == 1: end_date = add_date(day=1,month=0,year=0) elif number == 2: end_date = add_date(day=0,month=1,year=0) elif number == 3: end_date = add_date(day=0,month=0,year=1) box = get_box_from_firebase(box_name) if box['status'] == 'no': # mqtt.publish('is_reserved', box_name) mqtt.publish('status_box', "reserved") push = firebase.put('/boxs', box_name, { 'owner': current_user.first_name+" "+current_user.last_name, 'username': current_user.username, 'status' : 'reserved', 'reserved_date': reserve_date, 'end_date' : end_date, 'password': [1], 'message': [1] }) historys = get_history_from_firebase(current_user.username) box_names = historys['box_name'] box_names.append(box_name) history = historys['history'] push2 = firebase.put('/historys', current_user.username, { 'box_name':box_names, 'history':history }) return redirect(url_for('box', box_name=box_name)) else: return redirect(url_for('box', box_name=box_name))
def box(box_name): form = BoxPasswordForm() box = get_box_from_firebase(box_name) if form.validate_on_submit(): pw = str(form.password.data) password = box['password'] message = box['message'] password.append(pw) reserved_date = box['reserved_date'] end_date = box['end_date'] push = firebase.put('/boxs', box_name, { 'owner': box['owner'], 'username': box['username'], 'status' : 'reserved', 'reserved_date': reserved_date, 'end_date' : end_date, 'password': password, 'message':message }) flash(f'success {pw} was added!', 'green lighten-5') status = box['status'] if status == 'no': #print("ว่าง") return render_template('reserve.html', title="Reserve", box_name=box_name) else: owner = box['owner'] end_date = box['end_date'] return render_template('box.html', title='Box'+box_name, box_name=box_name, owner=owner, end_date=end_date, form=form, password=box['password'],message=box['message'])
def open(box_name): mqtt.publish('open_box', box_name) box = get_box_from_firebase(box_name) owner = box['owner'] message = box['message'] message.append({ 'sender':owner, 'time':my_date_time(), 'contact':1 }) reserved_date = box['reserved_date'] end_date = box['end_date'] username = box['username'] password = box['password'] push = firebase.put('/boxs', box_name, { 'owner': owner, 'username': username, 'status' : 'reserved', 'reserved_date': reserved_date, 'end_date' : end_date, 'password': password, 'message': message }) #print(box_name) return redirect(url_for('box', box_name=box_name))
def sending(box_name): box = get_box_from_firebase(box_name) form = BoxPasswordForm() if form.validate_on_submit(): pw = form.password.data password = box['password'] if pw in password: sender = current_user.first_name+" "+current_user.last_name # print(sender) # print(pw) password.remove(pw) # print(password) message = box['message'] message.append({ 'sender':sender, 'time':my_date_time(), 'contact':current_user.cellular }) reserved_date = box['reserved_date'] end_date = box['end_date'] owner = box['owner'] username = box['username'] push = firebase.put('/boxs', box_name, { 'owner': owner, 'username': username, 'status' : 'reserved', 'reserved_date': reserved_date, 'end_date' : end_date, 'password': password, 'message': message }) flash(f'success {box_name} can open!', 'green lighten-5') #function เปิดกล่อง mqtt.publish('open_box', box_name) path = '/Users/'+username data = firebase.get(path, None) thumnail = data['link'] #print(thumnail) owner = box['owner'] end_date = box['end_date'] return render_template('box.html', title='Box '+box_name, box_name=box_name, owner=owner, end_date=end_date, form=form, thumnail=thumnail) else: flash(f'invalid ! please contact your customer', 'red lighten-5') return redirect(url_for('box', box_name=box_name))
def handle_mytopic(client, userdata, message): box_name = message.payload.decode() box = get_box_from_firebase(box_name) message = box['message'] message.append({ 'sender':'closed box', 'time':my_date_time(), 'contact':1 }) reserved_date = box['reserved_date'] end_date = box['end_date'] owner = box['owner'] username = box['username'] password = box['password'] push = firebase.put('/boxs', box_name, { 'owner': owner, 'username': username, 'status' : 'reserved', 'reserved_date': reserved_date, 'end_date' : end_date, 'password': password, 'message': message })