我正试图找到一种方法,如果可能的话,在单个python对象中表示一个项目的三种可用性状态。
当前,我必须提取一个json字段,其中包含一个日程安排、任何可能的预订,并表示接下来24小时的可用性和不可用性。
首先想到的是做一个列表,其中的3状态代表24小时。
hours = [0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0] # example
|0不可用|1可用(由于当前时间在计划内)|2已预订但不可用
# postgres json field of a single schedule cannot be altered
schedule = {
'availability': {
'mon': { 'start': '01:00:00', 'end': '13:00:00'},
'tue': { 'start': '01:00:00', 'end': '13:00:00'},
'wed': { 'start': '01:00:00', 'end': '13:00:00'},
'thu': { 'start': '01:00:00', 'end': '13:00:00'},
'fri': { 'start': '01:00:00', 'end': '13:00:00'},
'sat': { 'start': '01:00:00', 'end': '13:00:00'},
'sun': { 'start': '01:00:00', 'end': '13:00:00'},
}
}
# example booking
booking_today_start = datetime.datetime(2017, 4, 1, 1, 0, 0) # postgres date field
booking_today_end = datetime.datetime(2017, 4, 1, 10, 0, 0) # postgres date field
class User(SurrogatePK, Model):
__tablename__ = 'users'
# Relationships.
reservations = db.relationship('Reservation', backref='guest', uselist=False)
addresses = db.relationship('Properties', backref='host', uselist=False)
# other user props below
class Property(SurrogatePK, Model):
__tablename__ = 'addresses'
# relationships Property.host > User
host_id = db.Column(db.Integer, db.ForeignKey('users.id',
onupdate='CASCADE',
ondelete='CASCADE'),
index=True, nullable=False)
reservations = db.relationship('Reservation',
backref='address_property', uselist=False)
#schedule
schedule = Column(JSON, nullable=True)
avail_type = Column(db.Unicode(50), nullable=True) # hourly etc
is_avail = Column(db.Boolean(), default=True)
class Reservation(SurrogatePK, Model):
__tablename__ = 'reservations'
# relationships
# Reservation.guest > User
guest_id = db.Column(db.ForeignKey('users.id',
onupdate='CASCADE', ondelete='CASCADE'),
nullable=False)
address_id = db.Column(db.ForeignKey('addresses.id', onupdate='CASCADE',
ondelete='CASCADE'), nullable=False)
status = db.Column(db.Enum('pending', 'confirmed', 'rejected',
name='reservation_status_enum'), default='confirmed')
reserve_start = db.Column(db.DateTime)
reserve_end = db.Column(db.DateTime)
@classmethod
def _time_in_range(self, x):
if self.reserve_start <= self.reserve_end:
return self.reserve_start <= x <= self.reserve_end
else:
return self.start <= x or x <= self.reserve_end
您的解决方案很好,因为它很快就能找到“在这个特定的时间是否可用”,但它不能支持17:30-20:45这样的范围,您必须做一些额外的计算才能问“在04:15是否可用?”
相反,我建议做与Postgres数据库相同的事情:存储每周每天的开始和结束时间。使用datetime.time
对象。比较很简单,选择合适的星期几,并检查start_time<=time&&time<=end_time
。
问题内容: 我有一个将a解析为: 当我解析这个: 结果将是,当使用时: 8月29日 2011 00:44:00 当然,这应该是: 8月29日 2011 12:44:00 当我解析这个: 然后结果如预期的那样: 8月29日 2011 13:44:00 我怎样才能解决这个问题? 问题答案: 使用代替小时模式:
问题内容: 在我的应用中,我需要不时格式化。我必须使用什么方法? 例如,时间如。如何在Java中将时间转换为24小时? 问题答案: 试试这个: 产生: 参见:http : //download.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html
NowCoder 解题思路 递归 // java public ListNode ReverseList(ListNode head) { if (head == null || head.next == null) return head; ListNode next = head.next; head.next = null; ListNode
前面小节介绍了表的设计三范式和单表的查询,本小节介绍如何将通过多个表进行关联查询数据,其中连表查询包括 LEFT JOIN、INNER JOIN、RIGHT JOIN。前面小节介绍过表的设计,其中有学生信息表 student、教师信息表 teacher、课程表 course、学生选课关联表 student_course。 1.插入表测试数据 为了演示方便,分别清空学生信息表 student、教师信
1. 前言 Markdown 的原生语法不支持绘制图形,但通过扩展模块,我们可以将一些格式化的文字渲染成我们需要的图形。常用的图形有 “流程图”、“时序图”、“类图”、“状态图”、“甘特图”、"饼图" 等。 本节将重点介绍如何通过 Mermaid 绘制「状态图」。 状态图 (Statechart) 是描述一个实体基于事件反应的动态行为,是使对象达到某种状态的事件、条件或操作的图形化描述。 一个完整
问题内容: 我有一个整数列表,我想生成一个包含所有连续整数列表的列表。 我有以下可行的方法,但似乎做起来很糟糕: 我已经看到其他问题,表明itertools.groupby是执行此操作的有效方法,但是我对该函数不熟悉,而且似乎在编写lambda函数来描述连续性方面遇到麻烦。 问题:是否有更好的方法(可能使用itertools.groupby?) 注意事项:full_list将具有1到59之间的整数