Exemple #1
0
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)
Exemple #2
0
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))
Exemple #3
0
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'])
Exemple #4
0
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))
Exemple #5
0
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))
Exemple #6
0
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
            })