コード例 #1
0
def _save_room(cd):
    room = Room()
    room.id = cd['id'] or None
    room.number = cd['number']
    room.description = cd['description']
    room.syndic = cd['syndic']
    room.save()
    return room
コード例 #2
0
    def post(self, obj_id=None):
        """
       Post room(s)
       Create a new room/ Update a room
       ---
       tags:
         - rooms
       parameters:
         - in: path
           name: obj_id
         - in: body
           name: body
           schema:
             id: Room
             required:
               - number
             properties:
               number:
                 type: integer
                 description: room number
       responses:
         201:
           description: Room created
       """
        data = self.prepare_data()
        form = RoomForm(data, csrf_enabled=False)
        if form.validate():
            if obj_id:
                room = Room.get_by_id(int(obj_id))
                if not room:
                    abort(404, message="Room with key ({}) not found".format(obj_id))

                room.is_booked = form.is_booked.data if form.is_booked.data else room.is_booked
                room.put()

                output = self.output_fields
                output.update(self.resource_fields)
                return marshal(room, output), 200

            room = Room(number=form.number.data, is_booked=form.is_booked.data)
            room.put()
            room.id = str(room.key.id())
            room.put()
            output = self.output_fields
            output.update(self.resource_fields)
            return marshal(room, output), 201

        error_data = self.prepare_errors(form.errors)
        raise CustomException(code=400, name='Validation Failed', data=error_data)