本文整理汇总了Python中indico.modules.rb.models.blocked_rooms.BlockedRoom.find_first方法的典型用法代码示例。如果您正苦于以下问题:Python BlockedRoom.find_first方法的具体用法?Python BlockedRoom.find_first怎么用?Python BlockedRoom.find_first使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类indico.modules.rb.models.blocked_rooms.BlockedRoom
的用法示例。
在下文中一共展示了BlockedRoom.find_first方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: validate_blocked_rooms
# 需要导入模块: from indico.modules.rb.models.blocked_rooms import BlockedRoom [as 别名]
# 或者: from indico.modules.rb.models.blocked_rooms.BlockedRoom import find_first [as 别名]
def validate_blocked_rooms(self, field):
try:
field.data = map(int, field.data)
except Exception as e:
# In case someone sent crappy data
raise ValidationError(str(e))
# Make sure all room ids are valid
if len(field.data) != Room.find(Room.id.in_(field.data)).count():
raise ValidationError('Invalid rooms')
if hasattr(self, '_blocking'):
start_date = self._blocking.start_date
end_date = self._blocking.end_date
blocking_id = self._blocking.id
else:
start_date = self.start_date.data
end_date = self.end_date.data
blocking_id = None
overlap = BlockedRoom.find_first(
BlockedRoom.room_id.in_(field.data),
BlockedRoom.state != BlockedRoom.State.rejected,
Blocking.start_date <= end_date,
Blocking.end_date >= start_date,
Blocking.id != blocking_id,
_join=Blocking
)
if overlap:
msg = 'Your blocking for {} is overlapping with another blocking.'.format(overlap.room.full_name)
raise ValidationError(msg)