class SearchRoomsForm(IndicoForm): location = QuerySelectField(_(u'Location'), get_label=lambda x: x.name, query_factory=Location.find, allow_blank=True) details = StringField() capacity = IntegerField(_(u'Capacity'), validators=[Optional(), NumberRange(min=0)]) available_equipment = IndicoQuerySelectMultipleCheckboxField( _(u'Equipment'), get_label=u'name', query_factory=lambda: EquipmentType.find().order_by(EquipmentType.name )) is_only_public = BooleanField(_(u'Only public rooms'), default=True) is_auto_confirm = BooleanField(_(u'Only rooms not requiring confirmation'), default=True) is_only_active = BooleanField(_(u'Only active rooms'), default=True) is_only_my_rooms = BooleanField(_(u'Only my rooms')) repeatability = StringField( ) # TODO: use repeat_frequency/interval with new UI include_pending_blockings = BooleanField( _(u'Check conflicts against pending blockings'), default=True) include_pre_bookings = BooleanField( _(u'Check conflicts against pre-bookings'), default=True)
def fetch_equipment(self, connection): self._logger.debug("Fetching equipment list...") counter = Counter() foundation_equipment_ids = [] cursor = connection.cursor() cursor.execute('SELECT * FROM foundation_pub.equipment ORDER BY NAME') for row in cursor: row = self._prepare_row(row, cursor) counter['found'] += 1 equipment = EquipmentType.find_first( EquipmentType.name == row['NAME']) if not equipment: equipment = EquipmentType(name=row['NAME']) self._location.equipment_types.append(equipment) counter['added'] += 1 self._logger.info(u"Added equipment '%s'", equipment) foundation_equipment_ids.append(equipment.id) vc_parent = self._location.get_equipment_by_name('Video conference') for equipment in EquipmentType.find( ~EquipmentType.id.in_(foundation_equipment_ids), EquipmentType.parent_id != vc_parent.id): self._logger.info( "Mismatch: Equipment '%s' found in Indico but not in Foundation", equipment.name) db.session.commit() self._logger.info("Equipment objects summary: %d found - %d new added", counter['found'], counter['added'])
def _process(self): form = self._form if self._is_submitted() and form.validate(): rooms = Room.find_with_filters(form.data, session.user) return WPRoomBookingSearchRoomsResults(self, self.menu_item, rooms=rooms).display() equipment_locations = {eq.id: eq.location_id for eq in EquipmentType.find()} return WPRoomBookingSearchRooms(self, form=form, errors=form.error_list, rooms=Room.find_all(), equipment_locations=equipment_locations).display()
def _process(self): form = self._form if self._is_submitted() and form.validate(): rooms = Room.find_with_filters(form.data, session.user) return WPRoomBookingSearchRoomsResults(self, self.menu_item, rooms=rooms).display() equipment_locations = {eq.id: eq.location_id for eq in EquipmentType.find()} return WPRoomBookingSearchRooms(self, form=form, errors=form.error_list, rooms=Room.find_all(is_active=True), equipment_locations=equipment_locations).display()
class SearchRoomsForm(IndicoForm): location = QuerySelectField(_(u'Location'), get_label=lambda x: x.name, query_factory=Location.find, allow_blank=True) details = StringField() available = RadioField(_(u'Availability'), coerce=int, default=-1, widget=ConcatWidget(prefix_label=False), choices=[(1, _(u'Available')), (0, _(u'Booked')), (-1, _(u"Don't care"))]) capacity = IntegerField(_(u'Capacity'), validators=[Optional(), NumberRange(min=0)]) available_equipment = IndicoQuerySelectMultipleCheckboxField( _(u'Equipment'), get_label=_get_equipment_label, modify_object_list=_group_equipment, query_factory=lambda: EquipmentType.find().order_by(EquipmentType.name )) is_only_public = BooleanField(_(u'Only public rooms'), default=True) is_auto_confirm = BooleanField(_(u'Only rooms not requiring confirmation'), default=True) is_only_active = BooleanField(_(u'Only active rooms'), default=True) is_only_my_rooms = BooleanField(_(u'Only my rooms')) # Period details when searching for (un-)availability start_dt = DateTimeField(_(u'Start date'), validators=[Optional()], parse_kwargs={'dayfirst': True}, display_format='%d/%m/%Y %H:%M', widget=HiddenInput()) end_dt = DateTimeField(_(u'End date'), validators=[Optional()], parse_kwargs={'dayfirst': True}, display_format='%d/%m/%Y %H:%M', widget=HiddenInput()) repeatability = StringField( ) # TODO: use repeat_frequency/interval with new UI include_pending_blockings = BooleanField( _(u'Check conflicts against pending blockings'), default=True) include_pre_bookings = BooleanField( _(u'Check conflicts against pre-bookings'), default=True)