コード例 #1
0
def rooms():
    room_table = [room.iterable() for room in Room.query.all()]

    find_edit_id_form = FindEditIdFormRoom()
    edit_room_form = EditRoomForm()
    add_room_form = AddRoomForm()
    delete_room_form = DeleteRoomForm()
    room_form = RoomForm()
    fields = ['r_name', 'building']
    show_options = {
        'edit_id': False,
        'edit': False,
        'add': False,
        'delete': False
    }

    data = request.form

    if 'add' in data:
        show_options['add'] = True
        redirect('rooms')

    if 'edit' in data:
        show_options['edit_id'] = True
        redirect('rooms')

    if 'delete' in data:
        show_options['delete'] = True
        redirect('rooms')

    if add_room_form.submit_add.data and add_room_form.validate_on_submit():
        new_room = Room(r_name=add_room_form.r_name.data,
                        building=add_room_form.building.data)
        new_room.add()
        return redirect('rooms')

    if find_edit_id_form.submit_edit_id.data and find_edit_id_form.validate_on_submit(
    ):
        room_id = find_id_room(find_edit_id_form.r_name.data)
        room_to_edit = Room.query.get(room_id)
        edit_room_form.process(obj=room_to_edit)
        cache.set('room_to_edit_id', room_id)
        show_options['edit'] = True
        return render_template('rooms.html',
                               room_table=room_table,
                               edit_room_form=edit_room_form,
                               room_to_edit=room_to_edit,
                               find_edit_id_form=find_edit_id_form,
                               show_options=show_options)

    if edit_room_form.submit_edit.data and edit_room_form.validate_on_submit():
        room_to_edit = Room.query.get(cache.get('room_to_edit_id'))
        room_to_edit.edit(edit_room_form)
        return redirect('rooms')

    if delete_room_form.submit_delete_id.data and delete_room_form.validate_on_submit(
    ):
        room_to_delete = Room.query.filter(
            Room.r_name == delete_room_form.r_name.data.upper()).first()
        if not room_to_delete:
            flash('Couldn\'t find room')
        else:
            activities_in_room = Activity.query.filter(
                Activity.r_id == room_to_delete.id).first()
            if activities_in_room:
                flash('Cannot delete room. It is being used for an activity')
                return redirect('rooms')
            Room.query.filter(
                Room.r_name == delete_room_form.r_name.data.upper()).delete()
            db.session.commit()
        return redirect('rooms')

    room_table = [room.iterable() for room in Room.query.all()]
    return render_template('rooms.html',
                           room_table=room_table,
                           add_room_form=add_room_form,
                           find_edit_id_form=find_edit_id_form,
                           edit_room_form=edit_room_form,
                           delete_room_form=delete_room_form,
                           show_options=show_options)