Пример #1
0
    def _process(self, args):
        query = search_for_rooms(args, only_available=True)
        if 'limit' in args:
            query = query.limit(args.pop('limit'))

        rooms = query.all()
        if 'additional_room_ids' in args:
            rooms.extend(
                Room.query.filter(Room.is_active,
                                  Room.id.in_(
                                      args.pop('additional_room_ids'))))

        date_range, availability = get_rooms_availability(
            rooms,
            args['start_dt'],
            args['end_dt'],
            args['repeat_frequency'],
            args['repeat_interval'],
            flexibility=0)
        date_range = [dt.isoformat() for dt in date_range]

        for data in availability.viewvalues():
            # add additional helpful attributes
            data.update({
                'num_days_available':
                len(date_range) - len(data['conflicts']),
                'all_days_available':
                not data['conflicts']
            })

        return jsonify_data(flash=False,
                            availability=_serialize_availability(availability),
                            date_range=date_range)
Пример #2
0
    def _process(self, args):
        query = search_for_rooms(args, only_available=True)
        if 'limit' in args:
            query = query.limit(args.pop('limit'))

        rooms = query.all()
        if 'additional_room_ids' in args:
            rooms.extend(
                Room.query.filter(Room.is_active,
                                  Room.id.in_(
                                      args.pop('additional_room_ids'))))

        date_range, availability = get_rooms_availability(
            rooms,
            args['start_dt'],
            args['end_dt'],
            args['repeat_frequency'],
            args['repeat_interval'],
            flexibility=0)
        date_range = [dt.isoformat() for dt in date_range]
        for room_id in availability:
            data = availability[room_id]
            data['room'] = rooms_schema.dump(data['room'], many=False).data
            data.update({
                k: serialize_occurrences(data[k])
                for k in [
                    'candidates', 'pre_bookings', 'bookings', 'conflicts',
                    'pre_conflicts'
                ]
            })
            data.update({
                'num_days_available':
                len(date_range) - len(data['conflicts']),
                'all_days_available':
                not data['conflicts']
            })
        return jsonify_data(flash=False,
                            availability=availability,
                            date_range=date_range)
Пример #3
0
 def _process(self, args):
     filter_availability = args.get('start_dt') and args.get('end_dt')
     query = search_for_rooms(args, only_available=filter_availability)
     return jsonify(map_rooms_schema.dump(query.all()).data)
Пример #4
0
 def _process(self, args):
     filter_availability = args.get('start_dt') and args.get('end_dt')
     query = search_for_rooms(args, only_available=filter_availability)
     query = query.limit(args['limit']).offset(args['offset'])
     rooms, total = with_total_rows(query)
     return jsonify(total=total, rooms=rooms_schema.dump(rooms).data)