本文整理匯總了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)